該項目包括工具和列表,以找出Clang Compiler和GNU編譯器收集的所有警告標誌(C,C ++和Objective-C)。這還顯示了所有的別名和警告標誌,即某個標誌啟用(帶有“#”字符的前綴),以便您可以輕鬆地看到哪個標誌啟用了哪個標誌。也有警告標誌出於兼容或貶值原因無能為力。它們用“#虛擬開關”文本後綴。
這些集合的目的是使使用編譯器提供的靜態代碼分析工具更容易。
clang包括 - 所有列表中未顯示的-Weverything
標誌,這可以引起所有警告。 Clang文檔提供了Clang中某些診斷標誌的參考。
如果您需要GCC警告選項的完整列表,則對於擁有的特定版本的GCC,可以使用GCC運行gcc --help=warnings
以獲取該列表。否則,一些普通的GCC警告選項列表以下可用:
此類列表的一種用例是查看不同編譯器和編譯器版本之間的差異。我已經提供了兩個隨之而來的編譯器版本之間的基本編譯器標誌差異為diff-files,但是對於更具體的差異,您需要使用一些(視覺)diff程序,如下所示:
這將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
列出了所有警告,而沒有任何信息,他們啟用了其他警告。此頁面上的差異是從這些文件創建的。 有一些單元測試測試低級功能。您可以使用parsers/
Directory中的ninja test
命令運行時間來驗證該單元測試通過。
當解析器獲得會影響格式化或其他輸出的更改時,需要重新創建這些警告列表。有process-clang-git.sh
和process-gcc-git.sh
腳本將git存儲庫根作為其第一個參數,並應用這些命令的所有不同變體來創建最終文本文件。