问题标签 [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 - PC-Lint 如何处理中断?
我有以下 PIC 控制器的代码片段:
当我使用 PC-Lint 时,我总是收到错误消息:
错误 10:需要标识符或其他声明符
如何处理 PC-Lint 中的中断?
c - const 指针的声明与 const 整数的声明
任何人都可以向我解释以下两个代码块之间的区别:
可以声明一个 const 指针,然后给它赋值,但不能声明一个普通变量,然后给它赋值。有人可以向我解释一下吗?
我收到一个 pc-lint 错误,我必须在函数内声明 const 变量,但我做不到。我怎样才能摆脱这个错误?
太感谢了。
c - 依赖于 C/C++ 运算符优先级;运算符 '&&' 和 '==' [MISRA 2012 规则 12.1,建议] | 克林特 9050
我需要试试吗
1)
经过上述更改后,我现在观察到错误:
条件表达式应该具有本质上的布尔类型 [MISRA 2012 规则 14.4,必需]
c - 函数指针和另一种类型之间的转换 [MISRA 2012 规则 11.1,必需] | pclint 9074
我正在使用如下函数指针数组来避免switch
代码中的语句。
但是在运行 misra (pclint) 时,我收到以下错误:
函数指针和另一种类型之间的转换 [MISRA 2012 规则 11.1,必需]
我需要使用typedef
吗?
我尝试如下,但没有奏效。
c - 可以在块范围内定义变量“EL_adv”[MISRA 2012 Rule 8.9,advisory] | pclint 9003 和 pclint 9075
我在我的.c
文件中声明了静态全局变量,如下所示。我正在为少数静态变量而不是所有静态变量观察这个问题。对于某些静态变量,它不会引发任何警告。
我收到以下 MISRA 警告:
“可以在块范围内定义变量 'EL_adv' [MISRA 2012 规则 8.9,咨询] | pclint 9003”
如果我删除静态,那么我会收到如下错误。
“在没有事先声明的情况下定义的外部符号 'EL_adv' [MISRA 2012 规则 8.4,必需] | pclint 9075”
我正在使用如下代码,我将在 fun1 中获取变量的值,并将使用 fun2 和 fun3 中的值。
c - __asm 和 PCLint 9.0L 错误 14:先前定义的符号 'TS_IntDisableAsm(void)'
我将 PCLint-Check 9.0L 用于项目,并在对项目的所有 Lint-Object-Files(*.lob) 进行 Lint-Check 期间收到当前错误消息:
- W:\DevWA\src\Platforms_h\TSPlatforms.h错误 14:符号 'TS_IntDisableAsm(void)' 先前定义(第 90 行,文件 W:\DevWA\src\Platforms_h\TSPlatforms.h,模块 TSPlatforms.c)
PCLInt 帮助手册在这里解释: Symbol 'Symbol' previous defined (Location) -- 命名对象已被第二次定义。
但是在第 90 行的 TSPlatforms.h 中的整个项目中只存在以下定义:
TSPlatforms.h 多次包含在我项目的不同 C 文件中,但代码当然包含在重新定义保护中:
有没有人提示我识别错误?
谢谢!海杰
c - PC Lint 标头错误解析,错误 129:预期声明,标识符“T_TEST_ID”被忽略
运行 PC Lint 分析 (v9.0),我在包含头文件test_file.h的源文件test_file.c上收到这些错误
这是在test_file.henum
中声明的方式:
这是 PC Lint 输出:
-- 模块:.../test_file.c
错误 129:需要声明,忽略标识符“T_TEST_ID”
错误 19:无用声明
信息 808:没有给定
符号“T_TEST_ID”的显式类型,假定为 int [MISRA 2012 规则 8.1,必需]
使用详细选项,我可以确认test_file.h被包含为标题(hdr)以分析test_file.c:
包括文件 D:..\test_file.h (hdr)
T_TEST_ID
在这些错误之后,由于PC Lint 不知道,我收到了许多其他错误。关于可能是什么问题以及如何解决它的任何想法?这似乎是一个解析错误,但也可能是 PC Lint 配置错误。
注意:此代码编译正常,编译器没有报告错误/警告。
iar - 如何解决与 IAR Embedded Workbench ARM 库头文件相关的问题,以便在 IAR 中成功运行 PC-Lint?
当我在 IAR Workbench 上的代码上运行 PC-Lint 时,它与yvals.h
我在下面包含的库头文件中存在的代码片段冲突,然后 PC-Lint 停止工作。
我使用的 IAR 编译器版本是co-iar.lnt
. 我从 PC-Lint 配置文件中选择了这个编译器版本。
c - 有没有办法获取被抑制的 lint 消息的报告?
我正在使用 PC-Lint Plus 并在整个源代码中抑制了一些 lint 警告。PC-Lint Plus 中是否有一种方法可以获取有人抑制软件风险分析警告的行号(或文件名)报告?这将有助于评估某些被忽略/抑制的警告是否有充分的理由忽略/抑制或应该处理。
visual-studio - Visual Studio CMake 构建日志添加项目路径并中断错误解析
我设法将 PC-Lint 设置为可在 Visual Studio 2019 中使用的 CMake 项目的自定义目标。
这个目标可以用 Visual Studio 很好地构建,并且 PC-Lint 可以正常工作。PC_Lint 配置为使用选项将所有发现作为错误输出-"format=%(%f %l %)error %n: (%t -- %m)"
。问题是,在构建日志输出中,Visual Studio 会将项目补丁添加到打印错误的每一行,如下所示:
Visual Studio 将能够解析此输出,因此错误显示在错误列表中,但它将文件解析为“ G ”,因为在解析上面的行时,这显然来自正则表达式。
从 PC-Lint 格式中删除文件-"format=%(%l %)error %n: (%t -- %m)"
会导致输出
现在当然VS将文件解析为“ EXEC ”。
似乎 Visual Studio 期望 PC-Lint 输出不带路径的文件名,但添加它会破坏它。我不明白为什么会发生这种情况,因为它没有在其他行中添加路径:
这是我的配置,Ninja 和 Visual Studio 16 2019 生成器都提供相同的结果。请注意,我有一个没有继承环境的自定义编译器,但是对于这个 LINT 目标,编译器甚至没有被调用,所以我不明白为什么会出现问题。
我还尝试使用 Visual Studio 安装目录中的 cmake.exe 从命令行构建此目标,并且错误输出中没有附加额外的路径,因此这绝对是 Visual Studio 的问题。我在这里看到了一些关于“/FC”(诊断标志中源代码文件的完整路径)的报告,但对我来说,项目文件没有生成,所以我无法修改它们。我不知道为什么没有项目/解决方案文件,因为在过去的某个时候它们是自动生成的,但由于我真的不需要它们(也不想依赖它们),所以我从未调查过这个问题。