IAR EWARM PC-LINT 禁止来自 header 的消息包含在 -header 选项中
IAR EWARM PC-LINT Inhibiting messages from a header included with the -header option
我正在使用 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)
Lint 它抱怨该文件中有大量 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 提供我自己的文件。
我正在使用 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)
Lint 它抱怨该文件中有大量 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 提供我自己的文件。