IAR EWARM PC-LINT禁止-header选项附带的标头中的消息

时间:2015-05-27 23:29:39

标签: c lint iar pc-lint

我正在使用IAR EWARM 7.4

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

我使用--predef_macros编译器选项

创建了一个充满编译器定义的标头
--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]"

1 个答案:

答案 0 :(得分:0)

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

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

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