【问题标题】:PVS-Studio doesn't process header filesPVS-Studio 不处理头文件
【发布时间】:2012-11-04 10:53:29
【问题描述】:

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

【问题讨论】:

  • 为什么不在 .cpp 文件中 #include 你的标头并分析它?
  • @BoPersson 嗨,我已经尝试过了,但出现错误:无法开始对此文件的分析。遗憾。该产品的设计者似乎忽略了不分析头文件。
  • "unable to start" 表示要处理文件但无法启动。可能是因为你做错了什么。
  • @ÖöTiib 很难说你说的是否正确。无法启动可能意味着它根本无法开始对此文件的分析。在这个时代,有一些有意义的错误消息会很好。也许我做错了什么。也许吧,但是如果我做错了什么,那么 AFAIC 肯定是这个程序的界面有问题,从某种意义上说,它允许我做一些我不应该做的事情,也没有指明正确的方法。跨度>
  • @smallB 如果它确实说“在分析之前使用外部预处理器预处理文件确实失败并且预处理器的日志是某个链接”,您会更喜欢它吗?难怪您讨厌将他们使用的所有外部工具的诊断输出隐藏在这种模棱两可的消息后面的软件。吸取教训,千万不要自己写。

标签: c++ pvs-studio


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-09
    • 2019-03-21
    • 2018-06-08
    • 2019-01-07
    • 2021-04-04
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    相关资源
    最近更新 更多