iPhone应用程序上的Clang静态分析器显示最新版本的错误

BP.*_*BP. 3 iphone objective-c clang-static-analyzer

当我通过版本252检查器二进制文件运行我的代码时,没有分析错误.但是,当我更改为使用最新的253检查程序时,它会返回一系列错误,所有错误都没有任何意义.例如,以下是扫描构建脚本完成后在Safari浏览器中显示的错误图像:

Clang静态分析仪错误

这是一个非常常见的错误,显示在错误列表中.正如您所看到的,方法名称在其末尾具有"复制",但它仍然报告为命名错误.

以下是我使用检查器版本253获得的错误细分:

Bug Summary

Results in this analysis run are based on analyzer build checker-253.

Bug Type    Quantity
All Bugs    83  

Dead code   
Unreachable code    17  

Memory (Core Foundation/Objective-C)    
Bad release 19  
Leak of returned object 23  
Object sent -autorelease too many times 24
Run Code Online (Sandbox Code Playgroud)

自动释放错误似乎与分析器无法看到复制方法实际上正确命名的事实有关,我试图寻找无法访问代码的示例,但我无法找到任何模式或解释错误,因为错误是简单if语句中的所有代码行.这是一个例子:

又一个Clang分析仪错误

我想这可能是最新版本的checker中引入的一些错误导致这些错误显示为错误.是否有其他东西(某种构建设置或扫描构建脚本的问题),我可能会在这里丢失?

bbu*_*bum 5

首先,方法名称应以小写字母开头,而不是大写字母(除了URL之类的缩写).可能是静态分析器在大写"Get"上跳闸.

接下来,即使使用小写"get",该方法也不遵循惯例.

引用文档:

仅对间接返回对象和值的方法使用"get".仅当需要返回多个项目时,才应将此表单用于方法.

因此,分析仪正确识别问题.

我建议遵循指南并使用类似的东西:

+ (NSArray *) modifiedOrNewPeople: (FMDatabase *) aDatabase;
Run Code Online (Sandbox Code Playgroud)

哪个会发布一个自动释放的数组.如果您有某些原因无法返回自动释放的对象,请发表评论.