¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Guia completa para escrever regras personalizadas no PMD para Java e XPath

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 14 Vistas
0
Cargando...
h5. Introdução O conjunto de ferramentas de qualidade de código Java contém uma grande quantidade de software excelente e de código aberto. PMD é uma ferramenta que verifica seu código-fonte Java em relação a um conjunto de regras e relata qualquer discrepância que encontrar. Esta postagem no blog contém uma introdução ao PMD e exemplos de como escrever suas próprias regras em Java e XPath. h5. O que é o PMD? [PMD | http://pmd.sourceforge.net ] é uma ferramenta de análise estática. Isso significa que o PMD funciona inspecionando o código-fonte, enquanto, por exemplo, o JUnit funciona executando realmente seu código. O PMD converte cada arquivo-fonte Java em uma chamada Árvore de Sintaxe Abstrata (AST), que é uma representação em árvore do código-fonte. Esta árvore é então examinada por regras do PMD, que procuram padrões indesejados no código. Uma regra poderia, por exemplo, procurar loops while cujos corpos de loop não estão entre chaves. Outra regra poderia procurar coleções que estão sendo iteradas sem o uso do idiom for (Iterator i = collection.iterator(); i.hasNext(); ). O PMD vem com uma série de regras úteis agrupadas em conjuntos de regras. Para obter mais informações sobre os conjuntos de regras integrados, consulte a página inicial do PMD. h5. Uso da ferramenta Rule Designer Para escrever regras do PMD, é necessário entender como navegar pela Árvore de Sintaxe Abstrata. O Rule Designer é uma ferramenta útil que permite transformar uma classe Java arbitrária em um AST. Execute o Rule Designer executando bin\designer.bat dentro do diretório do PMD, digite ou cole o código Java que deseja analisar e clique em "Go". Aqui está um exemplo: 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:
Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

Sin respuestas

No hay respuestas para mostrar No hay respuestas para mostrar Se el primero en responder

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?