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

本文介绍了如何使用OCLint进行iOS代码静态检查,结合xcodebuild和xcpretty进行编译及结果转换为JSON格式。在Jenkins上,通过设置PMD格式报告,实现静态检查结果的可视化展示。文章详细阐述了每个步骤的配置和参数设置,包括编译时的附加参数和Jenkins的集成方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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路径即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值