问题标签 [splint]
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 - 无法摆脱夹板警告“定义前使用的字段”,“使用的右值在某些执行时可能未初始化为值”
我正在努力摆脱以下代码的夹板警告:
警告是(在“printf”行):
定义前使用的字段 pPrinterInfo->pPrinterName
1> 使用的右值在某些执行时可能未初始化为值
大概它假设pPrinter
尚未填充。我试过SetPrinter
用/*@out@*/
s 等标记标题定义,但它没有帮助。我在头文件中尝试了一堆注释,例如/*@temp@*/
,/*@dependent@*/
无济于事。
我如何明智地让夹板知道 pPrinter 字段在调用后应该是有效的GetPrinter
?
c - 在夹板的帮助下删除我的代码中的安全漏洞
任何人都可以帮我修复此代码吗?由于我是 C 新手,所以我不太了解。我正在使用 Splint 来查找代码中的安全漏洞。
c++ - Splint - 由于编译器特定的关键字导致解析错误 -__attribute__((weak))
目前,由于编译器特定的关键字,我遇到了解析错误,我不知道如何解决它们。
这是示例:关键字__attribute__
在双括号中具有参数((weak))
。我试过 -D 技巧来忽略关键字,但它不起作用,因为 Splint 抱怨括号。
我试图用它来隔离关键字#ifndef S_SPLINS_S
并且它有效,但是我在文件中有太多关键字,我可能会在编辑时变老。
来自 Splint 的错误消息:
有没有更优雅的方法呢?
还有一件事情。
我正在努力寻找可以禁用从标准 C 库(如(stdio.h、math.h、...))内部报告的警告的命令。我想禁用它们,因为我对此无能为力。
谢谢你的支持 !!
c - C 移位表达式是否具有无符号类型?为什么 Splint 会警告右移?
对于以下程序:
...夹板 3.1.2 给出警告:
Splint 似乎声称有符号整数右移的表达式具有无符号整数的类型。但是,我在 ANSI C90 标准中只能找到:
结果
E1 >> E2
是E1
右移的E2
位位置。如果E1
有无符号类型或E1
有符号类型和非负值,则结果的值是 的商E1
除以数量的整数部分,2 的幂E2
。
此代码的主要目标是具有主要 C90 编译器的嵌入式系统。但是,我对编写符合标准的代码很感兴趣。我一直在 C99 模式下对 GCC 和 Clang 进行测试,这样就restrict
可以了。
我的问题是:
- C 标准是否对位移结果的类型做出任何声明?
- 编译器吗?
- 如果不是,为什么 Splint 会发出此警告?
c - 为什么 Splint 不会警告“变量在使用前重新分配”?
这是代码
我用夹板检查了代码,它说“没有警告”。实际上,a
在使用旧值 2 之前重新分配了 3。这可能预示着潜在的缺陷。
我应该传递哪些命令行参数来查找缺陷,或者夹板只是忽略了问题?
c - 如何解决“int32 l[2]”的夹板解析错误
我有一些 C 代码,其中包含专有旧应用程序的标头。我无法修改标题。我收到以下代码的夹板解析错误:
是否有任何参数可以传递给夹板以使其正常工作?
该平台是 64 位的,但旧版应用程序是 32 位的。
我正在运行夹板:
如果没有 -preprox 和 -warnposix,我会在遗留标头中收到很多其他错误。
c - 如果逻辑流,使用夹板检测总是错误的
可以用夹板设置一个标志来检测这个逻辑故障吗?
第二个变量a
是一个错字。它应该是b
。
我试过了+ifempty
,+ifblock
结果证明它们是为了别的东西。有什么建议么?还是超出了夹板?
c - 为什么夹板建议{0}并没有真正将C中的所有元素初始化为零:初始化器没有定义声明数组的所有元素
在这段代码中(整个文件只包含一行):
用夹板检查,我得到以下提示:
Initializer 没有定义声明数组的所有元素。这令人费解:我读了一些 SO 答案,但他们都声称{ 0 }
确实将所有元素初始化为零。
夹板版本:
从Splint.org下载。
c - 在 C 项目上运行 Splint | 包括问题并在一个完整的项目上运行
我正在尝试运行 Splint 来分析 C 存储库(在本例中为 sudo 命令的源代码),但无法让 Splint 自行查找单个文件的标头。在这种情况下,生成的头文件“config.h”位于项目的根文件夹中。我添加了项目根文件夹的包含路径和项目的“包含”文件夹(大多数头文件所在的位置)。下面我添加了一个屏幕截图,显示头文件确实位于项目的根目录中,并且随后的错误表明在包含该目录的路径中找不到头文件。
我的问题的另一部分也可能有点难以回答。我在这里找到了在单个文件上运行 Splint 的人的示例,但在诸如此类的完整项目上却没有。在有人用一个好的 'ol RTFM 打我之前,我已经通读了操作部分、“完整程序”部分和附录 B,其中说明了 Splint 支持的每个标志,但我在任何地方都找不到指示我如何运行 Splint 的东西在一个完整的项目上。如果我忽略了它,我会感谢任何发现它的人。(这是任何有兴趣的人的手册!)
c - Solving and fixing vulnerability pointed by the static analysis tool SPLINT
I was working on my project and tried to run splint to see some hidden vulnerability and improve the my quality of code and I ran splint on one of my .c files of the project and I came across these 4 warnings
I am not quite sure about the steps I should take to eliminate vulnerabilities The .c file is given below
Can someone please guide me with these errors as I am a newbie to handling these errors
THE ERRORS ARE REPEATED AND JUST SOLVING 2 OF THEM WILL RESOLVE THE ENTIRE FILE