java static-analysis coverity-prevent

Coverity para análisis estático de Java



static-analysis coverity-prevent (4)

Voy a participar con una respuesta algo relevante. He usado Klocwork para el código Java y el código C. Klocwork es un competidor cercano de Coverity ... en cuanto a los costos, son más o menos lo mismo (mire con cuidado, Klocwork parece más barato hasta que realmente compre lo que necesita), y en lo que respecta a las características, ellos luchan de un lado a otro.

Para C / C ++, es genial. Para Java ... bueno, ayudó a encontrar una gran cantidad de pérdidas de recursos (# $ @ ^ # ing los desarrolladores de Java parecen olvidar que los recursos como los manejadores de archivos no son basura), pero no parece encontrar muchos ". "errores" críticos Probablemente se deba a que el lenguaje mismo ayuda a proteger contra algunos de los errores más básicos pero difíciles de encontrar (desbordamientos de matriz, corrupción de punteros, etc.).

Obtenga Coverity para ejecutar una demostración, están más que felices de hacerlo. Ver qué tipo de cosas encuentran.

Me gustaría recibir comentarios de personas que han usado o evaluado Coverity para analizar estáticamente Java-code. Sé que es popular en el mundo de C / C ++, pero ¿vale la pena gastar el dinero para el análisis de Java o estoy mejor con PMD, Findbugs y otras herramientas de código abierto?


Si no está usando nada hoy, comenzaría con Findbugs y PMD. Son fáciles de instalar y usar. Concéntrese en revisar y corregir errores de corrección con Findbugs primero: recomiendan comenzar con errores de corrección de gravedad Alta y Media ya que las comprobaciones tienen muy pocos falsos positivos y obtendrá un buen rendimiento de su tiempo. Haga que los desarrolladores usen PMD para limpiar el código y el complemento Findbugs en Eclipse para revisar el nuevo código. Trabajar progresivamente hará que los desarrolladores comprendan y acepten la utilidad de estas herramientas.

Las comprobaciones Java de Coverity son todavía débiles en comparación con sus comprobadores C / C ++. Usamos Findbugs, PMD, Coverity y Klocwork porque todos tienen diferentes puntos fuertes y somos paranoicos. Si no está paranoico, puede seguir con las herramientas de código abierto y obtener un gran valor. O si necesita verificación de seguridad: entonces Klocwork o especialmente Fortify debe hacer un trabajo más completo para usted.


Agregaré un yo limitado a las respuestas anteriores, algo restringido por el NDA de Coverity al que estoy obligado. Coverity Prevent tiene un historial público impresionante para encontrar errores en el código C / C ++ de código abierto, pero su producto Java es mucho más nuevo. (Coverity tiene un comunicado de prensa sobre mi antiguo empleador, por lo que puedo decir que ayudó a encontrar y corregir muchos errores en nuestro código C / C ++, más de lo que había encontrado en toda mi carrera anterior en la búsqueda de errores). FindBugs sí un trabajo impresionante en código Java, y no se puede superar el precio. Pero el gran punto ya se ha hecho: pruebe ambos en su código real antes de comprar. No hay sustituto para la realidad, y la sabiduría convencional en el análisis estático es que sorprendentemente hay poca superposición en lo que las herramientas descubren.


Como han dicho otros, la mejor forma de decidir es probar todas estas herramientas.

Coverity anunció recientemente un producto hospedado de análisis estático como servicio denominado Code Spotter ( https://code-spotter.com/ ), actualmente en versión beta. Está utilizando el mismo motor de análisis que el producto empresarial Coverity, pero está envuelto en una interfaz de usuario diferente (simplificada). Como se trata de un servicio alojado, es muy fácil jugar con él para tener una idea de las capacidades de análisis de Coverity.

En el momento de escribir esto, Code Spotter es solo para Java, pero otros lenguajes compatibles con Coverity deberían llegar pronto.