CppCheck開源C/C++靜態分析工具安裝使用教程
最近由於C/C++專案程式碼審計,有時候開發不給相關的依賴庫,是件很蛋疼的事情。因為無法使用fortify SCA進行編譯。從而就無法掃描分析漏洞缺陷。依靠人工審計,簡直是一件很崩潰的事情,對我一個做java程式碼審計的人來說,不怎麼懂C/C++,更別說找什麼溢位,記憶體洩漏,危險函式,越界,空指標......,那就是一場災難。
所以我就在想能不能找到一款開源的並且不需要編譯原始碼的開源靜態分析工具,通過一天的查資料對比,挑選了三款比較中意的C/C++靜態分析工具,CppCheck、TscanCode、flawfinder這三款工具。
從使用方便角度對比:CppCheck ≈ TscanCode>flawfinder
cppCheck和TscanCode都可以圖形化介面進行操作,flawfinder只能命令列操作,並且誤報比較高(其實不怎麼好用,害我研究了一天,就勉強加上它)。
掃描缺陷精準度:TscanCode > cppCheck > flawfinder
關於C/C++靜態分析工具對比,鵝廠寫了個帖子,非常詳細,感興趣的小夥伴可以去看看:
https://blog.csdn.net/wetest_tencent/article/details/51516347
這篇帖子先來說說cppCheck的安裝和使用,其它兩款在別的帖子在詳細講解吧。
1.CppCheck的安裝下載地址:
2.下載下來之後,進行安裝,安裝步驟很簡單,直接下一步,直到完成即可。
3.Cppcheck支援發現的常見缺陷和漏洞如下:
Cppcheck可檢測的問題包括:
- Dead pointers
- Division by zero
- Integer overflows
- Invalid bit shift operands
- Invalid conversions
- Invalid usage of STL
- Memory management
- Null pointer dereferences
- Out of bounds checking
- Uninitialized variables
- Writing const data
並將問題分為以下6類:
- 錯誤(error):bug。
- 警告(warning):預防性程式設計方面的建議。
- 風格警告(style):出於對程式碼簡潔性的考慮(函式未使用、冗餘程式碼等)。
- 可移植性警告(portability):64/32位可移植性、編譯器通用性等。
- 效能警告(performance):使程式碼更高效的建議,但不保證一定有明顯效果。
- 資訊訊息(information):條件編譯方面的警告。
4.匯入專案, 選擇檔案或者資料夾都行,既可以掃單個檔案,也可以掃整個專案
5.掃描過程也是很快的,因為其不需要編譯程式碼,所以只是靜態分析,沒有資料流跟蹤器,汙染標記,動態分析器等,所以和商業付費軟體還是有所差距,之前使用過Coverity ,精準度特別高,做C/C++專案特別好。找了一個專案掃描分析結果如下圖:
6.可以將結果匯出,生成一個xml檔案, 以便於下載繼續使用可以打卡繼續分析缺陷漏洞。
7.再一次匯入結果檔案,可以繼續分析,需要注意的是,你需要再次關聯專案原始碼,才能在下方的面板中看到原始碼片段