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.
Réponses
Trop de publicités?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
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.
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.
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.