您的位置:首页 > 产品设计 > UI/UE

【指导】iOS代码静态检查 -- oclint (+ xcodebuild + xcpretty + jenkins)

2016-01-04 15:47 537 查看
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路径即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: