Cppcheck是一個C/C++代碼缺陷靜態檢查工具,不同於C/C++編譯器及其它分析工具,只檢查編譯器檢查不出來的bug,不檢查語法錯誤,支持C/C++代碼;作為編譯器的一種補充檢查,對產品的源代碼執行嚴格的邏輯檢查,執行的檢查包括:
- 自動變量檢查
- 數組的邊界檢查
- class類檢查
- 過期的函數,廢棄函數調用檢查
- 異常內存使用,釋放檢查
- 內存泄漏檢查,主要是通過內存引用指針
- 操作系統資源釋放檢查,中斷,文件描述符等
- 異常STL 函數使用檢查
- 代碼格式錯誤,以及性能因素檢查
啟用消息
默認情況下,只顯示錯誤消息,可以通過 --enable 命令啟用更多檢查。
啟用警告消息:
cppcheck --enable=warning file.c
啟用性能消息:
cppcheck --enable=performance file.c
啟用信息消息:
cppcheck --enable=information file.c
由於歷史原因 --enable=style 可以啟用警告、性能、可移植性和樣式信息。當使用舊 XML 格式時,這些都由 style 表示:
cppcheck --enable=style file.c
啟用警告和性能消息:
cppcheck --enable=warning,performance file.c
啟用 unusedFunction 檢查。這不能通過 --enable=style 啟用,因為不會在庫中正常工作。
cppcheck --enable=unusedFunction file.c
啟用所有消息:
cppcheck --enable=all
不確定消息
默認情況下,如果確定,Cppcheck 只顯示錯誤消息。如果使用 --inconclusive,當分析不確定時,也會寫錯誤消息。
cppcheck --inconclusive path
這當然會導致錯誤的警告,即使在沒有 bug 的情況下,也可能會報 bug。如果可以接受錯誤的警告,可以使用此命令。
保存結果到文件中
很多時候,會希望將結果保存在一個文件中,可以使用 shell 的管道重定向錯誤輸出到一個文件:
cppcheck file.c 2> err.txt
多線程檢查
選項 -j 用於指定需要使用的線程數,例如,使用 4 個線程檢查文件夾中的文件:
cppcheck --enable=warning file.c
參考
http://blog.csdn.net/liang19890820/article/details/52778149
官方文檔
http://cppcheck.sourceforge.net/manual.html#idm18