Le choix d'un outil d'analyse de code statique

voix
54

Je travaille sur un projet où je codage en C dans un environnement UNIX. Je me sers de l'outil de peluches pour vérifier mon code source. Lint a été autour depuis longtemps (depuis 1979), peut-on proposer un outil d'analyse de code plus récente que je pourrais utiliser? De préférence, un outil qui est libre.

Créé 05/08/2008 à 22:19
source utilisateur
Dans d'autres langues...                            


15 réponses

voix
30

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

Lisez la documentation et trouver tous les avertissements et les erreurs du compilateur qu'il peut fournir, et permettre au plus grand nombre du sens pour vous.

Assurez-vous également de dire à votre compilateur pour traiter des avertissements comme des erreurs de sorte que vous êtes obligé de les corriger tout de suite. ( "-Werror" sur gcc)

En outre: « -Wall » sur gcc ne pas activer tous les avertissements, ne vous laissez pas berner.

En outre également: consultez valgrind - il « détecter automatiquement [s] de nombreux bugs de gestion de la mémoire et le filetage et le profil [s] vos programmes en détail. » (Gratuit!)

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

Créé 05/08/2008 à 23:17
source utilisateur

voix
14

Pour le code C, vous devez certainement certainement utiliser Flexelint . Je l' ai utilisé pendant près de 15 ans et jurent que par elle. L' une des caractéristiques dont il dispose est vraiment super que les avertissements peuvent être activés sélectivement et via les commentaires dans le code ( « / * peluches -e123 * / »). Cela se est avéré être un outil puissant de documentation lorsque vous vouliez quelque chose hors de l'ordinaire. « Je me tourne au large avertissement X, donc il y a une bonne raison pour laquelle je fais X. »

Pour tout le monde en intéressant C / C ++ des questions, examiner certains de leurs exemples sur leur site et voir si vous pouvez trouver les bugs sans regarder les notes.

Créé 05/08/2008 à 22:42
source utilisateur

voix
12

Je l' ai entendu de bonnes choses au sujet de l' analyseur statique clang , qui IIRC utilise LLVM comme il est backend. Si c'est implémenté sur votre plate - forme, qui pourrait être un bon choix.

D'après ce que je comprends, il fait un peu plus que l'analyse juste syntaxe. « Recherche automatique Bug », par exemple.

Créé 06/08/2008 à 01:40
source utilisateur

voix
5

J'ai récemment compilé une liste de tous les outils d'analyse statique que j'avais à ma disposition, je suis encore en train de les évaluer tous. Remarque, ce sont surtout des outils d'analyse de sécurité.

Créé 03/09/2008 à 23:11
source utilisateur

voix
5

Nous avons utilisé Coverity Prevent pour vérifier le code source C.

Ce n'est pas un outil gratuit (même si je crois qu'ils offrent la numérisation gratuite pour les projets open source), mais il est l'un des meilleurs outils d'analyse statique que vous trouverez. Je l'ai entendu est encore plus impressionnant sur C que sur C ++, mais il nous a aidé à éviter un certain nombre de bugs jusqu'à présent.

Créé 15/08/2008 à 18:47
source utilisateur

voix
4

Vous pouvez utiliser cppcheck . Il est un outil facile à utiliser l' outil d'analyse de code statique.
Par exemple:
cppcheck --enable=all .
vérifiera tous les fichiers C / C ++ dans le dossier en cours.

Créé 25/06/2015 à 15:54
source utilisateur

voix
1

Vous pouvez CppDepend , un analyseur statique assez complet disponible sur Windows et Linux, throught VS Plugin, ligne IDE ou commande, et il est gratuit pour les contributeurs open source

Créé 26/06/2015 à 12:01
source utilisateur

voix
1

PC-lint / Flexelint sont très puissants et des outils d'analyse statique utiles et hautement configurable, mais malheureusement pas libre.

Lors de la première utilisation d'un outil comme celui-ci, ils peuvent produire un très grand nombre d'avertissements, ce qui peut rendre difficile de faire la différence entre les grands et petits. Par conséquent, il est préférable de commencer à utiliser l'outil sur votre code le plus tôt dans le projet possible, puis de l'exécuter sur votre code aussi souvent que possible, afin que vous puissiez faire face à de nouveaux avertissements comme ils se présentent.

Avec l'utilisation continue comme ça, on apprend vite comment écrire votre code d'une manière qui confirme les règles appliquées par l'outil.

À cause de cela, je préfère des outils comme Lint qui fonctionnent assez rapidement, et ainsi encourager l'utilisation continue, plutôt que des outils les plus encombrants que vous pouvez finir par utiliser moins souvent, le cas échéant.

Créé 20/12/2008 à 00:29
source utilisateur

voix
1

outils comme Lint souffrent généralement d'un problème « fausse alarme »: ils rapportent beaucoup plus de problèmes que existent réellement. Si la proportion d'avertissements véritablement utiles, est trop faible, l'utilisateur apprend à ignorer l'outil. Autres outils modernes déploient des efforts pour se concentrer sur les avertissements les plus probables / intéressants.

Créé 23/08/2008 à 15:29
source utilisateur

voix
1

Vous trouverez peut - être l' outil Uno utile. Il est l' un des rares options non-libres jouets. Elle se distingue des peluches, Flexelint, etc. , en se concentrant sur un petit nombre d'erreurs « sémantiques » (derefs de pointeur NULL, indices hors limites tableau, et l' utilisation de variables non initialisées). Il permet également des contrôles définis par l' utilisateur, comme la discipline de verrouillage déverrouillage.

Je travaille vers une version publique d'un outil successeur, Orion ( CONTENU DISPONIBLE PLUS )

Créé 15/08/2008 à 23:39
source utilisateur

voix
0

Sparse est un outil logiciel informatique, déjà disponible sur Linux, conçu pour trouver des défauts possibles de codage dans le noyau Linux.

Il y a deux projets actifs de Centre de vérification Linux visant à améliorer la qualité des modules chargeables du noyau.

  1. Linux Vérification de pilote (de LDV) - un ensemble complet d'outils pour la vérification du code source statique de pilotes de périphériques Linux.
  2. Cadre KEDR - un cadre extensible pour une analyse dynamique et la vérification des modules du noyau.
  3. Un autre projet en cours est le système de fichiers Linux de vérification qui vise à développer un ensemble d'outils dédiés pour la vérification des implémentations de système de fichiers Linux.
Créé 20/12/2012 à 08:36
source utilisateur

voix
0

Je l'ai trouvé qu'il est généralement préférable d'utiliser plusieurs outils d'analyse statique pour trouver des bogues. Chaque outil est conçu différemment, et ils peuvent trouver des choses très différentes les unes des autres.

Il y a quelques bonnes discussions dans certaines des discussions ici . Il est d'une conférence organisée par le Département américain de la Sécurité intérieure sur l' analyse statique.

Créé 15/06/2011 à 07:53
source utilisateur

voix
0

g'day,

Je suis totalement d'accord avec les suggestions à lire et à digérer ce que le compilateur vous dit après avoir réglé -Wall.

Un bon outil d'analyse statique pour la sécurité est Flawfinder écrit par David Wheeler. Il fait un bon travail à la recherche de divers exploits de sécurité,

Toutefois, il ne se substitue pas à avoir une personne knowledgable lu dans votre code. Comme David dit sur sa page web, « Un imbécile avec un outil est toujours un imbécile! »

à votre santé,

Rob

Créé 26/08/2008 à 16:21
source utilisateur

voix
0

peluches est constamment mis à jour ... alors pourquoi vous voulez une version plus récente.

BTW flexelint est lint

Créé 23/08/2008 à 12:42
source utilisateur

voix
0

Il y a une option « -Weffc ++ » pour gcc qui, selon la page de manuel Mac OS X:

Mettre en garde contre les violations des directives de style suivantes du livre de Scott Effective C Meyers:

[couper]

Je sais que vous avez parlé C, mais c'est le plus proche que je connais ..

Créé 15/08/2008 à 23:03
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more