このプロジェクトには、ClangコンパイラとGNUコンパイラコレクションがCファミリー言語(C、C ++、およびObjective-C)に持っているすべての警告フラグを把握するためのツールとリストが含まれています。また、これはすべてのエイリアスと警告フラグを示しており、特定のフラグが有効になっている(「#」文字が付けられた)ため、どのフラグが有効になっているかを簡単に確認できるようにします。また、互換性や非推奨の理由で何もしない警告フラグもあります。 「#dummy switch」テキストが付いています。
これらのコレクションの目的は、コンパイラが提供する静的コード分析ツールをより簡単に使用できるようにすることです。
Clangには、これらのリストには表示されない-Weverything
フラグが含まれており、すべての警告が可能です。 Clang Documentationは、Clangの診断フラグの一部の参照を提供します。
GCC警告オプションの完全なリストが必要な場合、あなたが持っているGCCの特定のバージョンについては、 gcc --help=warnings
を使用してGCCを実行できます。それ以外の場合は、いくつかのプレーンGCC警告オプションリストを以下に入手できます。
これらの種類のリストの1つのユースケースは、異なるコンパイラとコンパイラバージョンの間にどのような違いがあるかを確認することです。次のように、次のように、次のように、次のように、次のように、次のように、次のように、次のように、次のように、次のように、次のように、次のように、次のように、次のように、次のように、次のように、次のように、次のように、次のように、次のように、次のように、次のように、次のように、次のように、次のように、次のように、次のように、次のように、次のように、次のように、次のように、次のように、結果として、結果として生じる2つのコンパイラバージョンの違いを利用可能にしました。
これにより、ANTLRはパーサージェネレーターとして使用され、いくつかのサポートPythonコードを使用して、実際のコンパイラオプションデータファイルから警告フラグを解析します。その他の要件は次のとおりです(プラス依存関係):
すべての要件をインストールし、 antlr4
コマンドを使用してANTLRを実行できたら、 parsers/
ディレクトリで次のコマンドを使用して、これらのリストを自分で生成するだけです。
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}
また、すべての個別の警告フラグと、要求されたコンパイラバージョンにある依存関係のリストを取得します。
フィルタリングされたリストを生成するには、 --top-level
と--unique
スイッチを使用できます。
--top-level
スイッチには、リスト内の他のスイッチによって有効になっている警告は含まれていません。--unique
それらが有効にする他の警告を情報なしにすべての警告をリストします。このページのdiffは、これらのファイルから作成されます。 低レベルの機能をテストするいくつかのユニットテストがあります。 parsers/
ディレクトリでninja test
コマンドを使用して時間を実行して、単体テストが合格したことを確認できます。
パーサーが複数のファイルのフォーマットまたはその他の出力に影響する変更を取得すると、これらの警告リストを再作成する必要があります。 gitリポジトリルートを最初のパラメーターとして取得し、これらのコマンドのすべての異なるバリエーションを適用して最終的なテキストファイルを作成するprocess-clang-git.sh
およびprocess-gcc-git.sh
スクリプトがあります。