我试图对我的项目进行静态代码分析,该项目基本上由 .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/