Comment faire fonctionner l'analyseur statique Clang à partir de la ligne de commande?
Je suis en cours d'exécution Clang 3.4 sur Ubuntu 12.10 (à partir de http://llvm.org/apt/). J'ai couru à l'analyseur (clang-analyse) sur un code, et il a trouvé un couple de questions:
Blah.C:429:9: warning: Declared variable-length array (VLA) has zero size
unsigned char separatedData[groupDataLength];
^~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~
Mais la question n'est pas important. Je veux savoir les étapes de la façon dont il est arrivé à cette conclusion (le code est assez complexe pour moi de ne pas le voir dans les 15 minutes).
Je vois une capture d'écran de la Clang site qui montre les étapes de travail affiché dans un navigateur web:
C'est probablement obtenus à partir de Xcode.
La question est: comment puis-je obtenir de Bruit à la sortie de ces étapes de travail à partir de la ligne de commande? Ou même de la sortie des résultats dans un navigateur si elle le souhaite? Ce serait faire de l'analyseur beaucoup plus utile, et de faire fixer les choses beaucoup plus rapide.
(J'ai remarqué que GCC de la documentation est excellente, mais Clang/LLVM la documentation est très pauvre. J'ai essayé le "clang-analyse -Xanalyzer '-v'" comme un coup de poignard dans le noir pour raconter l'analyseur d'être plus verbeux -- la -Xanalyzer l'interrupteur de l'homme pages.)
source d'informationauteur Jetski S-type
Vous devez vous connecter pour publier un commentaire.
En plus du texte de sortie sur la console:
Vous pouvez obtenir la pleine html de sortie:
En outre, vous pouvez sélectionner des pions pour l'activer. Cette page des listes de vérifications. Par exemple, vous pouvez activer tous les C++ vérifie dans le groupe alpha en utilisant les drapeaux:
http://coliru.stacked-crooked.com/a/7746c4004704d4a7
Apparemment le front-end expose
E. g.
qui pourraient être mieux pris en charge que
-Xanalyzer
et peut être étendu pour prendre en charge les options individuel dames: http://lists.cs.uiuc.edu/pipermail/cfe-dev/2014-October/039552.htmlVous êtes sur la bonne voie, mais pour obtenir toute trace menant à un bug que vous avez en plus besoin de demander clang pour la sortie en format texte (ne me demandez pas pourquoi). Puisque vous aurez probablement besoin de le régler, par exemple, par des chemins ou définit pour votre projet de toute façon, je vous suggère d'utiliser
clang-check
qui agit comme un wrapper autour de bruit de l'analyseur de passe. Il peut également raccorder l'analyseur statique outils exposés dans, par exemple,scan-build
. Vous pouvez ensuiteComme vous avez écrit la documentation pour ces très belles des outils est catastrophique. Je pavées appel ci-dessus ensemble de pièces et de morceaux de Chandler Carruth est GoingNative2013 parler.
Vous devez utiliser scanbuild: http://clang-analyzer.llvm.org/scan-build.html
Vous tapez les commandes qui génèrent de votre build, mais vous pré-pend avec scan-build.
Exemple:
au lieu de
type
au lieu de
type
Clair la construction avant le lancement de l'analyseur, sinon ferons état que tout a été déjà construites et l'analyseur ne sera pas exécuté.