c++ - PVS-Studio 不处理头文件

标签 c++ pvs-studio

我试图对我的项目进行静态代码分析,该项目基本上由 .hpp 文件组成,因为所有内容都在那里“模板化”,但不幸的是,我从 PSV-Studio 获得的信息表明无法处理头文件。这似乎有点奇怪。在现代 C++ 中,模板无处不在,AFAIC 它们大多放在头文件中。我错过了什么吗?有没有办法设置 PVS-Studio 来对头文件进行分析?

最佳答案

PVS-Studio 确实支持“模板化”代码的分析,即使它没有实例化也是如此。

但是,PVS-Studio 需要对文件进行预处理才能对其进行分析,即所有#includes 和宏都应在分析前展开。为此,PVS-Studio 需要一个可编译文件,即传递给编译器的文件以及必要的编译器标志(定义、包含等)。只有一个头文件是不够的,因为 PVS-Studio 没有足够的信息来正确地预处理它。

“无法开始分析此文件”很可能是 V008 错误,这意味着预处理器以非 zer 代码退出,这意味着您尝试分析的文件是不可编译的。通常,PVS-Studio 还会输出错误原因(来自预处理器进程的 stdErr)作为下一条消息。您可以更详细地阅读它 here .

关于c++ - PVS-Studio 不处理头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13217903/

相关文章:

c++ - 将静态成员的范围限制为 n 个特定类

c# - 在 C# 中编辑字符串中的字符

c++ - 为什么a[v] = v[a]?

c++ - PVS-Studio 知道 Unicode 字符吗?

c++ - 在 Linux 上使用 CMake 时,如何告诉 PVS-Studio 忽略第三方库中的所有文件

c++ - 如何只在一个 CPU 上运行 C++ 程序?

c++ - 如何在主目录中创建文件夹?

command-line - pvs-studio-analyzer 中 -a 选项的可能值

PVS-Studio 在项目文件夹中创建临时文件

c++ - 在 PVS-Studio 中 BOOST_REQUIRE 之后将变量标记为非 NULL