【问题标题】:Exclude all messages in PC-Lint排除 PC-Lint 中的所有消息
【发布时间】:2013-01-19 10:55:40
【问题描述】:

我在我的 C++ 项目中使用PC-Lint。 有没有办法默认关闭所有错误和警告消息,这样我就可以明确地重新引入所需的消息?

我已阅读 PC-Lint 手册中题为“错误抑制选项”的章节,我能找到的最好的方法是将 wLevel 设置为 -w0 无消息(致命错误除外)

【问题讨论】:

  • 从根本上说这不是使用 lint 的正确方法。使用它的目的是让你说出你还没有想到的问题。如果您淹没在诊断中,那么请考虑从一组更保守的警告开始。将表盘转到 11 是很自然的,这会产生很多的喷射。从小处着手,从列表顶部开始。

标签: c++ lint pc-lint


【解决方案1】:

当我开始将 PC-Lint 引入一个新项目时,我做了以下事情:

  1. 按照 Johan Bezem 的建议,对整个事情进行了-w1 级别检查。这实际上并没有发现任何新问题,而是检查您的程序在语法上是否有效并发现任何配置问题。没什么大不了的,假设您的项目已经编译。

  2. 使用-w2 级别再次运行测试。这发现了 53,000 个问题,一口气解决了很多问题。

  3. 选择一个典型的错误文件,然后禁止出现任何错误 不相关或不紧急(例如error 525: (Warning -- Negative indentation from line xxx) -e525 添加到命令行或配置文件中,直到您找到一个看起来很严重的。 就我而言,这是 error 442: (Warning -- for clause irregularity: testing direction inconsistent with increment direction),即“for”循环 看起来应该在计数的实际上是在计数 下来。

  4. 将测试级别重置回-w1,但在关键问题中按编号添加,在本例中为-w1 +e442。在整个项目中重新运行它,然后修复该问题的所有实例。

  5. 返回第 2 阶段并重试。

这种解决实际问题和抑制可能的误报的组合很快就能让您的数字得到控制。

为了让一切随着时间的推移变得更好,我们还实施了一个脚本,对创建或修改的任何文件进行彻底(完整的-w2-w3)检查。

我还发现 LintProject 工具非常有用,因为它可以一次性完成整个 Visual Studio 解决方案,其中包含包含错误数量和最严重违规者的表格!

【讨论】:

    【解决方案2】:

    是的,有可能,您只需使用-e*-w0。但是,手册确实指出(第 16 章。与 Lint 一起生活):

    不要简单地用某些东西压制所有警告 比如:-e* 或 -w0,因为这会掩盖硬错误,使后续诊断变得非常困难。

    所以,是的,如果您的代码基本已清理干净,并且您想查看某组消息的最近更改,则可以使用它。但是如果你想开始清理你的代码,并且因为默认警告级别-w3而被消息淹没,我建议开始使用-w1,并解决那里的所有问题;第一级给出的大多数警告/错误表明在查找所有头文件、正确设置所有隐式宏和/或以足够精确的方式模仿您通常使用的编译器时存在问题。

    与往常一样,我不愿为自己的工作做广告,但如果您愿意,请查看我的“How to wield PC Lint”PDF,我在其中记录了处理 PC Lint 初始部署和处理许多警告的详细说明/errors/infos/notes 你可能被埋在下面。

    【讨论】:

      猜你喜欢
      • 2020-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多