问题标签 [pc-lint]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 在 typedef 之外使用修饰符或类型“无符号”[MISRA 2012 Directive 4.6,咨询]
我将 MACRO#define
用于不同的数据类型,如下所示。
无论我在哪里使用这些MACROs
.
在 typedef 之外使用修饰符或类型“无符号”[MISRA 2012 Directive 4.6,咨询]
在 typedef 之外使用修饰符或类型“短”[MISRA 2012 Directive 4.6,咨询]
在 typedef 之外使用修饰符或类型“long”[MISRA 2012 Directive 4.6,咨询]
无论我在 if 语句中对测试条件进行类型转换,在所有实例中都观察到警告,如下所示。
在 typedef 之外使用修饰符或类型“_Bool”[MISRA 2012 Directive 4.6,咨询]
我提到了SO question,它讨论了这个 bool 类型的查询。但是,除了禁用此规则之外,还有其他方法可以消除这些警告。
c - 不鼓励使用“#undef”:“ssCmd”[MISRA 2012 规则 20.5,咨询]
我正在定义一些宏 -#define
临时内部代码,我#undef
在使用后拥有这些代码。
不允许#undef
宏吗?
观察到的警告:
不鼓励使用“#undef”:“ssCmd”[MISRA 2012 规则 20.5,咨询]
c - 运算符 '++' 的未经允许的操作数 [MISRA 2012 规则 10.1,必需]
我正在尝试修复其他人编写的模块的 Misra 警告。我观察到该++
操作正在enum
.
我提到了关于同一主题的SE 问题。如何解决此错误?我是否需要建议模块所有者来更改实现?
我有目的地在代码中保留enum
这样的内容以了解任何影响。但是,在实际代码中,如下所示。
c - 未引用“void”类型的全局宏“INVALIDATION_ADDR”[MISRA 2012 规则 2.5,咨询]
当我定义MACRO
但未在代码中的任何地方使用时,我观察到了上述警告。但在某些情况下,我也收到MACRO
了代码中正在使用的警告。
我已经定义了宏 - INVALIDATION_ADDR 并在某些地方使用。但是,我观察到了相同的 MISRA 警告。我不确定收到此警告的原因。如何避免此警告。
情况1:
未引用“void”类型的全局宏“INVALIDATION_ADDR”[MISRA 2012 规则 2.5,咨询]
皮棉规则 755
未引用全局宏“符号”(位置)——“全局”宏是在头文件中定义的宏。此消息是针对在非库头文件中定义的宏给出的。该宏不用于构成该程序的任何模块中。此消息在单元检出时被抑制(-u 选项)。
案例二:
未引用“ConditionsEnumType”类型的全局 typedef“ConditionsEnumType”(第 110 行,文件 ITypes.h)[MISRA 2012 规则 2.3,咨询]
皮棉规则 756
未引用全局 typedef 'Symbol' (Location) -- 此消息是针对在非库头文件中声明的 typedef 符号给出的。该符号不用于构成程序的任何模块中。此消息在单元检出时被抑制(-u 选项)。
c - 抑制来自 PC Lint Global Wrap up 的消息?
我已经在我的项目中将第 3 方代码文件设置为库,但我仍然在 PC Lint 输出文件的 Global Wrap-up 中从这些文件(库)中获取消息。有没有办法在全局总结中抑制来自库的消息?我正在使用 PC Lint v9.00
c - 为什么 C 中的警告指令会引发 LINT 错误?
我在使用 MCUXpresso IDE 的 ARM Cortex M 项目中使用 GNU C 和 IAR 编译器。我正在使用 PC-LINT 检查器。
在 IAR 编译器下,我遇到 #warning 指令引发两个 LINT 错误的问题
我能做些什么来解决这个问题?
cmake - CMake 和 PC-Lint Plus - 如何将 CMake 的包含目录列表传递给 Lint?
我正在尝试将 PC-Lint Plus 合并到我的 cmake 项目中,主要是每个PC-Lint 需要一个包含要扫描文件的所有包含路径的列表。如何获取 CMake 中目标递归所需的所有包含路径的列表?.
PC-Lint 正在被调用,但由于并非所有包含都在 PC-Lint 调用中而最终死亡。
我将上面的链接转储到 Lint.cmake 中,并将其包含在我的顶级 CMake 文件中。在我的项目文件中,我添加了:
所以我希望这些线路:
将包含目录列表拉出INCLUDE_DIRECTORIES
.
如果我添加:
在 foreach 循环的正上方,lint_include_directories
两者INCLUDE_DIRECTORIES
似乎都是空的。
我需要做什么才能从 CMake 获取包含目录的完整列表,包括 fromtarget_link_libraries
和target_include_directories
,以提供给 PC-Lint Plus?
lint - PC-Lint 如何从包含文件中排除消息?
我正在为我的 C 项目使用 PC lint。我想排除所有与包含文件相关的消息。我已尝试添加+libh(*.h)
或+libh(*core_cm4.h)
但我仍然从包含文件中获取所有错误。唯一一次如果我添加,我什么也得不到,-w0
但我只想要所有源文件的信息、警告和错误。
c - 如何抑制 PC lint 中符号的单个 MISRA 2004 规则
我在启用 MISRA 2004 检查的 PC-Lint 在线演示网站上的代码片段下方进行 linting
PC Lint 然后告诉我,我违反了 MISRA 2004 规则:
注释 960:违反 MISRA 2004 所需规则 16.1,函数具有可变数量的参数:
printf_
注释 960:违反 MISRA 2004 所需规则 16.9,使用不带“&”或带括号的参数列表的函数标识符:
printf_
如何仅抑制 MISRA 2004 规则 16.1 的功能printf_
?
到目前为止,我已经尝试了以下解决方案,以下都不适合我:
-esym(960, 16.1)
禁止所有其他符号的 MISRA 规则 16.1-estring(960, "printf_")
禁止printf_
符号的所有其他 MISRA 规则,例如规则 16.9-estring(960, "function has variable number of arguments: 'printf_'")
根据手册假设可以工作,但我无法实现-estring(960, "function has variable number of arguments:", "printf_")
来自以下网站的一些实验性提示Matthias Kraaz 的博客也不起作用
我现在得到的最好的是:
- 放入
printf_
block of-esym(960, 16.1) ... +esym(960, 16.1)
,但是这会将 MISRA 2004 警告提升到错误级别,并在将发生另一次违规时停止编译。
我期待着你的想法。
c++ - PCLint“此文件需要编译器和库支持”错误
我一直在尝试运行 PC-Lint 并且通过各种尝试它仍然给我这个错误
我知道这个问题与 C++ 标准有关,但我不知道如何在 pclint 中解决它。我尝试了 -std=c++11
等效的方法-A(C++11)
,但错误仍然存在。
知道如何解决这个问题吗?