iOS开发-OCLint的安装和使用(命令行)

关于OCLint

OCLint是一个静态代码分析工具,提高质量和减少缺陷通过检查C 、C++ 和Objective-C 代码和寻找潜在的问题

可能的缺陷 - 空的if / else / try / catch / finally语句
未使用的代码 - 未使用的局部变量和参数
复杂的代码 - 很高的圈复杂度,NPath复杂性和太高的NCSS
代码异味 - 长方法和参数列表
长方法和参数列表不好的实践——倒逻辑和参数重新分配
…

静态代码分析是一个来检测对于编译不可见的缺陷的关键技术。

OCLint官网地址

安装步骤

1、如果没有安装homebrew,就去官网按照教程安装一下

homebrew官网安装

2、使用homebrew安装OCLint和xcpretty

使用第三方的软件会比使用xcodebuild方便些
最新xctool的build方法已经弃用,不能配合OCLint使用,推荐使用xcpretty

// 安装OCLint
brew tap oclint/formulae
brew install oclint
// 安装xcpretty
gem install xcpretty

// 以后可能需要更新
brew update
brew upgrade oclint

3、使用

在终端进入项目目录,然后替换workspace的名字和scheme的名字,将修改好的命令粘贴到终端执行,等待命令执行完毕

myworkspace=haha.xcworkspace # 替换workspace的名字
myscheme=haha # 替换scheme的名字
xcodebuild -workspace $myworkspace -scheme $myscheme clean&&
xcodebuild -workspace $myworkspace -scheme $myscheme \
-configuration Debug \
| xcpretty -r json-compilation-database -o compile_commands.json&&
oclint-json-compilation-database -e Pods -- \
-report-type html -o oclint_result.html \
-rc LONG_LINE=200 \
-max-priority-1=100000 \
-max-priority-2=100000 \
-max-priority-3=100000; \
rm compile_commands.json;
if [ -f ./oclint_result.html ]; then echo '-----分析完毕-----'
else echo "-----分析失败-----"; fi

中间可能会在Build Succeeded后面等待一段时间,这是因为OCLint在分析文件
等待命令执行完成,终端会打印出—–分析完毕—–字样,
打开项目目录,会看到目录下会多出一个oclint_result.html的文件

如果没有使用cocoapods,则去掉myworkspace=haha.xcworkspace、-workspace myworkspaceworkspace myworkspace,然后再在终端执行
另外可以自己建一个xx.sh的文件,将上面代码粘贴进去,每次在命令行进入xx.sh所在目录执行bash xx.sh就可以了

有时候会遇到问题:

xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance

解决方法:

 sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer

有时候编译不通过报错:
解决方案
参考文章

解决了,Podfile添加hook:


post_install do |installer|

    installer.pods_project.targets.each do |target|

        target.build_configurations.each do |config|

            config.build_settings['COMPILER_INDEX_STORE_ENABLE'] = "NO"

        end

    end

end

同时,pod的主工程也需要设置COMPILER_INDEX_STORE_ENABLE这个值为NO

4、查看oclint_result.html文件

OCLint的分析结果:
优先级的级别是从Priority 1, Priority 2, Priority 3 依次降低的
Total Files 总文件数
Files with Violations 违规文件数
Compiler Warnings 表示项目中的警告⚠️
Compiler Errors 表示编译错误
Location 表示警告的位置
报告中的描述其实非常清晰,一般找到代码位置,结合代码理解下,自己基本都能明白了

5、自定义规则

上面的命令中
-e Pods 表示移除Pods文件夹里代码的分析, 如果有继续-e Debug.m
-report-type html 表示分析后输出的文件类型为HTML,查看其他支持的文件类型
-o oclint_result.html 表示输出到oclint_result.html这个文件中()
-rc LONG_LINE=200 表示每行最大字节长度为200(默认值为100,感觉在OC中100完全不够用啊)

一些常用规则的注释
# --命名
# 变量名字最长字节
#-rc=LONG_VARIABLE_NAME=20 \
# 变量名字最短字节
#-disable-rule ShortVariableName \
# --size
# 圈复杂度
#-re=CYCLOMATIC_COMPLEXITY=10 \
# 每个类最行数
#-rc=LONG_CLASS=700 \
# 每行字节数量
#-rc=LONG_LINE=200 \
# 每个方法行数
#-rc=LONG_METHOD=80 \
# 忽略注释后括号后的有效代码行数
#-rc=NCSS_METHOD=40 \
# 嵌套深度
#-rc=NESTED_BLOCK_DEPTH=5 \
# 字段数量
#-rc=TOO_MANY_FIELDS=20 \
# 方法数量
#-rc=TOO_MANY_METHODS=30 \
# 方法参数
#-rc=TOO_MANY_PARAMETERS=6

oclint-json-compilation-database命令手册
oclint命令手册
OCLint自定义规则介绍
OCLint全部规则介绍
文档里面有每个规则的demo和对应的命令名字。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iOS开发中,支付是一个非常重要的功能。在开发支付时,需要考虑到支付流程、支付方式、支付安全等方面的内容。以下是一些开发支付的要点: 1. 集成支付SDK iOS开发中,一般使用第三方支付SDK来实现支付功能。常见的支付SDK包括:支付宝SDK、微信支付SDK、银联支付SDK等。在使用SDK前,需要先注册开发者账号,并获取相应的API Key和App ID等信息。 2. 支付流程 支付流程一般包括以下几个步骤: - 用户选择支付方式; - 向支付平台发起支付请求; - 用户输入支付密码; - 支付平台返回支付结果; - 应用根据支付结果进行相应的处理。 3. 支付安全 支付安全是非常重要的。在开发中,需要考虑到以下方面: - 用户信息的安全保护:包括用户的账号、密码、支付信息等; - 支付数据的安全保护:对于涉及到支付的数据,需要采用加密算法进行保护,避免被非法攻击者窃取; - 安全审计:需要对支付过程中的各个环节进行安全审计,及时发现并修复漏洞。 4. 支付方式 在iOS开发中,常见的支付方式包括: - 支付宝支付:支持PC端、移动端、扫码支付等多种支付方式; - 微信支付:支持微信内支付、H5支付、APP支付等多种支付方式; - 苹果支付:支持应用内购买,用户可以直接使用Apple ID进行支付。 需要根据应用的实际情况,选择适合的支付方式。 总之,开发支付需要考虑到多个方面的内容,包括支付流程、支付方式、支付安全等,需要仔细规划和实现,以保证支付功能的正常运作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值