Ce projet comprend des outils et des listes pour déterminer tous les drapeaux d'avertissement que la collection Clang Compiler et GNU Compiller a pour C Family Languages (C, C ++ et Objective-C). Cela montre également tous les alias et les drapeaux d'avertissement qu'un certain indicateur permet (préfixé avec le caractère "#") afin que vous puissiez facilement voir quel drapeau est activé par quoi. Il existe également des drapeaux d'avertissement qui ne font rien pour des raisons de compatibilité ou de dépréciation. Ils sont suffixés avec du texte "# muet switch".
Le but de ces collections est de faciliter l'utilisation des outils d'analyse de code statique que les compilateurs fournissent.
Clang inclut -Weverything
drapeau, qui n'est pas montré dans ces listes, qui permet tous les avertissements. La documentation de Clang fournit une référence pour certains des drapeaux diagnostiques de Clang.
Si vous avez besoin d'une liste complète des options d'avertissement GCC, pour une version spécifique de GCC que vous avez, vous pouvez exécuter GCC avec gcc --help=warnings
pour obtenir cette liste. Sinon, certaines listes d'options d'avertissement GCC simples sont disponibles ci-dessous:
Un cas d'utilisation pour ces types de listes consiste à voir quelles différences il y a entre différents compilateurs et versions du compilateur. J'ai mis à disposition des différences de drapeau du compilateur rudimentaire entre deux versions de compilateur conséquentes sous forme de difficultés diff, mais pour des différences plus spécifiques, vous devez utiliser un programme Diff (visuel), comme indiqué ci-dessous:
Cela utilise Antlr comme générateur d'analyse avec un code Python de prise en charge pour analyser les indicateurs d'avertissement des fichiers de données d'options du compilateur réel. D'autres exigences suivent (plus leurs dépendances):
Une fois que vous avez installé toutes les exigences et que vous êtes en mesure d'exécuter ANTLR avec la commande antlr4
, utilisez simplement les commandes suivantes dans parsers/
Directory pour générer ces listes vous-même:
ninja
./parse-clang-diagnostic-groups.py <path-to-clang-source>/include/clang/Basic/DiagnosticGroups.td
./parse-gcc-warning-options.py <path-to-gcc-source>/gcc/{common.opt,c-family/c.opt}
Et vous obtiendrez la liste de tous les drapeaux d'avertissement individuels et leurs dépendances qui sont dans la version du compilateur demandé.
Pour générer des listes filtrées, vous pouvez utiliser des commutateurs --top-level
et --unique
.
--top-level
n'inclut pas les avertissements qui sont activés par un autre commutateur de la liste.--unique
répertorie tous les avertissements sans aucune information quels autres avertissements ils permettent. Les difficultés sur cette page sont créées à partir de ces fichiers. Certains tests unitaires testant la fonctionnalité de faible niveau. Vous pouvez exécuter le temps avec la commande ninja test
dans parsers/
répertoire pour vérifier que les tests unitaires passent.
Lorsque l'analyseur obtient une modification qui affecte le formatage ou toute autre sortie pour plusieurs fichiers, ces listes d'avertissement doivent être recréées. Il existe des scripts process-clang-git.sh
et process-gcc-git.sh
qui prennent la racine du référentiel Git comme premier paramètre et appliquent toutes les différentes variantes de ces commandes pour créer des fichiers texte finaux.