用Xcode开发的同事都应该知道Xcode是可以用代码的静态扫描的.
就在Xcode菜单栏->Build->Build and Analyze?? 这里检查出,比直接编译下更容易出错的代码,并且点击相关的提示,会有为什么提示你的代码有问题.
具体可以见:
http://clang-analyzer.llvm.org/
?
但是想要出代码扫描报告的话,就像eclipse 下 java的find bug的东西的话,就有问题了.
得借助另一种工具:
scan-build
这个工具是之前由苹果公司主持开发,后来捐给了开源社区
http://clang-analyzer.llvm.org/ 这个网址就是他的官方网站.
它就新工具是258版本:http://clang-analyzer.llvm.org/checker/checker-258.tar.bz2
下载下来以后解压文件,再设置你的PATH
打开命令终端:
echo "SCANBUILD=你的解压路径/checker">>~/.profile
echo "export PATH=$SCANBUILD:$PATH">>~/.profile
source ~/.profile
?
然后再进入到你iPhone或者iPad的文件根目录下面:
输入命令:
scan-build -k -o "你指定的文件报告输出路径" xcodebuild
你还可以用:scan-build -Vv-k -o "你指定的文件报告输出路径" xcodebuild
报告生成成功以后,他会自动在浏览器里打开报告,并且功能更强大.
或者你在命令行下,进入你报告文件的根目录,用scan-view命令来调用报告查看功能.
?
就可以了.代码编译完成以的一,会生成漂亮的html文档如下图:
你可以直接在浏览器里打开.
当然也会有一些特殊的情况.
在Xcode3下面,我们选择GCC4.2为编译的时候,我们可以通过以上命令直接编译就可以通过了
但是到最新的Xcode4.2以后,就没有GCC4.2,只有llvm gcc4.2 和llvm3.0的选项了.
进入了官网的bug系统里,发现了这个问题,下面有一同事回答了我们的问题
http://llvm.org/bugs/show_bug.cgi?id=11191
你可以用以下命令来生成新的报告:
scan-build -k -o ~/Desktop/report/iPhone/ --use-cc=/Developer/usr/bin/clang xcodebuild -configuration AdHoc -sdk iphoneos5.0 IPHONEOS_DEPLOYMENT_TARGET=3.0 GCC_VERSION="com.apple.compilers.llvm.clang.1_0"
其中,红色部分你各位要注意的.
解释一下上面的命令.
scan-build,就是扫描静态代码,并编译出app包后,生成代码扫描报告.
-k参数是,编译出错了,也会继续扫描代码.英文keeping的缩写了
-o参数是 报告生成存放地点,英文output的缩写了
--use-cc=path 表示用哪一种系统器来编译,你可以选择gcc或者gcc4.2,以满足不同的代码编译.这里,我们选择默认的clang(这里要写清楚路径)编译.这里gcc4.2和clang还有llvm的关系,有机会,再出文章来分析,网上也有相关的分析了,有兴趣的朋友可以自己去查一下.
xcodebuild 命令是告诉scan-build用Xcode来系统程序,这里可以选择GCC,目录scan-build只支持这二种编译.
-configuration AdHoc -sdk iphoneos5.0 IPHONEOS_DEPLOYMENT_TARGET=3.0 GCC_VERSION="com.apple.compilers.llvm.clang.1_0"后面这一串,我就不想多说了.
可以指出来的是,这里是指定Xcode系统选择的编译方式,证书使用哪一个?打包支持到ios3.0,用哪一种编译器来编译了.
有更多的代码,都可以自己去定义的.