java - kiuwan - software sonar
¿Cómo se comparan las herramientas comerciales de análisis estático de Java con las gratuitas? (5)
Le sugiero que pruebe SONAR, una herramienta de gestión de calidad de software de código abierto, dedicada a analizar y medir continuamente la calidad del código fuente. Este suave tomar el resultado de la herramienta de análisis de código, consolidar los resultados y darle acceso a una interfaz fácil de usar.
Estoy familiarizado con algunas de las herramientas gratuitas de análisis estático disponibles para Java, como FindBugs y PMD. Lo que me gustaría saber es cómo los productos comerciales como Klocwork y Coverity se comparan con estos. Cuales son sus fortalezas y debilidades?
aquí hay una lista de herramientas de análisis comerciales: http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis#Java_2
coverity tiene varias herramientas:
http://www.coverity.com/html/coverity-readiness-manager-java.html : esto debería estar a la par con findbugs y PMD pero con una mejor presentación
previene: http://www.coverity.com/html/prevent-for-java.html : low FALSAS POSITIVAS.
analizador de hilos: http://www.coverity.com/html/coverity-thread-analyzer-java.html : esto es lo que falta en la mayoría de las herramientas de código abierto.
No he tenido experiencia directa con Findbugs o PMD, pero he conocido a mucha gente que los ha comparado con Klocwork y Coverity.
Mi opinión general sobre los comentarios ha sido:
Findbugs y PMD son más "herramientas-ish". El tipo de cosa que ejecutarías en tu escritorio. Encuentra una amplia gama de problemas potenciales, pero tiende a ser ruidoso, lo que significa falsos positivos y variedades "No me importa". Encuentra algunas cosas buenas. He escuchado comentarios contradictorios sobre su uso a largo plazo. Algunos sienten que el ROI en una herramienta gratuita es infinito, sin embargo, existe un costo real para los falsos positivos.
No es sorprendente que Klocwork y Coverity, que cuestan dinero, tiendan a estar más orientadas a la solución, que también se pueda escalar mejor para trabajar con equipos, que tenga una interfaz de usuario más eficiente y fácil de usar y que sea menos ruidosa. Parece que su análisis está haciendo una inspección más profunda y, por lo tanto, presentando mejores resultados si hiciste una comparación lado a lado. Al adoptar una herramienta en un equipo, tendrá varios niveles de entusiasmo para usar una herramienta y el factor de ruido es un gran problema que impide la adopción generalizada. Por supuesto, hay cosas como tener apoyo para respaldarlo, etc.
En general, como Findbugs y PMD son gratuitos, lo ve como una primera opción. Muchas empresas ven valor y eligen Coverity o Klocwork para una solución a más largo plazo, aunque también veo ejecutar Findbugs y PMD. Tienden a encontrar cosas diferentes, por lo que si su objetivo es encontrar y corregir tanto como sea posible, es bueno tener una combinación de ambos.
Divulgación: trabajo para Code Integrity Solutions (codeintegritysolutions.com) que es socio de Coverity.
Usamos un conjunto de herramientas de análisis estático de código abierto y comerciales. Las diferentes herramientas encuentran diferentes tipos de errores y algunos están ajustados para menores tasas de falsos positivos, a expensas de la posibilidad de perder algunos problemas reales.
En mi experiencia, Findbugs hace un buen trabajo al encontrar problemas reales, especialmente si te enfocas en los errores de Corrección como sugiere su equipo. Recientemente, los desarrolladores de Findbugs también han agregado algunas comprobaciones básicas de vulnerabilidad de seguridad. Coverity tiene una baja tasa de falsos positivos, especialmente si no activa sus comprobadores experimentales, y Coverity Prevent incluye una buena base de datos de seguimiento para el análisis de tendencias / conglomerados. Todavía no estoy convencido de que sus comprobadores de subprocesos (estáticos o dinámicos) funcionen, al menos no han encontrado nada interesante para nosotros. Klocwork Developer para Java devuelve falsos positivos más altos, pero encontramos que tienen la comprobación de seguridad más sólida de estas herramientas. Por lo tanto, depende de si su prioridad es la comprobación de calidad (Findbugs, Coverity) o el análisis de vulnerabilidad de seguridad (Klocwork o Fortify). Algunos de nuestros desarrolladores también usan PMD para soportar revisiones de código fuente, ya que ayuda con la limpieza general del código.
Un proyecto reciente realizado con NIST llamado "SATE: Static Analysis Tool Exposition" revisó una amplia variedad de diferentes herramientas y sus enfoques subyacentes. https://samate.nist.gov/index.php/SATE.html y otras referencias a este proyecto, como en OWASP. El hallazgo general es que las diferentes herramientas tienen diferentes fortalezas y debilidades, así que use más de una si desea hacer un trabajo completo.
La única característica que seguramente encontrará en una herramienta de análisis estático comercial (y que no encontrará fácilmente en una herramienta de análisis de software gratuito, al menos en 2008, en el momento de la OP) es
Informes: mide las tendencias de calidad del software a lo largo del tiempo
Como se explica en esta pregunta acerca de las métricas de código , cualquier análisis de código estático en sí mismo no siempre es significativo, porque podría tener:
- demasiados "defectos" para corregir
- demasiadas categorías de defectos reportados
Necesita la capacidad de realizar un triage, y debe verificar si un defecto en particular ocurre cada vez menos o no, a fin de ayudarlo a priorizar qué solucionar.
Esto es especialmente cierto en el proyecto heredado con miles de clases: no se soluciona el defecto en muchos archivos simplemente así, sin tener una buena razón. Esa razón se puede deducir de un buen informe y análisis de tendencias que no encontrará con las herramientas de software gratuito.
Actualización: desde 2012 (4 años después), Sonar (ahora en 2018 llamado " SonarQube ") "Información histórica" (también conocido como "Time Machine") en sus series 4.x y 5.x.
Tenga en cuenta que los paneles del proyecto se eliminaron en SonarQube 6.1 (septiembre de 2016): vea este hilo .
Esos paneles necesitarían ser recreados manualmente a través de una página personalizada .
SonarQube 6.5 restaura un poco de esos paneles con la página de Actividad, que obtiene (varios gráficos predefinidos y uno personalizable) para mostrar la evolución de un proyecto.