为 cppcheck 编写自定义规则

Writing Custom rules for cppcheck

我正在使用 cppcheck 进行静态分析。为了加快审查过程,我想设置 cppcheck 来寻找一些自定义规则, 例如检查 geter 函数是否定义为 const.

如果有人有为 cppcheck 编写自定义规则的经验,请提供一些示例来编写自定义规则?

P.S 我做了一些研究以找到一种工具,它可以让我编写自定义规则并加快审核过程。 我已找到有关此主题的这些链接

What open source C++ static analysis tools are available?

C++ static code analysis tool on Windows

A free tool to check C/C++ source code against a set of coding standards?

我是 Cppcheck 开发人员。

您或许可以使用 --rule 和 --rule-file 选项来添加此类规则。也许您可以使用正则表达式,例如:

\sget[A-Za-z]+\(\)\s+{\s+return

这取决于您的代码库。

如果您可以编写正则表达式,那么这是创建自定义规则最直接、最简单的方法。

有关详细信息,请阅读此处的 "Writing rules" 篇文章: http://sourceforge.net/projects/cppcheck/files/Articles/

但也许您想编写更复杂的规则来搜索此类 getter 方法,方法是使用 Cppcheck SymbolDatabase、tokenlist 和语法树。那么您不能使用 --rule 和 --rule-file 。那么你有这些选择:

  • 使用 --dump 并编写您自己的自定义脚本来读取输出数据 (xml)。
  • 编写C++代码并编译成Cppcheck。恕我直言,这是相对简单的,但需要您自己编译 Cppcheck。