Quels outils utilisez-vous pour analyser le code statique? [fermé]

cette question sur complexité cyclomatique m'a fait réfléchir davantage sur analyse de code statique . Analyser la complexité et la cohérence du code est parfois utile, et j'aimerais commencer à le faire plus souvent. Quels outils recommandez-vous (par langue) pour une telle analyse? Wikipedia a une grande liste d'outils, mais quels ont déjà été essayés?

Edit: comme David le souligne, il ne s'agit pas d'une question complètement sans réponse lorsqu'il s'agit de c/UNIX based tools .

31
demandé sur Chris 2008-08-21 22:58:51

14 réponses

j'ai mis en place un système de construction Hudson continual integration (CI) pour mes projets iPhone Objective-C (iOS apps), et j'ai compilé une liste variée d'outils qui peuvent être utilisés pour analyser mes projets lors d'une construction:

  • clang analyseur statique : outil autonome gratuit et à jour qui saisit plus de problèmes que la version de Clang incluse avec Xcode 4. Projet actif. -- visite http://clang-analyzer.llvm.org

  • Doxygen : outil de génération de documentation libre qui génère également des diagrammes de dépendance de classe. Projet en cours -- visite http://www.stack.nl / ~dimitri / doxygen

  • HFCCA (header-free cyclomatic complexity analyzer): script Python libre pour calculer la complexité du code, mais sans fichiers d'en-tête et les pré-processeurs. Prend en charge la sortie au format XML pour les constructions Hudson/Jenkins. Projet actif. -- visite http://code.google.com/p/headerfile-free-cyclomatic-complexity-analyzer

  • CLOC (compter les lignes de code): outil gratuit pour compter les fichiers, les lignes de code, les commentaires et les lignes vierges. Supporte le diffing, de sorte que vous pouvez voir les différences entre les constructions. Projet actif. -- visite http://cloc.sourceforge.net

  • SLOCcount (source lines of code count): un outil gratuit pour compter les lignes de code et estimer les coûts et le temps associés à un projet. Ne semble pas être actif. -- visite http://sourceforge.net/projects/sloccount et http://www.dwheeler.com/sloccount

  • AnalysisTool : outil d'analyse de code libre qui mesure la complexité du code et génère également des diagrammes de dépendances. N'est pas actif. Ne semble pas fonctionner avec Xcode 4, mais j'aimerais le faire fonctionner. -- visite http://www.karppinen.fi/analysistool

23
répondu Steve HHH 2011-08-22 23:16:04

pour C et Objectif-C, vous pouvez également utiliser le LLVM / Clang analyseur statique .

Il est Open Source et en développement.

6
répondu Chris Hanson 2012-02-02 22:00:34

pour .Net nous utilisons NDepend. C'est un excellent outil qui peut être intégré au build (nous utilisons CCNet).

http://www.ndepend.com /

HTH.

5
répondu BZ. 2008-08-21 19:03:18

pour C++, j'utilise CppCheck. Il semble bien fonctionner.

3
répondu Séverin 2010-04-26 20:06:23

j'utilise beaucoup le plugin PMD pour Eclipse. C'est assez agréable, et très configurable. CheckStyle est également bon, si vous cherchez plus d'un style enforcer.

2
répondu TimK 2008-08-21 19:01:26

Checkstyle, Findbugs, et PMD tous fonctionnent assez bien en Java. Je suis actuellement assez heureux avec PMD courant dans NetBeans. Il a un GUI assez simple pour gérer quelles règles vous voulez exécuter. Il est également très facile d'exécuter le vérificateur sur un fichier, un paquet entier, ou un projet entier.

2
répondu Bill the Lizard 2008-08-21 19:04:00

Voir aussi la question choisir un outil d'analyse de code statique si vous cherchez des outils basés sur C/UNIX.

2
répondu David 2017-05-23 10:29:47

évidemment, la réponse dépend des langages de programmation. UNO est bon pour les programmes en C.

@Thomas Owens: je pense que vous vouliez dire attelle.

2
répondu Chris Conway 2008-08-21 19:14:40

Peluches est le seul que j'ai utilisé lors d'une précédente position. Ce n'était pas mal, La plupart des choses suggérées étaient de bonnes prises, certaines n'avaient pas beaucoup de sens. Tant que vous n'avez pas de processus en place pour vous assurer qu'il n'y a pas d'erreurs de peluche ou d'Avertissements, alors il est utile de peut-être attraper quelques bogues autrement cachés

1
répondu Craig H 2008-08-21 19:03:44

Nous utilisons des Coverity Prévenir sur la Paume pour C et C++ d'analyse de code, et il a effectué un grand travail de découverte de certains bugs cachés dans notre code. Il trouve aussi beaucoup de pas susceptibles d'être des problèmes de frappe, mais il est facile de marquer ceux-ci comme "ne sera pas corriger" ou "pas un problème" dans la base de données de code que l'outil génère. Cela coûte cher, mais il arrive que l'entreprise exécute des projets open source et fournisse des rapports aux responsables. Ils ont un livre blanc à propos de notre utilisation du produit sur leur site si vous voulez en savoir plus sur notre expérience.

1
répondu Ben Combee 2008-09-30 08:08:00

Mes admins sont vraiment pas chers, donc je ne peux utiliser que des outils vraiment pas chers:

1) CCCC (C / C++ Code Counter): Divers résultats liés au nombre de lignes (vs. lignes de commentaires, complexité cyclomatique, flux D'Information, ...) 2) Semian: plus rapide que j'ai jamais essayé de trouver la duplication de code. 3) LOC Metrix: pas très utile mais peut aider à faire un point.

1
répondu The GG 2010-04-26 20:55:40

nous utilisons le code de programmation QAC pour notre code C. Fonctionne OK.

récemment, nous avons parlé de vérifier certains des analyseurs de code plus avancés et statiques/dynamiques comme Coverity's Prevent ou l'outil d'analyse par GrammaTech .

ils prétendent non seulement faire l'analyse statique, mais aussi trouver des erreurs d'exécution, etc. Un argument de vente majeur est censé être moins de faux positifs.

1
répondu cschol 2012-12-18 15:45:51

la seule fois où j'ai utilisé un de ces outils est Split (langage de programmation C). Je pensais que c'était utile, mais je n'étais pas un utilisateur de pouvoir et je pense que j'ai à peine gratté la surface de ce qu'il pourrait faire.

0
répondu Thomas Owens 2008-08-21 19:00:04

j'ai utilisé pas mal d'outils d'analyse statique commerciaux et open-source dans de nombreuses langues et je trouve que l'ensemble de la discussion s'inscrit dans le cadre d'un concept connu sous le nom de dette technique ( dont cet article va en détail sur ).

Cependant pour une réponse rapide, Voici mes favoris par langue:

0
répondu Andrew Thompson 2011-05-06 06:50:07