我正在为我的 C++ 项目使用PC-Lint 。有没有办法默认关闭所有错误和警告消息,这样我就可以明确地重新引入所需的消息?
我已阅读 PC-Lint 手册中题为“错误抑制选项”的章节,我能找到的最好的方法是将 wLevel 设置为 -w0 无消息(致命错误除外)
Yes, it is possible, you can simply use -e*
or -w0
. However, the manual truly states (Chapter 16. Living with Lint):
DO NOT simply suppress all warnings with something like: -e* or -w0 as this can disguise hard errors and make subsequent diagnosis very difficult.
So, yes, you can use it if your code is basically cleaned, and you want to review recent changes for a certain set of messages. But if you want to start cleaning your code, and are swamped with messages because of the default warning level -w3
, I suggest to start using -w1
, and resolve all issues there; most of the warnings/errors given at level one indicate problems with finding all header files, having al implicit macros set properly, and/or mimicking the compiler you use normally in a sufficiently precise way.
As always, I hesitate to advertise my own work, but if you want, take a look at my "How to wield PC Lint" PDF, where I have documented detailed instructions to handle the initial deployment of PC Lint and tackling the many warnings/errors/infos/notes you may be buried under.
当我开始将 PC-Lint 引入一个新项目时,我做了以下事情:
正如 Johan Bezem 所建议的那样,-w1
对整个事情进行了水平检查。这实际上并没有发现任何新问题,而是检查您的程序在语法上是否有效并发现任何配置问题。没什么大不了的,假设您的项目已经编译。
-w2
使用level再次运行测试。这发现了 53,000 个问题,一口气解决了很多问题。
选择一个典型的坏文件,然后抑制任何看起来不相关或不紧急的错误(例如,error 525: (Warning -- Negative indentation from line xxx)
添加-e525
到命令行或配置文件,直到找到一个看起来很严重的错误。在我的情况下
error 442: (Warning -- for clause irregularity: testing direction inconsistent with increment direction)
,这是一个“for”循环看起来应该是在倒计时。
在这种情况下,将测试级别重置为-w1
按编号添加到关键问题中。-w1 +e442
在整个项目中重新运行它,然后修复该问题的所有实例。
返回第 2 阶段并重试。
这种解决实际问题和抑制可能的误报的组合很快就能让您的数字得到控制。
因此,随着时间的推移,一切都会变得更好,我们还实现了一个脚本,对创建或修改的任何文件进行彻底(完整-w2
或)检查。-w3
我还发现LintProject工具非常有用,因为它可以一次性完成整个 Visual Studio 解决方案,其中包含包含错误数量和最严重违规者的表格!