cppcheck 2.6 靜態程式碼分析器的新版本已發布。它可以檢測 C 和 C++ 程式碼中的各種錯誤,包括嵌入式系統中常見的非標準語法錯誤。該版本提供了一系列插件,支援將 cppcheck 與各種開發、持續集成和測試系統集成,並提供程式碼風格檢查等功能。使用者可以使用 cppcheck 的原生解析器或外部 Clang 解析器進行程式碼分析。此外,該軟體包還包含 donate-cpu.py 腳本,用於為協作式軟體包程式碼檢查提供本機資源。 Debian該專案的原始碼以 GPLv3 許可證發布。
cppcheck 的開發重點是識別與未定義行為相關的問題以及從安全角度來看危險的設計的使用。 目標還在於最大限度地減少誤報。 已識別的問題包括:指向不存在物件的指標、除以零、整數溢位、不正確的位移操作、不正確的轉換、使用記憶體時出現的問題、STL 不正確的使用、空指標取消引用、實際訪問後使用檢查到緩衝區、緩衝區溢位、使用未初始化的變數。
在新版本中:
- 分析器核心中加入了以下檢查:
- 函數體中缺少返回運算子;
- 記錄重疊數據,定義未定義的行為;
- 正在比較的值超出了類型的值表示形式;
- 複製優化不適用於 return std::move(local);
- 不能同時開啟檔案在不同的串流(stream)中進行讀寫;
- 對於 Unix 平台,增加了以不同顏色顯示診斷訊息的支援;
- 新增了 ValueFlow 的符號分析。 在計算兩個未知變數之間的差異時使用簡單的delta;
- 用於標記清單「define」的規則也可以符合#include;
- 庫標籤現在可以包含一個標籤,以及相應的自由函數,它可以接受諸如 std::size、std::empty、std::begin、std::end 等容器。 可指定連接器的產量或動作;
- 庫標籤現在可以包含一個標籤對於具有唯一所有權的智慧指標。 現在發出有關對這些類型的智慧指標的懸空引用的警告;
- 修正了處理 —cppcheck-build-dir 參數的問題;
- htmlreport 現在可以顯示作者的資訊(使用 gitblame);
- 關於不是常數但可能是常數的變數的擴展警告;
- 分析儀累積的錯誤和缺點已修正。
此外,Misra C 2012 的檢查,包括修正案 1 和修正案 2,已全面實施,但規則 1.1、1.2 和 17.3 除外。 檢查 1.1 和 1.2 必須由編譯器執行。 驗證17.3可以由GCC等編譯器執行。
來源: opennet.ru
