问题标签 [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.

0 投票
2 回答
1094 浏览

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 类型的查询。但是,除了禁用此规则之外,还有其他方法可以消除这些警告。

0 投票
1 回答
159 浏览

c - 不鼓励使用“#undef”:“ssCmd”[MISRA 2012 规则 20.5,咨询]

我正在定义一些宏 -#define临时内部代码,我#undef在使用后拥有这些代码。

不允许#undef宏吗?

观察到的警告:

不鼓励使用“#undef”:“ssCmd”[MISRA 2012 规则 20.5,咨询]

0 投票
2 回答
397 浏览

c - 运算符 '++' 的未经允许的操作数 [MISRA 2012 规则 10.1,必需]

我正在尝试修复其他人编写的模块的 Misra 警告。我观察到该++操作正在enum.

我提到了关于同一主题的SE 问题。如何解决此错误?我是否需要建议模块所有者来更改实现?

我有目的地在代码中保留enum这样的内容以了解任何影响。但是,在实际代码中,如下所示。

0 投票
1 回答
324 浏览

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 选项)。

0 投票
1 回答
494 浏览

c - 抑制来自 PC Lint Global Wrap up 的消息?

我已经在我的项目中将第 3 方代码文件设置为库,但我仍然在 PC Lint 输出文件的 Global Wrap-up 中从这些文件(库)中获取消息。有没有办法在全局总结中抑制来自库的消息?我正在使用 PC Lint v9.00

0 投票
0 回答
286 浏览

c - 为什么 C 中的警告指令会引发 LINT 错误?

我在使用 MCUXpresso IDE 的 ARM Cortex M 项目中使用 GNU C 和 IAR 编译器。我正在使用 PC-LINT 检查器。

在 IAR 编译器下,我遇到 #warning 指令引发两个 LINT 错误的问题

我能做些什么来解决这个问题?

0 投票
1 回答
790 浏览

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_librariestarget_include_directories,以提供给 PC-Lint Plus?

0 投票
1 回答
275 浏览

lint - PC-Lint 如何从包含文件中排除消息?

我正在为我的 C 项目使用 PC lint。我想排除所有与包含文件相关的消息。我已尝试添加+libh(*.h)+libh(*core_cm4.h)但我仍然从包含文件中获取所有错误。唯一一次如果我添加,我什么也得不到,-w0但我只想要所有源文件的信息、警告和错误。

0 投票
0 回答
574 浏览

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 警告提升到错误级别,并在将发生另一次违规时停止编译。

我期待着你的想法。

0 投票
0 回答
113 浏览

c++ - PCLint“此文件需要编译器和库支持”错误

我一直在尝试运行 PC-Lint 并且通过各种尝试它仍然给我这个错误

我知道这个问题与 C++ 标准有关,但我不知道如何在 pclint 中解决它。我尝试了 -std=c++11等效的方法-A(C++11),但错误仍然存​​在。

知道如何解决这个问题吗?