Mar*_*ett 34 c++ testing safety-critical static-code-analysis cppcheck
Cppcheck允许您创建自己的规则文件,但我不知道暴露了多少cppcheck的功能.
joh*_*ait 11
您将无法实现所有MISRA/JSF规则和指令作为cppcheck规则,大多只有光明磊落限制某些C语言功能和结构或者是风格相关的(一些浮现在脑海中:前空格/后./ - >,单行上的参数数,使用联合提供访问内存的不同方法,在char之前存在unsigned/signed等.
用户Ira Baxter在另一个涉及cppcheck的问题的评论中几乎把它钉在了一起:不是所有东西都可以作为模式表示/简化.依赖于自定义规则的模式使得难以处理和检测更高级别的问题,例如与类型 相关(例如类型上的sizeof();您必须解析并收集用作类型表示的标记(typedef,enums),继承 (例如,类,包括派生的,用作虚拟和非虚拟)和范围.那些需要硬编码到cppcheck(你可以总是fork cppcheck ...)
无论如何,你有没有触及MISRA(或JSF)规则?这是项目的要求吗?如果没有,您可以获取MISRA指南的副本(您已经有JSF指南)并检查可以使用PCRE模式实现的指南.如果这是一项要求,我建议您"投资"商业产品,检查MISRA/JSF指南并使用这两种工具.
最后一点:您不需要所有MISRA/JSF规则,许多工具只留下一小部分.