gmmargin 2012-06-15
转自:http://www.yifeiyang.net/iphone-development-skills-of-tool-papers-3-use-the-clang-static-analysis-objective-c-program/
clang 是 LLVM 编译器项目中的其中之一。LLVM 支持 C/C++/Objective-C 语言,并有许多 Apple 的工程师加入这个项目。
静态解析是指不用执行程序,而是从程序的代码构成来分析错误和预测问题。比如Java中的FindBugs,C++中的prefast等。通过这些工具可以一定程度的减少程序中的错误数量。
一般静态解析,分析以下几类问题:
比如容易引起内存泄漏的代码,会被其检测出,提示你修正。
在 这里 下载 clang, 并解压拷贝所有目录/文件到下面的目录,并设置该目录到PATH。
1 | /usr/local/bin |
下面是一些基本命令的说明
使用方法很简单,比如像下面:
1 2 | % cd MyProj % scan-build xcodebuild |
当然,你也可以使用参数:
1 2 3 4 5 | % scan-build -o ./check --view xcodebuild -configuration Development : ** BUILD SUCCEEDED ** scan-build: 1 bugs found. Viewing analysis results: './check/2010-04-11-2/index.html' |
"-o" 是指定输出报告的位置(缺省是/tmp),"—view"是指解析完成后用浏览器打开报告。编译器 xcodebuild 的参数不变。
报告结果如下图所示:
每次解析完成后,最好用下面的命令删除编译的结果,要不然会出问题。
1 | xcodebuild clean |
如果是比较新的 Xcode 版本, clang 已经集成到 Xcode 里了,可以通过项目设置中的 build --> 执行静态解析 来自动完成解析的过程。