2008-10-06 8 views
17

Je souhaite recevoir des commentaires de personnes ayant utilisé ou évalué Coverity pour l'analyse statique du code Java. Je sais que c'est populaire dans le monde C/C++, mais cela vaut-il la peine de dépenser de l'argent pour l'analyse Java ou suis-je mieux avec PMD, Findbugs et d'autres outils Open Source?Couverture pour l'analyse statique Java

Répondre

4

Je vais intervenir avec une réponse quelque peu pertinente. J'ai utilisé Klocwork pour le code Java et C. Klocwork est un concurrent proche de Coverity ... au point de vue des coûts, ils sont à peu près les mêmes (regardez attentivement, Klocwork semble moins cher jusqu'à ce que vous achetiez ce dont vous avez besoin), et en fonction des caractéristiques, ils se battent.

Pour le C/C++, c'est génial. Pour Java ... bien, cela a aidé à trouver beaucoup de fuites de ressources (# $ @^# les développeurs Java semblent oublier que les ressources comme les gestionnaires de fichiers ne sont pas collectées), mais il ne semble pas en trouver beaucoup " "bogues critiques". C'est probablement parce que le langage lui-même aide à protéger contre certaines des erreurs les plus basiques mais difficiles à trouver (dépassements de tableaux, corruption de pointeurs, etc.).

Obtenez Coverity pour lancer une démo, ils sont plus qu'heureux de. Voyez quel genre de choses ils trouvent.

15

Si vous n'utilisez rien aujourd'hui, je commencerais par Findbugs et PMD. Ils sont faciles à installer et à utiliser. Concentrez-vous sur l'examen et la correction des erreurs d'exactitude avec les Findbugs d'abord - ils recommandent de commencer avec des erreurs d'exactitude de sévérité élevée et moyenne car les vérificateurs ont des faux positifs très faibles et vous obtiendrez un bon retour sur votre temps. Demandez aux développeurs d'utiliser PMD pour nettoyer le code, et le plugin Findbugs dans Eclipse pour revoir le nouveau code. Travailler progressivement permettra aux développeurs de comprendre et d'adhérer à l'utilité de ces outils.

Les vérificateurs Java de Coverity sont toujours faibles comparés à leurs vérificateurs C/C++. Nous utilisons Findbugs, PMD, Coverity et Klocwork car ils ont tous des forces différentes et nous sommes paranoïaques. Si vous n'êtes pas paranoïaque, vous pouvez vous en tenir aux outils open source et obtenir beaucoup de valeur. Ou si vous avez besoin de vérifier la sécurité: alors Klocwork ou spécialement Fortify devrait faire un travail plus approfondi pour vous.

+0

avez-vous une comparaison de divers ces outils pour Java? –

+0

son assez pour utiliser findbugs, même l'utilisation de la couverture que. vérifiez les caractéristiques principales (sous-titre FindBugs) http://www.coverity.com/library/pdf/coverity-ds-java.pdf – ozhan

3

Je vais ajouter un moi limité aussi aux réponses précédentes, quelque peu restreint par la couverture NDA, je suis lié par. Coverity Prevent a un palmarès public impressionnant pour trouver des bogues dans le code C/C++ open source, mais leur produit Java est beaucoup plus récent. (Coverity a un communiqué de presse sur mon ancien employeur, donc je peux dire qu'il a aidé à trouver et réparer beaucoup de bugs dans notre code C/C++, plus que ce que j'avais trouvé dans toute ma carrière précédente dans la recherche de bugs). un travail impressionnant sur le code Java, et vous ne pouvez pas battre le prix. Mais le gros point a déjà été fait: essayez les deux sur votre code réel avant de l'acheter. Il n'y a pas de substitut à la réalité, et la sagesse conventionnelle dans l'analyse statique est qu'il y a étonnamment peu de chevauchement dans ce que les outils découvrent.

0

Comme d'autres l'ont dit, la meilleure façon de décider est d'essayer tous ces outils. Coverity a récemment annoncé un produit d'analyse statique hébergé en tant que service appelé Code Spotter(), actuellement en version bêta. Il utilise le même moteur d'analyse que le produit d'entreprise Coverity, mais il est enveloppé dans une interface utilisateur (simplifiée) différente. Comme il s'agit d'un service hébergé, il est très facile de jouer avec pour avoir une idée des capacités d'analyse de Coverity. Au moment où j'écris ces lignes, Code Spotter est uniquement Java, mais d'autres langages pris en charge par Coverity devraient bientôt arriver.

Questions connexes