cppcheck允许你创建自己的规则文件,但我不知道cppcheck的功能暴露了多少。
是否有人正在开发一套可以强制执行的JSF http://www.stroustrup.com/JSF-AV-rules.pdf or MISRA http://www.misra-cpp.com/ rules?
您将无法将所有 MISRA/JSF 规则和指令实现为 cppcheck 规则,大多数只是限制某些 C 语言功能和结构或与样式相关的直接规则和指令(想到的一些规则和指令:./ 之前/之后的空格) ->、单行上的参数数量、使用联合来提供访问内存的不同方法、在 char 之前存在无符号/有符号等。
User 艾拉·巴克斯特 https://stackoverflow.com/users/120163/ira-baxter几乎把它钉在了comment https://stackoverflow.com/questions/11966613/why-does-cppcheck-not-find-this-obvious-array-out-of-bounds-error#comment15968165_11976058关于涉及 cppcheck 的另一个问题:并非所有内容都可以表示/简化为模式。依赖模式对于自定义规则使得处理和检测更高级别的问题变得困难,例如与types (例如类型上的 sizeof() ;您必须解析和收集用作类型表示的标记(typedef、枚举)), 遗产 (例如,类,包括派生类,既用作虚拟类又用作非虚拟类), and scope。这些需要被硬编码到 cppcheck 中(你总是可以 fork cppcheck...)
无论如何,您是否接触过 MISRA(或 JSF)规则?这是项目的要求吗?如果没有,您可以获取 MISRA 指南的副本(您已经拥有 JSF 指南)并检查可以使用 PCRE 模式实现的指南。如果这是一项要求,我建议您“投资”一个商业产品,该产品确实检查 MISRA/JSF 指南并使用这两种工具。
最后一点:您不需要所有的 MISRA/JSF 规则,并且许多工具会忽略其中的一小部分。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)