發布 cppcheck 2.6,C++ 和 C 語言的靜態程式碼分析器

Вышла новая версия статического анализатора кода cppcheck 2.6, позволяющего выявлять различные классы ошибок в коде на языках Си и Си++, в том числе при использовании нестандартного синтаксиса, типичного для встраиваемых систем. Предоставляется коллекция плагинов, через которые обеспечена интеграция 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

為具有 DDoS 保護、VPS VDS 服務器的站點購買可靠的主機 🔥 購買具備 DDoS 防護的可靠網站寄存服務,包括 VPS 和 VDS 伺服器 | ProHoster