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

0 投票
1 回答
130 浏览

c - 无法摆脱夹板警告“定义前使用的字段”,“使用的右值在某些执行时可能未初始化为值”

我正在努力摆脱以下代码的夹板警告:

警告是(在“printf”行):

定义前使用的字段 pPrinterInfo->pPrinterName

1> 使用的右值在某些执行时可能未初始化为值

大概它假设pPrinter尚未填充。我试过SetPrinter/*@out@*/s 等标记标题定义,但它没有帮助。我在头文件中尝试了一堆注释,例如/*@temp@*//*@dependent@*/无济于事。

我如何明智地让夹板知道 pPrinter 字段在调用后应该是有效的GetPrinter

0 投票
2 回答
148 浏览

c - 在夹板的帮助下删除我的代码中的安全漏洞

任何人都可以帮我修复此代码吗?由于我是 C 新手,所以我不太了解。我正在使用 Splint 来查找代码中的安全漏洞。

夹板输出

0 投票
0 回答
68 浏览

c++ - Splint - 由于编译器特定的关键字导致解析错误 -__attribute__((weak))

目前,由于编译器特定的关键字,我遇到了解析错误,我不知道如何解决它们。

这是示例:关键字__attribute__在双括号中具有参数((weak))。我试过 -D 技巧来忽略关键字,但它不起作用,因为 Splint 抱怨括号。

我试图用它来隔离关键字#ifndef S_SPLINS_S并且它有效,但是我在文件中有太多关键字,我可能会在编辑时变老。

来自 Splint 的错误消息:

有没有更优雅的方法呢?

还有一件事情。

我正在努力寻找可以禁用从标准 C 库(如(stdio.h、math.h、...))内部报告的警告的命令。我想禁用它们,因为我对此无能为力。

谢谢你的支持 !!

0 投票
3 回答
858 浏览

c - C 移位表达式是否具有无符号类型?为什么 Splint 会警告右移?

对于以下程序:

...夹板 3.1.2 给出警告:

Splint 似乎声称有符号整数右移的表达式具有无符号整数的类型。但是,我在 ANSI C90 标准中只能找到:

结果E1 >> E2E1右移的E2位位置。如果E1有无符号类型或E1有符号类型和非负值,则结果的值是 的商E1除以数量的整数部分,2 的幂E2

此代码的主要目标是具有主要 C90 编译器的嵌入式系统。但是,我对编写符合标准的代码很感兴趣。我一直在 C99 模式下对 GCC 和 Clang 进行测试,这样就restrict可以了。

我的问题是:

  1. C 标准是否对位移结果的类型做出任何声明?
  2. 编译器吗?
  3. 如果不是,为什么 Splint 会发出此警告?
0 投票
0 回答
55 浏览

c - 为什么 Splint 不会警告“变量在使用前重新分配”?

这是代码

我用夹板检查了代码,它说“没有警告”。实际上,a在使用旧值 2 之前重新分配了 3。这可能预示着潜在的缺陷。

我应该传递哪些命令行参数来查找缺陷,或者夹板只是忽略了问题?

0 投票
1 回答
89 浏览

c - 如何解决“int32 l[2]”的夹板解析错误

我有一些 C 代码,其中包含专有旧应用程序的标头。我无法修改标题。我收到以下代码的夹板解析错误:

是否有任何参数可以传递给夹板以使其正常工作?

该平台是 64 位的,但旧版应用程序是 32 位的。

我正在运行夹板:

如果没有 -preprox 和 -warnposix,我会在遗留标头中收到很多其他错误。

0 投票
1 回答
35 浏览

c - 如果逻辑流,使用夹板检测总是错误的

可以用夹板设置一个标志来检测这个逻辑故障吗?

第二个变量a是一个错字。它应该是b

我试过了+ifempty+ifblock结果证明它们是为了别的东西。有什么建议么?还是超出了夹板?

0 投票
2 回答
98 浏览

c - 为什么夹板建议{0}并没有真正将C中的所有元素初始化为零:初始化器没有定义声明数组的所有元素

在这段代码中(整个文件只包含一行):

用夹板检查,我得到以下提示:

Initializer 没有定义声明数组的所有元素。这令人费解:我读了一些 SO 答案,但他们都声称{ 0 }确实将所有元素初始化为零。


夹板版本:

Splint.org下载。

0 投票
1 回答
171 浏览

c - 在 C 项目上运行 Splint | 包括问题并在一个完整的项目上运行

我正在尝试运行 Splint 来分析 C 存储库(在本例中为 sudo 命令的源代码),但无法让 Splint 自行查找单个文件的标头。在这种情况下,生成的头文件“config.h”位于项目的根文件夹中。我添加了项目根文件夹的包含路径和项目的“包含”文件夹(大多数头文件所在的位置)。下面我添加了一个屏幕截图,显示头文件确实位于项目的根目录中,并且随后的错误表明在包含该目录的路径中找不到头文件。

夹板未找到包含路径中的标头:

我的问题的另一部分也可能有点难以回答。我在这里找到了在单个文件上运行 Splint 的人的示例,但在诸如此类的完整项目上却没有。在有人用一个好的 'ol RTFM 打我之前,我已经通读了操作部分、“完整程序”部分和附录 B,其中说明了 Splint 支持的每个标志,但我在任何地方都找不到指示我如何运行 Splint 的东西在一个完整的项目上。如果我忽略了它,我会感谢任何发现它的人。(是任何有兴趣的人的手册!)

0 投票
1 回答
58 浏览

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