cppcheck的规则集

时间:2013-03-03 17:08:14

标签: c++ testing static-code-analysis cppcheck safety-critical

Cppcheck允许您创建自己的规则文件,但我不知道暴露了多少cppcheck的功能。

是否有人在处理强制执行JSFMISRA规则的集合?

3 个答案:

答案 0 :(得分:11)

您无法将所有MISRA / JSF规则和指令实现为cppcheck规则,大多数只是限制某些C语言特性和结构或与样式相关的直接规则(有些人会想到:空格之前/之后./->,单行参数#,使用联合提供访问内存的不同方法,在char之前存在unsigned / signed等等。

用户Ira Baxter在另一个触及cppcheck的问题上,在comment中几乎把它钉在了一起:并非所有内容都可以表示/简化为模式。依靠模式用于自定义规则,很难处理和检测更高级别的问题,例如与类型 相关(例如类型上的sizeof();您将拥有解析和收集用作类型表示的标记(typedef,enums)继承 (例如,类,包括派生的,用作虚拟和非虚拟) 范围。那些需要硬编码到cppcheck(你可以总是fork cppcheck ...)

无论如何,您是否触及过MISRA(或JSF)规则?这是项目的要求吗?如果没有,您可以获取MISRA指南的副本(您已经有JSF指南)并检查可以使用PCRE模式实现的指南。如果这是一项要求,我建议你"投资"在商业产品中检查MISRA / JSF指南并使用这两种工具。

最后一点:您不需要所有MISRA / JSF规则,许多工具只留下一小部分工具。

答案 1 :(得分:1)

据我所知,通过文档查看,它看起来非常暴露。 http://cppcheck.sourceforge.net/manual.pdf

答案 2 :(得分:1)

Cppcheck具有MISRA支持。以下是有关受支持规则的概述:enter image description here