2008-10-06 25 views
17

Me gustaría obtener comentarios de personas que han usado o evaluado Coverity para analizar estáticamente el código Java. 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?Coverity para análisis estático de Java

Respuesta

4

Introduciré 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.

15

Si no está utilizando 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 de Java de Coverity son todavía débiles en comparación con sus comprobadores de 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.

+0

¿Tiene alguna comparación de varias de estas herramientas para Java? –

+0

es suficiente para utilizar findbugs, incluso el uso de la cubierta que. verifique las características clave (subtítulo FindBugs) http://www.coverity.com/library/pdf/coverity-ds-java.pdf – ozhan

3

Añadiré un número limitado de 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 los dos 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.

0

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

Coverity anunció recientemente un producto alojado de análisis estático como servicio denominado Code Spotter(), 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 estar disponibles próximamente.

Cuestiones relacionadas