Clang静态分析和Instruments来剖析代码有一些不一样,Clang更致力于在编译的过程当中经过自身的一套判断机制来找出代码中潜在的隐患。php
在XCode 3.2以后的版本里,Clang已经被集成进来,Static Analysis 是基于 Clang 的很是好的静态代码分析工具。能够从xcode直接运行Static Analysis 分析器。html
Static Analysis 优势:xcode
一、使用操做容易。函数
二、可以在编码阶段,开发自行进行代码检查。早期发现代码隐患。工具
三、直接分析源代码来发现程序中的错误,而不须要实际运行。测试
四、自动检测objective-C程序中的BUG,发现内存泄露和其它问题。编码
五、内存问题发现越早,解决的代价就越小。3d
使用方法:code
一、确保你的程序没有被编译过(编译过了就使用Clean all targets清除编译)htm
二、点击Product > Analyze以下图:
三、若是你的程序代码有问题,在编译完成以后,右下角的原来提示warning 和 error的地方如今变成了这样:
四、如今你能够像解决之前的warning 或者 error同样,对提示的地方点进去。
五、可能会存在问题的一些状况:
各处内存泄漏:
对象引用隐患(内存已释放可能又被使用了)
未使用到的函数:
未初始化的变量
数据赋值隐患:
The left operand of …… is a garbage value
分析解决方法(例:内存泄露)
一、点击左侧对应内存泄露某处,右侧显示泄露行
二、双击行所对应的信息,显示交互详情
三、修改代码,解决泄露问题。
四、修改后再次静态扫描发现,错误从40减到39,修复的代码行已再也不出现错误。
注:上述工程截图为测试Demo
建议使用场景:
一、建议在开发编码阶段使用,直接分析源代码来发现程序中的错误,而不须要实际运行,提早发现代码隐患。
二、测试在冒烟测试时可先进行扫描,错误太多代码修改量太大的状况下可暂不介入测试,以避免形成返工。
若是在内存泄露中出现 potential leak of an object stored into
解决办法:建立变量的时候尽可能使用静态建立,由于静态方法都添加了anturelease,若使用alloc,init时后面最好加上autorelease