即使标准输出中没有错误,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 也会返回错误的主要内容,如果未能解决你的问题,请参考以下文章

我在哪里可以获得 cppcheck 代码块插件文件?

即使没有返回行,MySQL/MariaDB FOUND_ROWS 也会返回 1

cppcheck 输出路径似乎错误

golang标准库--io

即使标题正确,POST 调用也会返回 CORS 错误

Arduino 上的模拟读数返回错误值