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

ios4 - Xcode 4 Analyze 未检测到内存泄漏情况

我的 iOS 应用中有此代码:

[cameraUI release];这段代码的问题是方法的末尾需要有一个。过去,内置在 Xcode 中的静态代码分析器帮助我发现了这些疏忽,但在我当前安装的 Xcode 4.0.2 中,它没有发现这个问题。我试图重新启动 Xcode,并尝试了 Clean Build Folder(在单击项目菜单时按住选项),但没有运气。最新的 Xcode 中的分析器是否有问题,或者我还缺少什么?

0 投票
1 回答
517 浏览

ios4 - Xcode 4 静态代码分析题

这是我之前关于 Xcode 4 静态分析器的问题的后续。这不是一个特别的问题,因为我的代码现在可以按需要工作,但我只是想知道幕后工作的情况。考虑以下代码:

对我来说,这段代码看起来有两个需要释放的对象(cameraUI 和 theString)。但是,analyze 函数正确地识别出只有 theString 需要在方法结束时释放,即使这两个对象都是从 alloc-init 返回的,根据我的经验,这始终意味着您在完成时释放。

我在这里的问题是,静态代码分析器如何知道不将 cameraUI 标记为问题?

0 投票
2 回答
558 浏览

objective-c - 当某些东西没有泄漏时,如何让 Clang 静态分析器清楚?

当使用 Clang 静态分析器分析我的 iOS 目标 C 代码时,我得到了很多“潜在的泄漏”。许多泄漏让我想知道为什么它是错误的。让我特别想知道的一个例子如下:

我有一个 type 的类变量NSDictionary,用于存储一些设置。现在,当我有一种方法可以更改字典中的内容时:

Clang 在PaxCompartimentOutputField. 在仪器中运行此代码时,它不会泄漏。

我可以想出两种方法来解决这个问题:

  1. 利用autorelease
  2. 用以下代码替换内联分配:

(代码)

第一个选项是过时的恕我直言(尤其是在 iOS 上不鼓励使用它)第二个选项非常庞大 - 特别是在创建包含更多对象的数组时(比如 10 个加载默认设置的对象)。

我不想忽略 Clang 的警告,因为它是查找错误和泄漏的绝佳工具。对于这些情况,在 Objective-C 中执行此操作的“正确”方法是什么?

0 投票
1 回答
212 浏览

objective-c - 静态分析器错误地发现表达式为“始终为 0”

我有一个属性 noteName,声明如下:

并定义如下:

但是当我尝试使用它时,静态分析器的行为很奇怪。

我已经记录了[self noteName]该方法调用中的值,发现了许多合理的非零值。此外,此代码的方法按预期工作。

0 投票
1 回答
2500 浏览

c++ - 如果我使用 g++ 作为编译器,如何使用 clang 静态分析器扫描 c++ 文件?

我使用 g++ 编译我的 C++ 项目。当我尝试使用clang 静态分析器( scan-build ) 检查我的代码时,出现错误:

如何在 g++ 中使用 scan-build 工具?

0 投票
2 回答
1629 浏览

cocoa - 字典的深层副本在 Xcode 4.2 中出现分析错误

我在 NSDictionary 类别中有以下方法,可以进行深层复制,效果很好。

我刚刚从 Xcode 4.1 升级到 4.2,Analyze 函数为此代码提供了两个分析器警告,如下所示:

这些是 Xcode 分析器中的错误,还是我可以进行更改以避免这些警告?

我还没有使用 ARC,但我很感兴趣是否需要额外的更改来支持此方法的 ARC。

0 投票
3 回答
3518 浏览

xcode - Clang scan-build 不适用于 Xcode 4.2 LLVM 3.0 构建配置

我已经安装了 Xcode 4.2 最终版本,以便能够为 iOS 5 进行编译。

我们将 Jenkins 用于 CI 并从 llvm.org 项目页面运行 Clang scan-build。(版本 258)该项目配置为使用 LLVM 3.0(自 Xcode 4.2 以来这是默认设置)。现在每次我尝试运行 scan-build 时都会收到以下错误:

如果我使用 Xcode self 的静态代码分析,我会得到以下输出,这些输出没有问题:

有人知道在不禁用 LLVM 3.0 使用的情况下我可以做些什么来让 scan-build 再次运行吗?!

0 投票
1 回答
1116 浏览

objective-c - 为什么静态分析器显示这个桥接的 NSNumber 在 ARC 下泄漏?

当针对我已转换为使用 ARC 的代码运行 Clang 静态分析器时,它报告此代码块中的 NSNumber 为泄漏:

分析器表明创建并存储到temporaryNumber 中的NSNumber 在所有这些之后以+1 保留计数结束,因此泄漏。我知道我可以很容易地做到

但我仍在尝试了解 ARC 中桥接的确切操作,所以我试图解开上述问题。实际分析仪输出如下:

静态分析仪结果的可视化描述

我阅读的方式CFBridgingRetain()__bridge_retained,他们通过将保留计数增加 1 来将 ARC 管理的 NSObject 的所有权转移给 Core Foundation。我将其与相应的CFRelease(). 我希望 NSNumber 被创建为一个自动释放的对象,因此在 ARC 端完全平衡。

同样,如果我使用普通__bridge演员执行以下操作:

静态分析器给了它一个干净的健康账单。

我是否误读了对象免费桥接的方式,或者这是静态分析器中的错误?

0 投票
1 回答
2230 浏览

ios - 奇怪的 Xcode 分析结果

当我在 Xcode 中分析我的项目时,我得到了一些奇怪的错误。所有这些代码都是单个方法的一部分,该方法创建可用于制作MKAnnotations. 抱歉,如果这是代码泛滥 - 我已尽力注释掉不相关的部分。除了片段之外,我还包括了整个方法,只是为了某种角度。谢谢!


第一的:

Xcode 怎么敢指责我这种恶作剧?

第二:

第三:

第四:

除了,我刚刚初始化了那个数组?我知道如果annotationLats并且annotationLongs用零长度初始化它可能会未初始化。


这些警告是否重要?如果我的程序在没有这些警告的情况下按预期运行,我可以安全地忽略它们吗?我只是觉得忽略 Xcode 不是一个好主意——它相当聪明。

0 投票
2 回答
861 浏览

iphone - 静态分析仪显示错误泄漏??(XCode 4.0, iOS 4.3 及以上)

祝大家十一月快乐,

好吧,我在我的项目上尝试了 Xcode 构建和分析,它显示了一些不寻常的泄漏,以我对 Objective C 的了解,我不能完全接受。

所以我决定提出一个测试项目并在这里问..

内存测试控制器.h

内存测试控制器.m

当我尝试构建和分析时,clang 静态分析器说

第 xx 行对象的潜在泄漏

罪魁祸首是

我想我每次分配/保留时都会释放一次。我是否遗漏了什么,或者静态分析器有一些错误?

编辑:那里有泄漏吗?

好吧,我使用仪器中的泄漏工具运行上述项目..即使我尝试了很多次,它也没有显示任何泄漏..我应该相信谁?静态分析仪还是泄漏仪?