oclint扫描可按单文件扫描,这里我用的是全编的结果,通过全编结果的log,转换成json文件,然后扫描json文件,输出PMD格式的报告,在jenkins上显示:
1,前提:
需要安装xcodebuild、oclint、xcpretty
2,编译:
set -o pipefail && xcodebuild -project 'GoodAir.xcodeproj' -configuration 'Debug' -sdk 'iphonesimulator' \
-arch "i386" ONLY_ACTIVE_ARCH=YES VALID_ARCHS="i386 x86_64" \
clean build | tee xcodebuild.log | xcpretty --report json-compilation-database
其中,set -o pipefail是为了编译挂了就退出;
-arch "i386" ONLY_ACTIVE_ARCH=YES VALID_ARCHS="i386 x86_64"是附带参数,视实际情况而定;
xcpretty是为了加速,并转化成json格式输出(老版本可用oclint-xcodebuild,但是自从oclint升级后,我就改用这个了,快),参考:点击打开链接
结果在build/reports/compilation_db.json。
3,oclint:
oclint在jenkins上显示是用了PMD格式发布,所以oclint中report-type是pmd:
maxPriority=15000
# Disable rules
LINT_DISABLE_RULES="-disable-rule=LongClass \
-disable-rule=LongLine \
-disable-rule=LongMethod \
-disable-rule=LongVariableName \
-disable-rule=ShortVariableName \
-disable-rule=HighNcssMethod \
-disable-rule=DeepNestedBlock \
-disable-rule=TooManyFields \
-disable-rule=TooManyMethods \
-disable-rule=TooManyParameters \
-disable-rule=IvarAssignmentOutsideAccessorsOrInit"
cp build/reports/compilation_db.json compile_commands.json
oclint-json-compilation-database -e $WORKSPACE/ThirdParty -v -- -report-type pmd -o oclint.xml -max-priority-1=$maxPriority -max-priority-2=$maxPriority -max-priority-3=$maxPriority $LINT_DISABLE_RULES
其中,因为用了clang-format格式化代码,所以oclint中关于格式方面的规则全部需要过滤掉,以免和clang-format冲突
4,jenkins:
在jenkins上,构建后操作选择Public PMD analysis results填写oclint路径即可