我正在使用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]"
最佳答案
使用au-misra3.lnt文件中的+ elib()参数明确打开了所有这些消息。这就是为什么默认情况下未启用它们。
另外,当我使用-elib()禁止显示它们时,它不起作用,因为当包含au-misra3.lnt文件时,它们被重新启用。
因此,答案是,包括au-misra3.lnt文件,然后手动隐藏所有我不在乎有关库文件的消息,因为这样做更加透明,然后修改lint附带的文件或为MISRA提供我自己的文件。