1

Xcode 4.3 提供的静态分析器是否应该捕获或标记未释放的 ivars?

我对 iOS 开发相对较新,我正在寻找一些启发:我的团队在构建我们的项目时启用了静态分析,以便在 XCode 中进行调试构建。为了评估 AppCode 的检查功能,我对整个项目进行了检查。

虽然我预计 AppCode 的检查会很好,但我没想到它会发现 50 多个未正确解除分配的 ivars 实例,因为我们在 Xcode 中打开了静态分析。我们验证了 AppCode 已正确识别问题,在几个案例中这解决了已知的内存泄漏问题。

clang 静态分析器应该捕捉到这些吗?

我希望它是因为一些项目设置没有正确设置。正如我所期望的那样,clang 静态分析器至少会标记丢失的取消分配。

4

2 回答 2

1

从 clang 邮件列表中得到答案,clang 可以发现这个问题。问题是 XCode 附带的 clang 版本禁用了此功能!

你好,西莫。Clang 确实支持此检查,但默认情况下它被禁用(可能是因为 http://llvm.org/bugs/show_bug.cgi?id=8838)。

我同意 Instruments 会识别出一个或多个泄漏,事实上它确实存在。然而,根据我的经验,缩小泄漏源或更可能是泄漏源的过程并不容易。AppCode 标记的问题最终解决了团队无法缩小范围的两个已知漏洞。此外,它还揭示了许多其他已知问题和其他未知问题。

一旦更新了clang,它也应该解决这些问题。

于 2012-05-22T14:19:19.923 回答
1

如果 AppCode 没有做比 Xcode 更好的事情,它就不会有太大的市场所以我相信你会发现至少有几个领域它可以为你做一些 Xcode 没有做的事情。也许这是其中一种情况。

另一方面,您所描述的这种泄漏应该很容易使用 Instruments 发现,所以并不是说 Xcode 中没有任何工具可以帮助您找到这种问题。

于 2012-04-23T15:35:51.770 回答