问题标签 [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 回答
497 浏览

c - 转移 Splint 中的存储所有权

使用 C 中的简单链表实现,我如何告诉 Splint 我正在转移所有权data

我收到此错误消息:

我想告诉 Splint 释放的责任data已转移到列表数据结构中。

0 投票
1 回答
59 浏览

visual-studio-2010 - 使 IncludeDirs 可用于外部工具的方法

我目前正在尝试将夹板作为 Visual Studio 2010 中的外部工具提供。

查找文件的所有包含时存在问题,因为似乎 INCLUDE 变量仅在构建时设置,并且我还没有找到任何其他可能性以任何方式提取包含文件。

我的问题:有什么方法可以从当前文件的项目属性页面中提取 IncludeDir 字段,最好是使用 VC++ 的 AdditionalIncludeDirectories?

0 投票
2 回答
293 浏览

c - 来自文字 Splint 的 C 字符警告不兼容的类型

我有一个程序使用无符号字符来表示小范围的整数。我发现自己需要在程序的几个不同部分将它们清除为 0,我最近也开始使用夹板,显然:

给出警告:

由于文字字符没有后缀,如何最好地解决这个问题?我想我有几个选择:

1:忽略警告。

2:每次施放:

3:制作一个var来减少代码的长度:

4:功能:

0 投票
1 回答
113 浏览

c - Splint 无法检查指向堆栈变量的指针上的 maxSet

我有一个程序可以执行以下操作:

我传递一个指向函数的指针,取消引用它,然后存储一些东西。Splint 报告它无法解决maxSet(result) >= 0f 中的约束:

&s指向堆栈上的单个字符,因此它的 maxSet 应该为 1 而无需添加任何注释。为什么夹板抱怨?

0 投票
1 回答
1101 浏览

makefile - 如何将 Splint 插入 Makefile?

我想配置我的项目,以便使用 Splint 分析不同的组件。

如何将命令行添加到我的 Makefile 中,以某种方式询问我是要使用 Splint 运行分析还是只是正常编译程序?

0 投票
1 回答
466 浏览

makefile - 夹板:无法打开文件

当尝试通过 makefile 使用 Splint 对我的项目进行分析时,我收到了以下错误消息:

这是我的生成文件:

0 投票
1 回答
219 浏览

c - 如何将 Gradle 连接到自定义 EXE 并挂钩其控制台输出?

虽然这个问题涉及 C 语言、Gradle C 插件和一个名为slint的老式C 静态分析器,我相信任何了解如何将 Gradle 构建连接到可执行进程的 Gradle 大师都可以回答这个问题。

很简单:我已经在本地配置了 splint 来分析我的简单 C 项目的源代码,命令行如下:

我正在通过 Gradle(C 插件)管理我的项目构建,现在想在构建序列中的适当点调用静态分析(夹板)(无论可能是什么)。

夹板输出到控制台,不幸的是没有其他地方。所以我想看看我是否可以“挂钩”这个控制台输出,检查某些关键字(“错误”,“警告”等),如果夹板抱怨任何事情,则失败/停止构建。

所以我试图在这里解决几个问题:

  • 如何在适当的阶段从 Gradle 调用夹板?例如,每当 CodeNarc 执行时(编译后?运行测试后?)都可能在应该调用夹板的时候。
  • 如何通过此调用将正确的命令行参数传递给夹板?
  • 如何挂钩夹板的控制台输出?
  • 当控制台输出包含某些关键字时如何使构建失败?

到目前为止,我最好的尝试是:

这会产生:

但是我 100% 确信 myworkingDircommandLineargs 不正确,我不确定如何从该语句内部失败/停止构建if,并且我不确定如何check在编译和测试。

有什么想法吗,Gradle 大师?

0 投票
0 回答
539 浏览

c - 夹板大项目(数百个文件)

我正在将Splint用于一个中等规模的项目。一切都很好,但我们现在正试图将级别从“弱”提升到“检查”。因为我们是一个一个地检查文件,所以 Splint 会抱怨未定义的函数。我似乎记得 Splint 可以选择单独分析多个文件,然后对所有文件进行最终分析(编译 + 链接样式)。

我在手册和一般谷歌搜索中都找不到有关如何执行此操作的任何信息。

这可能吗?

0 投票
1 回答
210 浏览

c - 在 c 中的销毁函数中使用 free() 后内存泄漏(根据夹板)

我正在重新学习 C,并使用splint它来测试我的源代码。

我正在尝试执行以下操作:

  • 创建具有“构造函数”功能的结构
  • 使用“析构函数”销毁结构,释放结构的内存。

但是,当我使用夹板测试我的代码时,它会发出与析构函数中的临时存储相关的警告,以及调用析构函数后的内存泄漏。

我想知道(a)夹板对于我的代码中的内存泄漏是否正确(我认为不是),以及(b)我应该做什么来修复我的代码或让夹板了解我在做什么。

无论如何,这是代码:

代码使用 gcc 编译并运行良好。

但是,当我使用夹板对其进行测试时,夹板会发出以下警告:

第一次警告,越想越不明白。但是我还没有阅读足够多的手册来证明关于该手册的正确问题。

第二个警告,关于内存泄漏,似乎夹板只是没有意识到内存在其他地方被释放,这对我来说似乎很奇怪。free()如果我只是在里面打电话,警告就会消失main

在此先感谢您的帮助。请让我知道是否有更多详细信息(例如警告的行号)会有所帮助。

0 投票
2 回答
100 浏览

c - 在 C 的结构初始化程序中使用变量是否合法?

下面的代码似乎编译得很好。

夹板失败

(这是行Test p = {i, 1};

这是非法的 C,还是夹板中的错误?

(我想这样做是因为我希望 p 成为const,尽管即使删除const修饰符似乎也会发生故障。如果我将声明和初始化i移到一行,问题似乎也消失了。)