自定义 cppcheck 规则集

Posted

技术标签:

【中文标题】自定义 cppcheck 规则集【英文标题】:Customize cppcheck ruleset 【发布时间】:2015-01-22 16:02:11 【问题描述】:

我正在使用 Cppcheck 进行静态代码分析。我想要实现的是在“严重性”方面修改一些规则,例如,我想从 style 更改规则 uninitMemberVar 的严重性警告(这只是一个例子)。

有没有办法做到这一点? 在哪里可以找到完整的 cppcheck 规则集?

【问题讨论】:

【参考方案1】:

我是一名 Cppcheck 开发人员。

uninitMemberVar 已经是一个警告。我建议您使用 --xml-version=2。

为了您的信息,默认的 --xml 格式是版本 1。在这种格式中,只有错误和样式。所有非错误消息都显示为样式。由于与旧插件/脚本/工具的兼容性,此格式是默认格式 - 但也许我们可以考虑现在将第 2 版设为默认格式,因为我们多年来一直推荐第 2 版。

要获取所有错误消息的列表,请使用 --errorlist。例如:

cppcheck --errorlist --xml-version=2

【讨论】:

我有一个疑问,我可以编辑该错误列表并将其用作自定义规则集吗?顺便说一句,将 unitMemberVar 从样式更改为警告只是一个示例。我想更改我需要的任何规则的严重性 如果这还不够,那么我建议您编辑报告。例如,您可以使用 xslt。 我运行 cppcheck --errorlist --xml-version=2 并将输出保存在名为 my-rules.xml 的文件中,然后我尝试运行 cppcheck --rule-file=my-rules .xml file.c,但我收到错误 cppcheck: error: unrecognized command line option: "--rule-file=my-rules.xml" 我意识到规则文件选项从版本 1.65 开始,我将“unusedVariable”的严重性从样式更改为警告,但它仍然在输出报告中显示严重性“样式” Cppcheck 将始终在输出报告中将“unusedVariable”输出为“style”。您必须编辑输出报告.. 例如使用脚本或 xslt 或其他东西。

以上是关于自定义 cppcheck 规则集的主要内容,如果未能解决你的问题,请参考以下文章

CppCheck 自定义规则不显示消息

Spark 数据集自定义分区器

CppCheck 规则不显示#define,注释

带有自定义 Malloc 函数的 CppCheck

iOS效果集自绘制酷炫粒子效果合成图片

iOS效果集自绘制酷炫粒子效果合成图片