cppcheck 概述
cppcheck 是一款專為 C 和 C++ 代碼設計的靜態(tài)代碼檢查工具,作為編譯器的補充,cppcheck 能夠對源代碼進行深入的邏輯檢查。
它幫助開發(fā)和測試工程師從代碼層面發(fā)現(xiàn)問題,專注于包括邏輯錯誤、可疑代碼、運算錯誤、空指針、越界錯誤、內存泄漏等6個大類,共52個小類的問題。
與其他靜態(tài)檢查工具相比,cppcheck 以其簡單易用、快速執(zhí)行和開源的優(yōu)勢而著稱。
cppcheck 執(zhí)行的檢查包括:1. 自動變量檢查 2. 數(shù)組邊界檢查 3. 類檢查 4. 過時函數(shù)和廢棄函數(shù)調用檢查 5. 異常內存使用和釋放檢查 6. 內存泄漏檢查,主要通過內存引用指針 7. 操作系統(tǒng)資源釋放檢查,如中斷、文件描述符等 8. 異常 STL 函數(shù)使用檢查 9. 代碼格式錯誤和性能因素檢查
立即學習“C++免費學習筆記(深入)”;
cppcheck 的默認使用方法:
$ cppcheck --enable=all test.cpp $ cppcheck --enable=all ./src
可以通過
--output-file
report.txt
$ cppcheck --enable=all test.cpp --output-file=report.txt
也可以使用輸出重定向:
$ cppcheck --enable=all test.cpp 2> report.txt
cppcheck 的安裝可以從其官方網(wǎng)站(Cppcheck - A tool for static C/C++ code analysis)下載最新版本的可執(zhí)行安裝包(如
cppcheck-2.7-x64-Setup.msi
cppcheck 對94個例子的分析結果非常到位,但對于中文注釋的代碼預覽可能不太友好。
除了圖形用戶界面,cppcheck 還支持與多種 IDE(如 VS、Eclipse、QtCreator 等)和版本管理系統(tǒng)(如 Tortoise SVN、Git)集成使用。用戶可以對每次分析進行配置,甚至自定義規(guī)則,并將這些配置作為項目文件保存或重新加載。
分析結果可以保存為格式化的純文本或 XML 格式,并通過 Python pygments 將 XML 轉換為 HTML。
在檢測能力上,cppcheck 優(yōu)于 TscanCode,但在易用性上,TscanCode 則更勝一籌。不過,cppcheck 在某些情況下可能會出現(xiàn)誤報。
接下來介紹騰訊開源的 TscanCode。
TscanCode 概述
TscanCode 是騰訊研發(fā)的靜態(tài)代碼掃描工具,最初基于 cppcheck 二次開發(fā),后續(xù)進行了自主研發(fā),支持 C++、C# 和 Lua 語言。TscanCode 在發(fā)現(xiàn) C++ 空指針、越界、未初始化、C# 空引用、Lua 變量未初始化等方面表現(xiàn)出色,適用于游戲開發(fā)代碼掃描,具有較高的準確率和效率。
TscanCode 主要能發(fā)現(xiàn)以下問題:1. 自動變量檢查:返回自動變量(局部變量)指針;2. 越界檢查:數(shù)組越界返回自動變量(局部變量)指針;3. 類檢查:構造函數(shù)初始化;4. 內存泄漏檢查;5. 空指針檢查;6. 廢棄函數(shù)檢查。
TscanCode 的性能測試可以參考:http://ipnx.cn/link/2ed82a7e645e45584d3aabab834eef35。
TscanCode 的安裝
TscanCode 已在 Github 上開源,代碼倉庫為:GitHub - Tencent/TscanCode: A static code analyzer for C++, C#, Lua。用戶可以自行下載并編譯,也可以使用騰訊預編譯的可執(zhí)行文件(位于代碼倉庫的 release 目錄)。
在 Windows 平臺下,截至目前,Github 的 release 目錄中已不再提供 Windows 的安裝包,但可以通過網(wǎng)絡搜索下載 TscanCodeV2.14.24.windows.exe(評論區(qū)有下載鏈接)。
在 Linux 平臺下,TscanCode 的安裝方法如下:
第一種: $ git clone https://github.com/Tencent/TscanCode.git $ cd TscanCode/release/linux/ $ unzip TscanCodeV2.14.24.linux.zip $ cd TscanCodeV2.14.24.linux/TscanCodeV2.14.2395.linux $ chmod a+x tscancode $ echo "PATH=$PATH:$(pwd)" >> ~/.bashrc $ source ~/.bashrc <p>第二種,建議使用: cd trunk/ make 修改 cfg/cfg.xml #cfg.xml 配置不當,可能導致檢測結果為空,建議啟用一些 value="0" 的規(guī)則
TscanCode 的掃描規(guī)則與配置
TscanCode 支持在 Linux、Windows 等多平臺運行。用戶可以通過 cfg/cfg.xml 文件對掃描規(guī)則進行配置,設置 value=0 禁用規(guī)則,value=1 啟用規(guī)則。根據(jù)需求定制掃描規(guī)則,編輯 cfg/cfg.xml 文件,或直接使用默認的掃描規(guī)則。
將源代碼放置在指定路徑 ${SRC_CODE}(路徑中不能包含 root 文件夾,TscanCode 的特殊要求)。如,export SRC_CODE=~/myprj/mysource/
執(zhí)行代碼掃描:
./tscancode --xml --enable=all -q ${SRC_CODE} >scan_result.xml 2>&1
TscanCode 會將結果按照固定的 XML 格式寫入文件中。用戶可以使用 Excel 工具打開 XML 報告,在左側插入一列處理情況。開發(fā)人員根據(jù)報告對代碼上下文進行分析,判斷是否為工具誤報。對于確認為問題的代碼,由開發(fā)人員處理后重新進行代碼安全靜態(tài)掃描,直到問題關閉。
其他工具介紹
Valgrind 是一款開源(GPL V2)的仿真調試工具集合,支持 Linux 操作系統(tǒng),功能強大,包括:
推薦幾個常用的在線 C++ 代碼測試網(wǎng)站:
參考文獻:
以上就是C++代碼審查工具Cppcheck和TscanCode的詳細內容,更多請關注php中文網(wǎng)其它相關文章!
每個人都需要一臺速度更快、更穩(wěn)定的 PC。隨著時間的推移,垃圾文件、舊注冊表數(shù)據(jù)和不必要的后臺進程會占用資源并降低性能。幸運的是,許多工具可以讓 Windows 保持平穩(wěn)運行。
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號