最近要在持续化交付上添加一环,静态代码分析。虽然xcode
的Analyze
也有这个功能,但是那个工具用起来比较麻烦,需要手动去操作。接下来就看看OCLint
的使用吧。
本次环境配置是在xcode8
环境下,xctool
已不再支持xcode8
.
我是用homebrew
安装的。首先添加下载源 ,然后正式安装。
brew tap oclint/formulae
brew install oclint
安装oclint
完成后需要安装xcpretty
,该工具可以将编译的代码产生的信息格式化输出。
gem install xcpretty
每次编译前记得先 clean
一下,以下是我的命令。
xcodebuild clean -workspace Hospital_Doctor/Hospital_Doctor.xcworkspace -scheme Hospital_Doctor -configuration 'Debug'
xcodebuild -workspace Hospital_Doctor/Hospital_Doctor.xcworkspace -scheme Hospital_Doctor -configuration 'Debug'| xcpretty --report json-compilation-database
然后会在build/reports
目录下生成 compilation_db.json
文件,但是oclint
识别的是 compile_commands.json
文件。
cp Hospital_Doctor/build/reports/compilation_db.json compile_commands.json
然后用oclint 解析上面的文件
oclint-json-compilation-database -v -e Pods -e Carthage -e Hospital_DoctorTests -e Hospital_DoctorUITests
-e 参数是忽略的文件或文件夹
在这里我还在项目根目录(当前目录)配了一个.oclint
文件,该文件中的配置在执行oclint 命令时自动加载,也可以在个人用户目录下新建这个.oclint
文件,即~/.oclint
,下面是我的配置文件。
rule-configurations:
- key: CYCLOMATIC_COMPLEXITY
value: 15
- key: LONG_LINE
value: 300
- key: TOO_MANY_PARAMETERS
value: 10
output: oclint.html
report-type: html
max-priority-1: 0
max-priority-2: 1000
max-priority-3: 3000
enable-clang-static-analyzer: false
rule-configurations
中是一些代码的规范,这里是修改的默认的,也可以不填用默认的。oclint 导出的html 文件可以在浏览器中查看。
之后我想把他集成到fastlane
中,fastlane
中提供了oclint action
,我用xcodebuild
先生成了json 文件,然后执行oclint
的动作,发现有问题,打印出来后fastlane 中具体执行的命令是如下
oclint -report-type=pmd -o=oclint_report.pmd -rc=LONG_LINE=200 -rc=LONG_METHOD=200 -max-priority-1=10 -max-priority-2=1000 -max-priority-3=2000 -p . "***"
同样可以生成html文件,可以直接在浏览器打开查看。
网友评论