iOS代码检测入坑记事
我接触的代码检测
- OCLint + xcpretty
- sonar
- infer
infer
具体使用
infer -- xcodebuild -target <target name> -configuration <build configuration> -sdk iphonesimulator
例如:
#分析之前先把之前的build缓存清理下
xcodebuild -workspace HIGHTONG_Public.xcworkspace -scheme HIGHTONG_Jktv -configuration Debug -sdk iphoneos11.0
#根据自己醒目名字使用infer 命令进行分析
infer -- xcodebuild -workspace HIGHTONG_Public.xcworkspace -scheme HIGHTONG_Jktv -configuration Debug -sdk iphoneos11.0
infer的优势
- 安装过程简洁,不需要过多的配置(前提是电脑之前安装过Homebrow)
- 使用方便,只需要一行命令
sonar
Sonar 是一个用于代码质量管理的开放平台。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具。相比于Jenkins ,sonar更关注代码的变化,通过量化的方式度量代码变化。
如果不需要持续集成,sonar只需要两个配置文件就可以进行代码的静态检测。
- 安装:
brew install sonar
- 配置文件修改
run-sonar.sh
sonar-project.properties
- 执行run-sonar.sh脚本,检测代码
资源下载
* [run-sonar.sh](https://raw.githubusercontent.com/octo-technology/sonar-objective-c/master/src/main/shell/run-sonar.sh)
* [sonar-project.properties](https://raw.githubusercontent.com/octo-technology/sonar-objective-c/master/sample/sonar-project.properties)
参考资源
* [IOS-Sonar代码质量监控](http://www.jianshu.com/p/f58e89573d33)
* [[实践]Sonar Xcode8兼容](https://my.oschina.net/ChenTF/blog/806565)
* [iOS Sonar集成流程详解](http://www.jianshu.com/p/74bee59fef1c)
* [基于Sonar的iOS代码质量检测系统](http://www.jianshu.com/p/6b61783b9a38)
* [IOS测试之sonar检查ios代码质量](http://blog.csdn.net/itfootball/article/details/45058591)
OCLint + xcpretty
- 安装xcpretty
sudo gem install xcpretty
- 安装OCLint
brew tap oclint/formulae brew install oclint
- 根目录下 运行脚本:
#清理
xcodebuild clean
#生成JSON文件 用于分析
xcodebuild -workspace demo.xcworkspace -scheme demo -configuration Debug \
| tee xcodebuild.log \
| xcpretty -r json-compilation-database -o compile_commands.json
#OCLint 分析(根据一定规则进行分析)
oclint-json-compilation-database -v \
-e Pods \
-e MGLivenessDetection \
-e MGBaseKit \
-e MGIDCard \
oclint_args -- -report-type html -o oclintReport.html \
-disable-rule ObjCAssignIvarOutsideAccessors \
-disable-rule ShortVariableName \
-rc=MINIMUM_CASES_IN_SWITCH=3 \
-rc=CYCLOMATIC_COMPLEXITY=10 \
-rc=LONG_CLASS=700 \
-rc=LONG_LINE=200 \
-rc=NCSS_METHOD=40 \
-rc=NESTED_BLOCK_DEPTH=5 \
-rc=TOO_MANY_FIELDS=20 \
-rc=TOO_MANY_METHODS=30 \
-rc=TOO_MANY_PARAMETERS=6
# oclint_args -- -report-type xcode \
高级用法,代码检测规则: