问题标签 [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 投票
3 回答
1696 浏览

c - 夹板在包含 complex.h 的代码上失败

我正在尝试splint在包含complex.h标准 C 库的 C 源代码上运行以支持复杂的算术。

不幸的是,splint失败并出现以下错误。

夹板 3.1.2 --- 2009 年 5 月 3 日

/usr/include/bits/cmathcalls.h:54:31:解析错误:非函数声明:_Complex:extern double。(有关解析错误的帮助,请参阅 splint -help parseerrors。) *** 无法继续。

谷歌搜索该问题仅在拆分讨论邮件列表中显示此消息(仍未得到答复)。

有任何想法吗?

更新

这是一个非常简单的失败源示例:

尝试重新定义不受支持的_ComplexC99 关键字会导致复数的虚部出现错误(我想这并不奇怪)。

0 投票
5 回答
10057 浏览

c - 用于 C 的夹板代码分析器

我们计划使用 Splint 作为 C 代码库的代码分析器。但我们之前从未尝试过 Splint 工具,因此我们希望您能就它的优缺点提供意见。

0 投票
0 回答
3418 浏览

parsing - 如何解决 Splint 中的解析错误

Splint 在发现解析错误后没有继续检查。我也尝试过使用 +trytorecover 选项,但没有改变。

请让我知道如何使用 +trytorecover 使 Splint 在解析错误后尝试继续。

这是我收到的,

0 投票
2 回答
617 浏览

c - 这个夹板警告的含义是什么?我可能做错了什么?

这是代码行:

运行夹板 3.1.2 会生成此警告:

命名参数没有区别。

0 投票
2 回答
587 浏览

c - __thread 上的夹板 barfs,它是 C99 的一部分

跑步夹板

在这条线上暂停:

出现解析错误:

检查文档和漱口水没有提到__thread. 然而,它是 Splint 据称支持__thread的 C99 规范的一部分(插入参考)。

这里发生了什么?我怎样才能让夹板识别__thread

0 投票
2 回答
4267 浏览

c - 夹板调试解析错误

这是我第一次使用夹板(来自 Ubuntu 存储库),我立即被 WTF 击中。错误信息:

现在,显然它在第 16 行第 6 列看到了问题。让我们检查一下(发布完整代码):

请注意,此程序编译时没有错误 ( gcc -Wall -std=c99 brainfuck.c) 并且运行时行为正常。

注意:如果你被brainfuck这个名字冒犯了,那就忍受它。它是一种由作者以这种方式命名的编程语言,我尊重并使用该名称。

0 投票
3 回答
1964 浏览

c - 由于函数指针,夹板警告“语句无效”

我正在尝试使用 Splint(在严格模式下)检查 C 程序。我用语义注释对源代码进行了注释,以帮助 Splint理解我的程序。一切都很好,但我就是无法摆脱警告:

语句无效(可能通过调用不受约束的函数 my_function_pointer 进行未检测的修改)。

语句没有可见的效果 --- 没有值被修改。它可以通过调用不受约束的函数来修改某些内容。(使用 -noeffectuncon 禁止警告)

这是由通过函数指针的函数调用引起的。我不喜欢使用no-effect-uncon标志,而是写更多的注释来修复它。所以我typedef用适当的@modifies条款装饰了我的,但 Splint 似乎完全忽略了它。问题可以简化为:

我已经阅读了手册,但是关于函数指针及其语义注释的信息并不多,所以我不知道是我做错了什么还是这是某种错误(顺便说一下,这里还没有列出:http ://www.splint.org/bugs.html )。

有没有人成功地在严格模式下使用 Splint 检查了这样的程序?请帮我找到让夹板开心的方法:)

提前致谢。

更新 #1: splint-3.1.2(windows 版本)产生警告,而 splint-3.1.1(Linux x86 版本)没有抱怨。

更新#2: Splint 不在乎分配和调用是的还是的:

更新#3:我对禁止警告不感兴趣。这很容易:

我正在寻找的是正确的表达方式:

“这个函数指针指向一个函数@modifies,所以它确实有副作用”

0 投票
2 回答
431 浏览

c - PTHREAD_COND_INITIALIZER 与夹板

我有以下代码

使用 Splint 时出现以下错误/警告

静态 watchdogCond._数据。_mutex 初始化为空值:watchdogCond._数据。_mutex = (void )0 没有空注释的引用被分配或初始化为 NULL。使用 / @null@*/ 将引用声明为可能为空的指针。(使用 -nullassign 禁止警告)

这有什么问题,这是一个真正的危险吗?

0 投票
1 回答
361 浏览

c - 如何为 Splint 注释 BoehmGC 收集的代码?

Splint在跟踪 C 代码中的内存泄漏方面做得很好。每个都malloc()应该有一个匹配的free(). 但是 BoehmGC 收集的代码使用GC_MALLOC()没有匹配GC_FREE()的 . 这使得 Splint 对大量实际上并不存在的内存泄漏消息发疯了。

有谁知道此类代码的正确注释,以便 Splint 不再显示虚假的内存泄漏消息?

特别是,有人可以注释维基百科的BoehmGC 示例吗?

0 投票
1 回答
648 浏览

c - 为什么夹板不解析 curl/curlbuild.h?

我编写了一个fornol.c使用 curl 库的程序,因此包括以下内容:

我想splint在我的程序上运行,但这是我得到的错误:

中的可疑行curlbuild.h如下所示:

去哪儿CURL_TYPEOF_CURL_SOCKLEN_T了。#definesocklen_t

我在这里做错了吗?我应该将哪些标志传递给夹板以使其在我的程序上运行?