即使标准输出中没有错误,cppcheck 也会返回错误
Posted
技术标签:
【中文标题】即使标准输出中没有错误,cppcheck 也会返回错误【英文标题】:cppcheck returns error even if no errors in stdout 【发布时间】:2018-01-29 15:27:45 【问题描述】:我这样运行命令:
./cppcheck file.cpp --inline-suppr --enable=all --error-exitcode=13 \
--quiet --suppress=missingInclude:* --suppress=unusedFunction:* --inconclusive
stdout 里面什么都没有,但是:
echo $?
13
同时,如果我检查其他文件,cppcheck 不向 stdout 写入任何内容并返回 0:
echo $?
0
我怎么理解,file.cpp 有什么“错误”?
【问题讨论】:
第二个例子你用了什么命令?在您的第一个示例中,由于“--error-exitcode=13”,您得到 13。 @orbitcowboy,我对所有文件使用相同的命令。有 cppcheck 返回 13 的文件和 cppcheck 返回 0 的文件。同时,所有这些文件的标准输出中都没有任何内容。我知道--error-exitcode
- 我想专门用它来区分两种情况:有没有错误。
您使用的是什么版本的 cppcheck?可能与此错误有关:trac.cppcheck.net/ticket/5746
我在 1.72 版中看到了同样的问题,但在 1.52 版中没有问题。
【参考方案1】:
我的 cppcheck 版本(有问题)是 1.82。
我还没有找到确切的问题(重现问题的简单代码示例),但我已经尝试了最新版本('Cppcheck 1.87 dev'),现在问题已解决(对我来说)。
所以,如果你有同样的问题 - 尝试升级 cppcheck。
【讨论】:
【参考方案2】:我不知道这个答案有多笼统,但也许有人会觉得它有用。
我在包含在 -I
中的第三方库标头中遇到了相同的行为:cppcheck 没有显示警告,但 确实将其计为退出代码。将其包含在 -isystem
中反而使问题消失了。
【讨论】:
以上是关于即使标准输出中没有错误,cppcheck 也会返回错误的主要内容,如果未能解决你的问题,请参考以下文章