
Parfois, les gens posent la question, qui porte sur un certain sujet mais concerne en fait autre chose. Comme dit le proverbe, une question posée avec compétence contient la moitié de la réponse.
Récemment, je suis revenu de la conférence
JPoint , où nous avons présenté pour la première fois notre nouvel analyseur PVS-Studio pour Java. L'intérêt pour l'analyse statique a fortement augmenté ces dernières années, de sorte que le public a perçu PVS-Studio avec enthousiasme. En plus de la rétroaction positive, en l'occurrence, nous avons dû gérer les objections. L'objection la plus fréquente à la suggestion d'essayer PVS-Studio ressemble à ceci: "Allez, pourquoi essayons-nous PVS-Studio? Nous utilisons IntelliJ IDEA, ReSharper, SonarLint et SonarQube. Nous avons récemment exécuté PVS-Studio et il a trouvé des erreurs, déjà mises en évidence par IntelliJ IDEA! »
Je ne peux pas m'empêcher d'écrire une petite note de réponse à ce commentaire. J'ai même deux réponses à cette objection. Et oui, j'ai intentionnellement déclaré ReSharper, car il y a aussi des questions à notre analyseur C #. Eh bien, voici la réponse.
Premièrement, nous NE faisons PAS PVS-Studio en copiant les diagnostics des concurrents. La copie aveugle sans comprendre le point ne mène nulle part. La valeur de l'analyse de code statique, la valeur de ses diagnostics n'est pas où émettre un avertissement. C'est où NE PAS émettre d'avertissement. Nous avons 10, 20 et encore plus d'exceptions pour chaque diagnostic lorsqu'il ne doit pas se déclencher. Copier les diagnostics d'autres produits simplement par leur description dans la documentation revient à construire un bâtiment similaire par une photo. La photo du Colisée sera-t-elle utile si "les dieux font" que vous construisez la même?
Nous ne copions donc jamais. "Mais vous avez des diagnostics similaires!" - diriez-vous. Bien sûr, nous le faisons. Les concepts de nombreuses erreurs se trouvent à la surface. C'est absolument évident. Mais fréquemment, les diagnostics avec les mêmes descriptions se comportent même différemment.
En d'autres termes, si vous utilisez l'un de ces produits dans l'en-tête, vous trouverez très probablement un tas de NOUVELLES erreurs lors de l'exécution de PVS-Studio qui n'ont pas été détectées par d'autres produits. Les commentaires de nos clients et notre propre expérience de vérification de projets open source le confirment.
Deuxièmement, même si vous utilisez IntelliJ IDEA, ReSharper et SonarLint / SonarQube et qu'ils trouvent les mêmes erreurs que PVS-Studio dans votre code, j'ai de mauvaises nouvelles pour vous. Vous utilisez des outils qui trouvent des erreurs, OK. Pourquoi PVS-Studio trouve-t-il des erreurs dans votre code qui semblent être trouvées par d'autres outils? Pourquoi l'utilisation d'outils, qui "détectera tout de la même manière que PVS-Studio" n'aide toujours pas à corriger les erreurs? Peut-être que ces outils LAISSENT rester sans réparer?
IntelliJ IDEA, ReSharper, SonarLint et SonarQube sont d'excellents outils sans exception. Des équipes très hautement qualifiées les fabriquent. Si vous les utilisez - vous faites la bonne chose. Plus le niveau de la culture d'ingénierie est élevé, mieux c'est pour les affaires.
Cependant, si tous ces outils trouvent "les mêmes erreurs que PVS-Studio", mais que des erreurs sont toujours présentes dans le code, vous faites quelque chose de mal. Introduisez une pratique telle que l'utilisation régulière de PVS-Studio en équipe. De cette façon, les erreurs seront à la fois trouvées et corrigées. L'introduction de PVS-Studio fera en sorte que les développeurs corrigent les bogues. Mais pas seulement les trouver.