您好、Hercules 团队、
用户正在尝试使用 CCS v7检查 Halcogen 4.06.00生成代码的 MISRA-C 兼容性。 有许多警告。 这很容易复制。 我使用 Halcogen 创建了一个新的 RM42项目、并且刚刚保存了生成的文件。 然后、我创建了一个新的空 CCS v7工程、该工程使用 ARM 编译器16.9.3.LTS。 我为 CCS 工程启用了"All" MISRA 检查。 只需构建单个源文件(adc.c)、我就会收到数十条警告。 然后、我更改为仅"必需" MISRA 检查。 我收到的警告要少得多、但仍然有警告。 一些警告与包含来自编译器的文件有关。 但其他文件来自 Halcogen 生成的源文件(adc.c)本身。 例如:
PTR++;
"./source/adc.c "、第446行:警告#1476-D:(MISRA-C:2004 17.4/R)数组索引应是唯一允许的指针算术形式
CCS 应检查与 MISRA-C:2004的兼容性、与 Halcogen 应该兼容的版本相同。 我看到关于这一问题的其他几个较旧的帖子,答复表明,已使用 LDRA 的一个工具对 Halcogen 合规性进行了评估。 但是、我认为我上面给出的示例非常简单、如果使用任何工具、这将是违规行为、不是吗?
如果无法通过我们自己的 CCS 检查、用户如何对 Halcogen MISRA 合规性充满信心?
还有其他建议/意见吗?
----
更新:我看到 PTR++代码行在代码注释中似乎引用了一个弃权声明:
"./source/adc.c "、第446行:警告#1476-D:(MISRA-C:2004 17.4/R)数组索引应是唯一允许的指针算术形式
还可以。 但还有其他警告、我无法理解。 例如:
返回 ADC->EVTIN;
"./source/adc.c "、第856行:警告#1423-D:(Misra-C:2004 17.6/R)不应将具有自动存储的对象的地址分配给在第一个对象停止存在后可能保留的另一个对象("ADC")
我看不到自动 var 的地址被分配给持久性对象的位置。 代码行将值返回到调用函数。
----
谢谢、此致、
David