Flo*_*ers 9 c++ static-analysis clang visual-c++ clang-static-analyzer
我目前正在尝试在 Windows v10.0.18363.720 操作系统上使用 Microsoft Visual C++ 编译器 (MSVC) v19.25.28610.4将Clang Static Analyzer v9.0.1集成到我的CMake v3.16.5 构建系统中。
一切都是为架构 x86_64 构建的。LLVM 和 Clang 是从源代码构建的。
在万维网 (WWW) 上阅读一些内容后,似乎有多种方法可以使用 Clang 静态分析器。遗憾的是,文档很糟糕,而且在 Windows 操作系统上似乎有一些特殊的怪癖(主要与 相关clang-cl),因此集成起来并不简单。IMO,专业程序员将其集成到 C++ 事实标准构建系统中的时间不应超过一小时。
调用 Clang 静态分析器似乎至少有五种可能性:
scan-build 脚本。
scan-build: No bugs found.到 STDOUT。clang-check 可执行。
compile_commands.json。--extra-arg论证。clang/clang++可执行文件。
c++-analyzer.bat/ccc-analyzer.bat批处理脚本。
clang-tidy可执行clang-analyzer-*仅检查。
compile_commands.json。以下是三个批处理脚本,前三种方法各一个:
scan-build-example.cmd
@echo off
setlocal
cls
rem Configure
call scan-build.bat^
-v^
-v^
-v^
-analyze-headers^
--force-analyze-debug-code^
-o _scan_build_out^
--keep-cc^
--html-title="Scan Build Example"^
--show-description^
--use-cc="C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\bin\Hostx64\x64\cl.exe"^
--use-c++="C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\bin\Hostx64\x64\cl.exe"^
-stats^
-maxloop 4^
-internal-stats^
--use-analyzer="E:\dev\native\llvm\llvm-9.0.1\Release\static\x64-windows-msvc1924-v142\bin\clang.exe"^
-analyzer-config stable-report-filename=true^
-enable-checker core,cplusplus,deadcode,nullability,optin,osx,security,unix,valist^
cmake^
-S "D:\cmake\cmake-example-clang-static-analyzer"^
-B "D:\cmake\cmake-example-clang-static-analyzer\_scan-build"^
-G "Ninja"^
-DCMAKE_C_COMPILER:PATH="C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\bin\Hostx64\x64\cl.exe"^
-DCMAKE_CXX_COMPILER:PATH="C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\bin\Hostx64\x64\cl.exe"^
-DCMAKE_BUILD_TYPE:STRING=Debug
rem Build
call scan-build.bat^
-v^
-v^
-v^
-analyze-headers^
--force-analyze-debug-code^
-o _scan_build_out^
--keep-cc^
--html-title="Scan Build Example"^
--show-description^
--use-cc="C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\bin\Hostx64\x64\cl.exe"^
--use-c++="C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\bin\Hostx64\x64\cl.exe"^
-stats^
-maxloop 4^
-internal-stats^
--use-analyzer="E:\dev\native\llvm\llvm-9.0.1\Release\static\x64-windows-msvc1924-v142\bin\clang.exe"^
-analyzer-config stable-report-filename=true^
-enable-checker core,cplusplus,deadcode,nullability,optin,osx,security,unix,valist^
cmake^
--build "D:\cmake\cmake-example-clang-static-analyzer\_scan-build"^
--config Debug
Run Code Online (Sandbox Code Playgroud)clang-check-example.cmd
@echo off
setlocal
cls
set out_dir=%~dp0.\_clang_check_out
mkdir "%out_dir%" > nul 2>&1
rem Issue: "warning: could not create file in 'main.plist': no such file or directory"
clang-check^
-analyze^
-extra-arg=-Xclang^
-extra-arg=-analyzer-config^
-extra-arg=-Xclang^
-extra-arg=add-pop-up-notes=true,mode=deep^
-extra-arg=-Xclang^
-extra-arg=-analyzer-checker=core,cplusplus,deadcode,nullability,optin,osx,security,unix,valist^
-extra-arg=-Xclang^
-extra-arg=-analyzer-output=html^
-extra-arg=-o=%out_dir%^
-p "D:\cmake\cmake-example-clang-static-analyzer\_build"^
"D:\cmake\cmake-example-clang-static-analyzer\app\main.cpp"
Run Code Online (Sandbox Code Playgroud)clang_analyze-example.cmd
@echo off
setlocal
cls
set out_dir=%~dp0.\_clang_analyzer_out
mkdir "%out_dir%"
clang++^
--analyze^
-Xanalyzer^
-analyzer-checker=core,cplusplus,deadcode,nullability,optin,osx,security,unix,valist^
-Xanalyzer^
-analyzer-output=html^
-o "%out_dir%"^
-I"D:\cmake\cmake-example-clang-static-analyzer\src"^
"D:\cmake\cmake-example-clang-static-analyzer\app\main.cpp
Run Code Online (Sandbox Code Playgroud)我的问题是:
scan-build.bat在 Windows 上工作(我尝试使用 MSVC 和 Clang)?clang-check.exe使其创建 HTML 输出文件并消除warning: could not create file in 'main.plist': no such file or directory警告?clang.exe/clang++.exe一个合适的替代方案(imo,它缺少其他两个非工作替代方案应该可用的构建信息)?一般而言:在 Windows 上使用 MSVC 使用 Clang 静态分析器生成 HTML 报告的最简单方法是什么?
相关问题:
变更日志:
clang-check-example.cmd脚本。clang-tidy.| 归档时间: |
|
| 查看次数: |
2575 次 |
| 最近记录: |