Pregunta

¿Qué herramientas de análisis estático para Java tienen el mecanismo de extensión más fácil? Revisé PMD Pero el proceso de escribir reglas personalizadas parece estar muy involucrado. Específicamente, quiero saber si hay alguna herramienta que ofrezca AspectJ como la sintaxis para seleccionar áreas de código interesantes. Soy consciente de de AspectJ declarar advertencia pero parece estar limitado en lo que puede hacer.

He encontrado una pregunta relacionada:

¿Recomendación de herramienta de análisis estático para Java? ¿Recomendación de herramienta de análisis estático para Java?

Las respuestas enumeran muchas herramientas. Pero quiero encontrar cuál ofrece la opción más fácil para escribir reglas personalizadas.

Editar: Hasta ahora, las expresiones XPath de PMD sugeridas por Guillaume parecen estar más cerca de lo que estoy buscando. Lo exploraré en breve.

¿Fue útil?

Solución

El verdadero problema con " extender " una herramienta de análisis estático es " análisis estático " es un tema tan amplio que necesita mucha maquinaria para hacerlo en general: análisis, construcción de árboles, extracción de diagramas de control de flujo, extracción de flujo de datos, análisis de puntos, análisis interprocedial, análisis de rango, la lista sigue y sigue, vea toneladas de literatura compiladora sobre análisis de programas.

Puede utilizar la coincidencia de patrones de sintaxis de superficie para centrar la atención de la herramienta en algún código de programa, pero aún tendrá para explicarle a la herramienta qué quiere que analice estáticamente " en ese punto (y algunos análisis [como puntos a] requieren que haga el análisis en todas partes primero, y luego elige la parte que quieras).

Moral : no espere que una herramienta para realizar análisis arbitrarios sea fácil. Básicamente, debe decidir de antemano qué tipos de análisis le interesan. (entradas contaminadas? comprobaciones de rango de subíndice? abuso de API?) y encuentre una herramienta que ya es compatible con ese tipo de cosas. Al menos entonces sus " extensiones " tener una posibilidad de ser simple en virtud de ser similar a lo que la herramienta ya hace.

Nuestro kit de herramientas de reingeniería de software DMS es un intento de amortizar el costo de construir todo tipo de maquinaria de análisis en muchas aplicaciones e idiomas. Proporciona el análisis de análisis, control / flujo de datos y análisis de puntos a en diversos grados para C, C ++, Java y COBOL. Y tiene sintaxis de superficie coincidencia de patrones para ayudarlo a "señalar". Consulte http://www.semanticdesigns.com/Products/DMS/DMSToolkit.html

Otros consejos

En realidad, es bastante fácil escribir reglas personalizadas para PMD. PMD proporciona una sintaxis similar a xPath para encontrar un área interesante de su código, por lo que si tiene una experiencia mínima con XML, podrá comenzar en poco tiempo. Le sugiero que invierta 1-2 horas en PMD o Findbugs y vuelva aquí si tiene preguntas específicas.

Podríamos darle una mejor respuesta si nos dice exactamente qué tipo de reglas está tratando de escribir ...

Escribir un Findbugs el detector personalizado es bastante simple .

Simplemente colóquelo en el directorio de complementos de su instalación FindBugs, como explique aquí .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top