68 votes

Choisir un outil d'analyse de code statique

Je travaille sur un projet où je code en C dans un environnement UNIX. J'utilise l'outil Lint pour vérifier mon code source. La charpie existe depuis longtemps (depuis 1979), quelqu'un peut-il suggérer un outil d'analyse de code plus récent que je pourrais utiliser? De préférence, un outil gratuit.

35voto

svec Points 2050

Ne négligez pas le compilateur lui-même.

Lire le compilateur de la documentation et de trouver tous les avertissements et les erreurs qu'il peut fournir, et puis de permettre autant que faire sens pour vous.

Aussi assurez-vous de dire à votre compilateur de traiter les avertissements comme des erreurs de sorte que vous êtes obligé de les corriger immédiatement. ("-Werror" sur gcc)

Aussi: "Mur" sur gcc ne pas permettre à tous les avertissements, ne soyez pas dupe.

Aussi: découvrez valgrind (gratuit!) c'est le "détecter automatiquement[s] de nombreux de gestion de la mémoire et le filetage de bugs, et le profil de[s] de vos programmes dans le détail."

Valgrind n'est pas une vérification statique, mais c'est un excellent outil! http://valgrind.org

16voto

Mark Harrison Points 77152

Pour le code en C, vous devriez certainement utiliser Flexelint. Je l'ai utilisé pendant près de 15 ans, et ne jurent que par elle. L'un des très bons fonctions qu'il a, c'est que les avertissements peuvent être activer ou désactiver via les commentaires dans le code ("/* non-e123*/"). Ceci s'est avéré être un puissant outil de documentation quand vous vouliez quelque chose hors de l'ordinaire. "Je suis la désactivation de l'avertissement de X, donc, il y a de bonnes raison pour laquelle je suis en train de faire X".

Pour quiconque en intéressant C/C++ questions, de regarder certains de leurs exemples sur leur site et de voir si vous pouvez trouver les bugs, sans chercher à les conseils.

13voto

Matthew Schinckel Points 15596

J'ai entendu de bonnes choses sur l'analyseur statique clang , pour lequel l'IIRC utilise LLVM comme back-end. Si cela est implémenté sur votre plate-forme, cela pourrait être un bon choix.

D'après ce que j'ai compris, cela fait un peu plus que de simples analyses syntaxiques. "Recherche automatique de bogues", par exemple.

6voto

David Bryson Points 48

J'ai récemment compilé une liste de tous les les outils d'analyse statique, j'ai eu à ma disposition, je suis encore dans le processus d'évaluation de tous. Remarque, ce sont principalement l'analyse de la sécurité des outils.

5voto

Kristof Provost Points 12359

Nous utilisons Coverity Prevent pour consulter le code source C ++.

Ce n'est pas un outil gratuit (bien que je pense qu'ils offrent une analyse gratuite des projets open source), mais c'est l'un des meilleurs outils d'analyse statique que vous trouverez. J'ai entendu dire que c'est encore plus impressionnant en C qu'en C ++, mais cela nous a permis d'éviter un nombre assez important de bogues jusqu'à présent.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X