Cppcheck允许您创建自己的规则文件,但我不知道cppcheck的功能公开了多少。
是否有人从事执行JSF或MISRA规则的工作?
发布于 2014-07-24 02:56:48
您将无法将所有MISRA/JSF规则和指令实现为cppcheck规则,主要是那些限制某些C语言特性和构造或与样式相关的规则和指令(我想到的一些规则包括:前/后的空格//->,一行参数的#,使用联合提供不同的内存访问方法,在char之前存在unsigned/signed,等等)。
用户Ira Baxter几乎在comment中回答了另一个涉及cppcheck的问题:不是所有的东西都可以表示/简化为模式。依赖于自定义规则的模式继承使得处理和检测更高级别的问题变得困难,例如,与类型类型相关的问题(例如,类型上的();您必须解析和收集用作类型表示的标记(类型定义,枚举)),继承(例如,类,包括。派生类,同时用作虚拟和非虚拟)和作用域。这些都需要硬编码到cppcheck中(你可以随时派生cppcheck...)
无论如何,您是否接触过MISRA (或JSF)规则?这是一个项目的要求吗?如果没有,您可以获取MISRA指南的副本(您已经有JSF指南),并检查您可以使用PCRE模式实现的指南。如果这是一个要求,我建议您“投资”一个商业产品,检查MISRA/JSF指南,并使用这两个工具。
最后要注意的是:您不需要所有的MISRA/JSF规则,许多工具都遗漏了其中的一小部分。
发布于 2014-07-19 02:12:26
据我所知,通过查看文档,它看起来相当暴露。http://cppcheck.sourceforge.net/manual.pdf。
发布于 2018-09-01 14:12:20
Cppcheck支持MISRA。下面是关于支持的规则的概述:supported MISRA rules
https://stackoverflow.com/questions/15188219
复制相似问题