前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OCLint静态代码检查脚本

OCLint静态代码检查脚本

作者头像
freesan44
发布2021-01-20 19:37:17
1.6K0
发布2021-01-20 19:37:17
举报
文章被收录于专栏:freesan44

前言

OCLint是静态代码检查工具,用于检查代码质量

环境部署

网上太多类似教程,可参考 OCLint在Xcode中的使用 OCLint 实现 Code Review - 给你的代码提提质量

脚本

代码语言:javascript
复制
#!/bin/bash -il
source ~/.bashrc
myworkspace=OCLintProject.xcworkspace #填写workspace
myscheme=OCLintProject #填写Target
reportType=html #输出类型
reportFile=oclintReport.html #输出文件名

# clean cache
# 清除上次编译数据
if [ -d ./compile_commands.json ];
then
echo '-----清除上次编译数据-----'
rm compile_commands.json;
rm $reportFile;
fi


# clean -- build -- OCLint analyse
echo '-----开始生成编译数据-----';
xcodebuild -workspace $myworkspace -scheme $myscheme clean&&
xcodebuild -workspace $myworkspace -scheme $myscheme \
-configuration Debug -sdk iphoneos \
CLANG_ENABLE_MODULE_DEBUGGING=NO CODE_SIGNING_REQUIRED=NO ENABLE_BITCODE=NO COMPILER_INDEX_STORE_ENABLE=NO \
| xcpretty -r json-compilation-database -o compile_commands.json

if [ -f ./compile_commands.json ]
then
echo '-----编译数据生成完毕-----'
else
echo "-----生成编译数据失败-----"
return -1
fi

oclint-json-compilation-database -e Pods -e QMUI -e Libraries -- \
-report-type $reportType \
-o $reportFile \
-rc LONG_LINE=300 \
-rc LONG_METHOD=200 \
-rc LONG_VARIABLE_NAME=40 \
-rc LONG_CLASS=3000 \
-max-priority-1=10000 \
-max-priority-2=30000 \
-max-priority-3=50000 \

if [ -f ./$reportFile ]
then
echo '-----分析完毕-----'
else
echo '-----分析失败-----'
fi
  1. 首先需要用xcodebuild clean和build项目,并且添加COMPILER_INDEX_STORE_ENABLE=NO参数,不然可能会出现报错:oclint: error: one compiler command contains multiple jobs报错
代码语言:javascript
复制
xcodebuild -workspace $myworkspace -scheme $myscheme clean&&xcodebuild -workspace $myworkspace -scheme $myscheme

2. 调用xcpretty命令分析日志信息。xcpretty是用来格式化xcodebuild输出的工具。

代码语言:javascript
复制
xcpretty -r json-compilation-database -o compile_commands.json

3. 用oclint-json-compilation-database命令分析代码

  • -e 需要忽略分析的文件,这些文件的警告不会出现在报告中
  • -rc 需要覆盖的规则的阀值,这里可以自定义项目的阀值,默认阀值
  • -enable-rule 支持的规则,默认是oclint提供的都支持,可以组合-disable-rule来过滤掉一些规则 规则列表
  • -disable-rule 需要忽略的规则,根据项目需求设置
  • -report-type 分析的报告的类型,支持[text、html、xml、json、pmd],差异可见对应Sample; 一般会选择可读性好的html或者pmd;这里我们选取pmd类型,用于结合PMD analysis生成PMD warnings,能比较友好的在Jenkins的看板中展示出来。

4. 分析规则

名称

描述

默认阈值

CYCLOMATIC_COMPLEXITY

方法的循环复杂性(圈负责度)

10

LONG_CLASS

C类或Objective-C接口,类别,协议和实现的行数

1000

LONG_LINE

一行代码的字符数

100

LONG_METHOD

方法或函数的行数

50

LONG_VARIABLE_NAME

变量名称的字符数

20

MAXIMUM_IF_LENGTH

if语句的行数

15

MINIMUM_CASES_IN_SWITCH

switch语句中的case数

3

NPATH_COMPLEXITY

方法的NPath复杂性

200

NCSS_METHOD

一个没有注释的方法语句数

30

NESTED_BLOCK_DEPTH

块或复合语句的深度

5

SHORT_VARIABLE_NAME

变量名称的字符数

3

TOO_MANY_FIELDS

类的字段数

20

TOO_MANY_METHODS

类的方法数

30

TOO_MANY_PARAMETERS

方法的参数数

10

更详细的默认规则可到这里查看

5. 分析结果:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 环境部署
  • 脚本
相关产品与服务
腾讯云代码分析
腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档