[英]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.