cppcheck 允许您创建自己的规则文件,但我不知道 cppcheck 的功能暴露了多少。
3 回答
您将无法将所有 MISRA/JSF 规则和指令实现为 cppcheck 规则,主要是限制某些 C 语言功能和结构或与样式相关的简单规则(想到的一些:之前/之后的空格 ./ ->,单行上的参数#,使用联合来提供访问内存的不同方法,在 char 之前存在无符号/有符号等)。
用户Ira Baxter在对涉及 cppcheck 的另一个问题的评论中几乎将其钉牢:并非所有事物都可以表示/简化为模式。依赖于自定义规则的模式使得难以处理和检测更高级别的问题,例如与类型相关的问题 (例如类型上的 sizeof();您必须解析和收集用作类型表示的标记(typedef、枚举)),继承 (例如类,包括派生类,用作虚拟和非虚拟)和范围。那些需要硬编码到 cppcheck 中(你总是可以 fork cppcheck ...)
无论如何,您是否接触过 MISRA(或 JSF)规则?这是项目的要求吗?如果没有,您可以获取一份 MISRA 指南(您已经拥有 JSF 指南)并检查您可以使用 PCRE 模式实现的指南。如果这是一个要求,我建议您“投资”一个商业产品,它会检查 MISRA/JSF 指南并使用这两种工具。
最后一点:您不需要所有的 MISRA/JSF 规则,并且许多工具会忽略其中的一小部分。
据我所知,翻阅文档,它看起来很暴露。http://cppcheck.sourceforge.net/manual.pdf。
Cppcheck 支持 MISRA。以下是有关受支持规则的概述:受支持的 MISRA 规则