Avalados por :
h5. Escrevendo uma regra PMD As regras do PMD percorrem o AST usando o padrão de design visitor (
http://en.wikipedia.org/wiki/Visitor_pattern
). Cada nó no AST aceita objetos visitantes. Quando um visitante é passado para um nó, o nó chama o método visit no visitante, passando uma referência a si mesmo. A classe do nó determina qual dos vários métodos visit sobrecarregados será chamado no objeto visitante. Na prática, as novas regras do PMD estendem a classe net.sourceforge.pmd.AbstractRule. AbstractRule contém vários métodos visit sobrecarregados, herdados de net.sourceforge.pmd.ast.JavaParserVisitorAdapter. Ao escrever uma nova regra, você só precisa anular os métodos que lidam com os nós relevantes para a regra. Vamos escrever uma nova regra. O objetivo de nossa regra é garantir que os nomes das constantes de classe (ou seja, os campos que são estáticos e finais) consistam apenas em letras maiúsculas e o caractere de sublinhado. Ao observar mais de perto o exemplo do Rule Designer anterior, aprendemos que precisamos visitar todos os nós FieldDeclarator no AST. Isso significa que devemos anular o método visit(ASTFieldDeclaration node, Object data) em nossa classe de regra. O código-fonte completo da regra segue abaixo. ISENÇÃO DE RESPONSABILIDADE: Observe que o código-fonte a seguir é fornecido apenas para fins educacionais. Não é destinado a uso em produção. UpperCaseConstantsRule.java package dk.applicon.java.pmd.rules; import net.sourceforge.pmd.AbstractRule; import net.sourceforge.pmd.ast.ASTFieldDeclaration; public class UpperCaseConstantsRule extends AbstractRule { private static final String CONSTANT_NAME_PATTERN = "[A-Z]+(?:_[A-Z]+)*"; public Object visit(ASTFieldDeclaration node, Object data) { if (node.isFinal() && node.isStatic()) { // O campo é estático e final String name = node.getVariableName(); if (!name.matches(CONSTANT_NAME_PATTERN)) { // Adicionar uma violação de regra ao relatório addViolation(data, node); } } return super.visit(node, data); } } O código é bastante simples. A declaração de retorno, no entanto, pode não fazer sentido imediatamente. Ao chamar o método visit anulado na superclasse, garantimos que também os filhos do nó atual sejam visitados. h5. Criando um documento XML de conjunto de regras h5. Executando o PMD Agora estamos prontos para executar o PMD. Supondo que a classe de regra está em seu caminho de classe, execute o script pmd.bat da seguinte maneira:
O primeiro parâmetro é o nome de um arquivo-fonte ou um diretório de arquivos-fonte. O segundo parâmetro é o formato do relatório. O terceiro parâmetro é o nome do documento XML de conjunto de regras. Neste exemplo, estou executando a regra recém-criada contra seu próprio código-fonte. A classe UpperCaseConstantsRule contém uma constante de classe, mas o nome não viola a regra. Vamos mudar isso: private static final String constantNamePattern = "[A-Z]+(?:_[A-Z]+)*"; Ao executar o PMD novamente, agora obtemos um relatório de erro que indica um problema na linha 8 de UpperCaseConstantsRule.java:
No hay respuestas para mostrar
Se el primero en responder
contacto@primeconsultor.com
+1 (305) 285-8622
© 2025 Todos los derechos reservados.
Desarrollado por Prime Consultor