c - IAR EWARM PC-LINT 禁止来自包含 -header 选项的 header 的消息

标签 c lint iar pc-lint

我正在使用 IAR EWARM 7.4

我已按照此处的说明进行操作:http://www.safetycritical.info/library/static/pc-lint/ewb-pclint-v2.pdf

我使用 --predef_macros 编译器选项创建了一个充满编译器定义的 header

--predef_macros C:\lint\lnt\iar-ewarm-predefined_macros_for_PC-lint.h

在 iar-co-arm-v6.lnt 中,我添加了以下内容:

//
//    EWARM extended defines
//
-header(C:/lint/lnt/iar-ewarm-predefined_macros_for_PC-lint.h)

检查该文件中是否存在大量 MISRA 违规行为。

编辑: 我尝试添加行

+libh(C:/lint/lnt/iar-ewarm-predefined_macros_for_PC-lint.h)

这减少了许多 MISRA 违规行为,但我仍然收到一些,例如:

#define __CODE_MEMORY_LIST1__() __CODE_MEM_HELPER1__(__code, 0)
        ^
"LINT: C:\lint\lnt\iar-ewarm-predefined_macros_for_PC-lint.h (150, 9) Note 9026: Function-like macro, '__CODE_MEMORY_LIST1__', defined [MISRA 2012 
Directive 4.9, advisory]"

#define __CODE_MEMORY_LIST2__(_P1) __CODE_MEM_HELPER2__(__code, 0, _P1)
        ^
"LINT: C:\lint\lnt\iar-ewarm-predefined_macros_for_PC-lint.h (151, 9) Note 9026: Function-like macro, '__CODE_MEMORY_LIST2__', defined [MISRA 2012 
Directive 4.9, advisory]"

最佳答案

所有这些消息都是使用 au-misra3.lnt 文件中的 +elib() 参数显式打开的。这就是为什么它们默认情况下没有启用的原因。

此外,当我使用 -elib() 抑制它们时,它不起作用,因为当我包含 au-misra3.lnt 文件时,它们被重新启用。

所以答案是,包含 au-misra3.lnt 文件,然后手动抑制我不关心看到的有关库文件的所有消息,因为这比修改 lint 附带的文件或提供我自己的文件更透明MISRA 文件。

关于c - IAR EWARM PC-LINT 禁止来自包含 -header 选项的 header 的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30494826/

相关文章:

c - 为什么我的 malloc 在 lubuntu 上的 netbeans 中导致找不到源错误 (malloc.c)?

sass - 单文件组件中的 Lint SCSS/SASS PhpStorm 中的 Vue.js

c - 错误[P​​e142] : expression must have pointer-to-object type

c - RGB888(24位)转PNG/JPEG图像算法

c++ - 添加断点并运行程序时无法访问地址处的内存

c - 麻烦在 C 中进行总计

android-resources - 扫描Android Studio 3.0中未使用的资源

android - 可能 overdraw : Root element paints background with a theme that also paints a background

c++ - 如何在 ARM 的 IAR 嵌入式工作台中编译包含 C 和 C++ 源文件的项目?

batch-file - IAR 命令行工具 "iarbuild"可以全部构建吗?