簡體   English   中英

clang 靜態分析器(掃描構建)可以與 cmake --build 一起使用嗎?

[英]Can clang static analyzer (scan-build) be used with cmake --build?

我想通過cmake --build的便利使用 clang 靜態分析器命令行工具scan-build

我在網上找到的大多數資源似乎都表明您需要一個兩步過程:

scan-build cmake .
scan-build make

例如,對於這個帶有scan-build捕獲的錯誤的小示例程序:

#include <iostream>

int fun() {
    int x;
    return x; # main.cpp:5:5: warning: Undefined or garbage value returned to caller

}

int main() {
    int a = fun();

    std::cout << "Hello, World! " << a << std::endl;
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.5)
project(test_program)

set(CMAKE_CXX_STANDARD 11)

set(SOURCE_FILES main.cpp)
add_executable(test_program ${SOURCE_FILES})

如果我運行scan-build cmake --build cmake-build-release/它不會找到錯誤,即使構建了二進制文件。 有沒有辦法讓scan-build與 CMake 一起在一個步驟過程中工作?

如果你想使用 Clang 靜態分析器,你應該只設置CMAKE_EXPORT_COMPILE_COMMANDS=YES 這將創建一個 CSA 可以讀取的編譯數據庫 您甚至不需要構建您的項目。 該文件位於: /path/to/build/compile_commands.json

scan-build專為無法自行創建編譯數據庫的項目而設計。

然后你可以運行:

analyze-build --cdb /path/to/build/compile_commands.json \
              --use-analyzer /path/to/clang \
              --output /path/to/output

值得注意的是, clang-tidy現在擁有所有的 CSA 檢查。 您可以使用相同的編譯數據庫技術在您的代碼庫上運行clang-tidy

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM