要构建以提供给 cppcheck MISRA 附加组件的正确规则文件是啥?

Posted

技术标签:

【中文标题】要构建以提供给 cppcheck MISRA 附加组件的正确规则文件是啥?【英文标题】:Whats the correct rule file to build to provide to the cppcheck MISRA add-on?要构建以提供给 cppcheck MISRA 附加组件的正确规则文件是什么? 【发布时间】:2019-04-05 12:40:56 【问题描述】:

这是一个关于提供给 misra.py cppcheck 应用程序的规则文件的预期布局和内容的一般问题。

位于 github 上的 cppcheck 源代码: source cppcheck

我的想法有多种?

Appendix A Summary of guidelines
Rule 1.1 
Rule text description

是吗

Appendix A Summary of guidelines
Rule 1.1 
Required:text description of the text

在 MISRA 标准中,他们谈到 DIR 1.1 Rule 1.1 必需、强制、建议。

pdftotext 并使用以下方法 link to misra rule generator 我只得到一个 dir 1.1 的输出

【问题讨论】:

【参考方案1】:

规则文件的格式列在位于 cppcheck 的 GitHub 存储库中的 misra.py 插件文件的使用/帮助输出中。 python misra.py --help 输出使用部分,尽管输出中的换行符在 git bash 和 Windows 命令提示符中被弄乱了,这使得它不太有用。实际的帮助文本在 misra.py 文件中的格式很好:

Format:
<..arbitrary text..>
Appendix A Summary of guidelines
Rule 1.1
Rule text for 1.1
Rule 1.2
Rule text for 1.2
<...>

我还尝试通过问题中链接的misra rule generator 生成规则文件。当在 Windows 中使用 git bash 运行生成器时(它具有脚本所需的 pdftotext 二进制文件),我也只让输出文件包含一个条目(Dir 1.1 )。在 Ubuntu 18.04 中运行生成器会生成一个包含大部分 Misra 规则和指令的大型输出文件。 Git bash 的 pdftotext 报告它的版本是 4.00,而 Ubuntu 中的 pdftotext 报告它的版本是 0.62.0。 pdftotext 在 Git Bash 和 Ubuntu 中生成的输出非常不同,在我的情况下,Misra 规则生成器脚本仅适用于 Ubuntu 的 pdftotext 的输出。

我还注意到 Misra 规则生成器有一个错误,它会覆盖具有相同编号的规则和指令。输出不会同时包含 Dir 1.1 和 Rule 1.1,由于此处的字典处理错误cppcheck-misra-parsetexts.py

,最后解析的将覆盖前者

【讨论】:

以上是关于要构建以提供给 cppcheck MISRA 附加组件的正确规则文件是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何使 cppcheck 在错误时停止

发布“永久”cppcheck 报告

为啥 MISRA-C 检查器提供错误检查 STM32 HAL?

如何在 gcc 编译器中构建 cppcheck 工具?

将 cppcheck 集成到构建系统中

是否合法写入并集中的字节数组并从int读取以在MISRA C中转换值?