问题标签 [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 - 夹板在包含 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。) *** 无法继续。
谷歌搜索该问题仅在拆分讨论邮件列表中显示此消息(仍未得到答复)。
有任何想法吗?
更新
这是一个非常简单的失败源示例:
尝试重新定义不受支持的_Complex
C99 关键字会导致复数的虚部出现错误(我想这并不奇怪)。
c - 用于 C 的夹板代码分析器
我们计划使用 Splint 作为 C 代码库的代码分析器。但我们之前从未尝试过 Splint 工具,因此我们希望您能就它的优缺点提供意见。
parsing - 如何解决 Splint 中的解析错误
Splint 在发现解析错误后没有继续检查。我也尝试过使用 +trytorecover 选项,但没有改变。
请让我知道如何使用 +trytorecover 使 Splint 在解析错误后尝试继续。
这是我收到的,
c - 这个夹板警告的含义是什么?我可能做错了什么?
这是代码行:
运行夹板 3.1.2 会生成此警告:
命名参数没有区别。
c - __thread 上的夹板 barfs,它是 C99 的一部分
跑步夹板
在这条线上暂停:
出现解析错误:
检查文档和漱口水没有提到__thread
. 然而,它是 Splint 据称支持__thread
的 C99 规范的一部分(插入参考)。
这里发生了什么?我怎样才能让夹板识别__thread
?
c - 夹板调试解析错误
这是我第一次使用夹板(来自 Ubuntu 存储库),我立即被 WTF 击中。错误信息:
现在,显然它在第 16 行第 6 列看到了问题。让我们检查一下(发布完整代码):
请注意,此程序编译时没有错误 ( gcc -Wall -std=c99 brainfuck.c
) 并且运行时行为正常。
注意:如果你被brainfuck这个名字冒犯了,那就忍受它。它是一种由作者以这种方式命名的编程语言,我尊重并使用该名称。
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
,所以它确实有副作用”
c - PTHREAD_COND_INITIALIZER 与夹板
我有以下代码
使用 Splint 时出现以下错误/警告
静态 watchdogCond._数据。_mutex 初始化为空值:watchdogCond._数据。_mutex = (void )0 没有空注释的引用被分配或初始化为 NULL。使用 / @null@*/ 将引用声明为可能为空的指针。(使用 -nullassign 禁止警告)
这有什么问题,这是一个真正的危险吗?
c - 为什么夹板不解析 curl/curlbuild.h?
我编写了一个fornol.c
使用 curl 库的程序,因此包括以下内容:
我想splint
在我的程序上运行,但这是我得到的错误:
中的可疑行curlbuild.h
如下所示:
去哪儿CURL_TYPEOF_CURL_SOCKLEN_T
了。#define
socklen_t
我在这里做错了吗?我应该将哪些标志传递给夹板以使其在我的程序上运行?