Avalados por :
h5. Escribir una regla PMD Las reglas de PMD recorren el AST utilizando el patrón de diseño visitor (
http://en.wikipedia.org/wiki/Visitor_pattern
). Cada nodo en el AST acepta objetos visitantes. Cuando se pasa un visitante a un nodo, el nodo llama al método visit en el visitante, pasándole una referencia a sí mismo. La clase del nodo determina cuál de los varios métodos visit sobrecargados se llamará en el objeto visitante. En la práctica, las nuevas reglas de PMD extienden la clase net.sourceforge.pmd.AbstractRule. AbstractRule contiene varios métodos visit sobrecargados, heredados de net.sourceforge.pmd.ast.JavaParserVisitorAdapter. Al escribir una nueva regla, solo necesita anular los métodos que manejan los nodos relevantes para la regla. Escribamos una nueva regla. El propósito de nuestra regla es asegurar que los nombres de las constantes de clase (es decir, los campos que son estáticos y finales) consistan solo en letras mayúsculas y el carácter de guion bajo. Al observar más de cerca el ejemplo de Rule Designer anterior, aprendemos que necesitamos visitar todos los nodos FieldDeclarator en el AST. Esto significa que debemos anular el método visit(ASTFieldDeclaration node, Object data) en nuestra clase de regla. El código fuente completo de la regla sigue a continuación. DESCARGO DE RESPONSABILIDAD: Tenga en cuenta que el siguiente código fuente se proporciona únicamente con fines educativos. No está destinado para uso en producción. 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()) { // El campo es estático y final String name = node.getVariableName(); if (!name.matches(CONSTANT_NAME_PATTERN)) { // Agregar una violación de regla al informe addViolation(data, node); } } return super.visit(node, data); } } El código es bastante sencillo. La declaración de retorno, sin embargo, puede no tener sentido inmediato. Al llamar al método visit anulado en la superclase, nos aseguramos de que también se visiten los hijos del nodo actual. h5. Creación de un documento XML de conjunto de reglas h5. Ejecutando PMD Ahora estamos listos para ejecutar PMD. Suponiendo que la clase de regla está en su ruta de clase, ejecute el script pmd.bat de la siguiente manera:
El primer parámetro es el nombre de un archivo fuente o un directorio de archivos fuente. El segundo parámetro es el formato de informe. El tercer parámetro es el nombre del documento XML de conjunto de reglas. En este ejemplo, estoy ejecutando la regla recién creada contra su propio código fuente. La clase UpperCaseConstantsRule contiene una constante de clase, pero el nombre no viola la regla. Cambiemos eso: private static final String constantNamePattern = "[A-Z]+(?:_[A-Z]+)*"; Al ejecutar PMD nuevamente, ahora obtenemos un informe de error que indica un problema en la línea 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