我尝试对我的项目进行静态代码分析,该项目基本上由 .hpp 文件组成,因为那里的一切都是“模板化的”,但不幸的是,我从 PSV-Studio 获得了无法处理头文件的信息。这似乎有点奇怪。在现代 C++ 模板中无处不在,AFAIC 它们大多放在头文件中。我错过了什么吗?有没有办法设置 PVS-Studio 对头文件进行分析?
问问题
530 次
1 回答
1
PVS-Studio 确实支持对“模板化”代码的分析,即使它没有被实例化。
但是,PVS-Studio 需要对文件进行预处理才能对其进行分析,即所有#include 和宏都应在分析之前展开。为此,PVS-Studio 需要一个可编译文件,即与必要的编译器标志(定义、包含等)一起传递给编译器的文件。只有一个头文件是不够的,因为 PVS-Studio 没有足够的信息来正确预处理它。
“无法开始对此文件进行分析”很可能是 V008 错误,这意味着预处理器以非 zer 代码退出,这意味着您尝试分析的文件是不可编译的。通常,PVS-Studio 还会将错误原因(来自预处理程序的 stdErr)作为下一条消息输出。您可以在此处更详细地了解它。
于 2016-06-28T12:03:18.860 回答