答案 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)