我目前正在尝试在 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 …我不能让clang's c++-analyzer工作在玩具C++文件上.
#include <iostream>
using namespace std;
int main()
{
int t[4];
int x,y;
t[5]=1;
if(x)
y = 5;
x = t[y];
}
Run Code Online (Sandbox Code Playgroud)
makefile就是这样
all: t.cpp
$(CXX) t.cpp
Run Code Online (Sandbox Code Playgroud)
scan-build make 输出:
scan-build: 'clang' executable not found in '/usr/share/clang/scan-build/bin'.
scan-build: Using 'clang' from path: /usr/bin/clang
/usr/share/clang/scan-build/c++-analyzer t.cpp
scan-build: Removing directory '/tmp/scan-build-2012-06-14-6' because it contains no reports.
Run Code Online (Sandbox Code Playgroud)
如何使c ++ - analyzer工作?在Ubuntu 11.10上,Clang的版本是2.9.
编辑:我知道代码不正确.关键是Clang并没有抱怨明显的错误.如果我将上面的代码粘贴到.c文件(没有using ...)clang正确发出警告.
我想尝试一下clang静态分析仪.我在Windows上并使用Visual Studio构建了clang.它似乎工作,但同时它似乎是非常无用的.
我做了一个示例文件
example.c
int main(void)
{
int h = 0;
return 1/h;
}
Run Code Online (Sandbox Code Playgroud)
调用scan-build gcc -c example.c没有发现错误.
example.c
int main(void)
{
int h;
return 1/h;
}
Run Code Online (Sandbox Code Playgroud)
调用scan-build gcc -c example.c没有发现错误.
example.c
int main(void)
{
return 1/0;
}
Run Code Online (Sandbox Code Playgroud)
调用scan-build gcc -c example.c没有发现错误.
如果找不到这些最基本的错误(并且可以通过clang本身找到它们),静态分析仪如何才能使用?
gcc如果重要的话,我是MinGW.我也试过替代,clang但没有发生任何事情.
我在这里做错了吗?