关于Obj-c代码静态扫描 iPhone代码静态扫描的问题
你还可以用: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,用哪一种编译器来编译了.
有更多的代码,都可以自己去定义的.