问题标签 [clang-static-analyzer]

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 回答
283 浏览

objective-c - 如何防止某些类型的分析仪泄漏报告?

我在 Objective-C 中包装了某个 C API。我有一个方便的方法,它CFTypeRef从过程 API 中获取一些并从 OOP API 返回一个包装对象。该对象保留传递CFTypeRef并在其自己的释放时释放它。便捷方法如下所示:

我有很多方法可以简单地获取一些CFTypeRef并返回包装对象:

这有点笨拙,所以我想出了另一种方便的方法:

现在我可以像这样重写doSomething方法:

我喜欢这个。我对这个wrapNonRetainedFoo方法并不感到自豪,但它不是包的公共接口的一部分,并且在几个方法中为我节省了几行样板代码。

缺点是静态分析器将该XXX行标记为潜在泄漏。我能做些什么更好?我试图玩弄cf_consumed参数属性,让分析器知道我稍后会释放该对象,但它似乎不起作用。

0 投票
1 回答
1357 浏览

xcode4 - Xcode 4“修复它” - 它什么时候出现?

我想知道“Fix-it”应该什么时候出现?是否有可能出现在所有错误上(并建议更改?) 应该比较的赋值 显然我的代码中有一个错误,“Fix-it”分析并检测到了该错误。但它可以帮助我更多吗?

0 投票
1 回答
719 浏览

objective-c - Apple 更改了命名约定的内存管理规则

如之前的Cocoa 内存管理规则中所述

如果您使用名称以“alloc”或“new”开头或包含“copy”(例如,alloc、newObject 或 mutableCopy)的方法创建对象,或者向其发送保留消息,则您将获得对象的所有权。

2010 年 12 月之后没有读过它,但从那时起已经更改为

您使用名称以“alloc”、“new”、“copy”或“mutableCopy”开头的方法(例如,alloc、newObject 或 mutableCopy)“创建”一个对象。

请注意,现在需要将“copy”作为前缀。这导致 Clang 静态分析器发出了一些与内存相关的警告 :(。在搜索了互联网后,我还没有得出关于为什么会发生变化的结论,因为这是 iOS 内存管理的基础之一。

有人知道为什么吗?谢谢!

0 投票
1 回答
94 浏览

objective-c - 无法从静态分析器中找到泄漏

我从 Clang 静态分析器中收到一些错误,说我有一些来自以下代码的泄漏。但是我找不到泄漏。请告诉我泄漏在哪里。

0 投票
4 回答
10025 浏览

objective-c - 是否可以抑制 Xcode 4 静态分析器警告?

Xcode 4 静态分析器在我的代码中报告了一些误报。有什么办法可以压制他们吗?

0 投票
2 回答
303 浏览

objective-c - 没有详细信息/行号的 XCode 分析器警告

我运行了分析器,发现了一些我无法与代码中的行关联的警告。我不确定如何处理它们。单击它们会将我带到编辑器中的正确文件,但分析器摘要结果告诉我很多。我不知道这些中的每一个都指的是什么,并且逐行浏览代码并不高效(我不知道我在寻找什么)。

对于最后一个警告,我删除了自动释放,它消失了,但我不知道如何释放它,因为它在返回语句中使用。

一般来说,我该怎么处理这些?

0 投票
1 回答
665 浏览

objective-c - Xcode 静态分析器和 copyWithZone

Xcode 4 静态分析器将此方法标记为具有过度释放的返回值,而事实并非如此。

有一个箭头从 return 关键字指向它后面的表达式,另一个从该表达式指向分析器警告。下面是静态分析:

  1. 方法返回一个具有 +1 保留计数的 Objective-C 对象
  2. 对象发送 -autorelease 消息
  3. 对象作为拥有引用返回给调用者(单个保留计数转移给调用者)
  4. 对象以 +0(非拥有)保留计数返回给调用者
  5. 具有 +0 保留计数的对象返回给调用者,其中预期 +1(拥有)保留计数

是静态分析器不正确还是这段代码有问题?


根据要求,-initWithURL:postString:方法:


即使在清理和重建项目之后,我也会继续收到此警告。

更新:升级到 Xcode 4.2 后,Xcode 静态分析器不再将此标记为问题。

0 投票
3 回答
248 浏览

objective-c - 误报 Xcode4 分析器

回应对此问题的评论:是否可以抑制 Xcode 4 静态分析器警告?,这是一个误报(或者至少我相信是这样)。

下面的代码给出了以下消息:

尽管在封闭表达式中使用了存储在“action”中的值,但实际上从未从“action”中读取该值

0 投票
2 回答
2638 浏览

xcodebuild - 使用 xcodebuild 启动 clang 静态分析器

我正在尝试在 hudson 构建服务器上设置 clang 静态分析器,如果我按照此博客文章中的建议进行操作,则会遇到以下错误:

如果我将RUN_CLANG_STATIC_ANALYZER参数传递给xcodebuild(不使用scan-build)它会生成一些 plist 文件,但我不知道如何将这些文件呈现给用户,因为我期望 HTML 输出。

有人成功了吗?

0 投票
0 回答
732 浏览

clang-static-analyzer - Clang 静态分析器 - 扩展

我是使用 Clang 的新手,想了解是否可以扩展静态代码分析器的现有功能。基本上现在我想添加一个检查来分析代码并查找某些调用以查看目标 c 代码中的文件系统访问。我希望它将结果集成并输出到 Clang 生成的现有静态分析报告中。这是可以在 Clang 中完成的吗?我知道有更简单的方法可以通过编写脚本(python 等)来解析源代码,但我想看看这是否可以用现有的 Clang 东西来完成。我确实看到了可能能够完成此操作的 libClang 库,但似乎不会集成到静态分析结果报告中并且有所不同。

任何帮助表示赞赏。