SwiftLint:代码规范检查工具介绍

时间:2022-06-01 20:34:37

Swift-CodeStyle Checker:SwiftLint

介绍:

SwiftLint 是一个用于强制检查 Swift 代码风格和规定的一个工具,基本上以 GitHub's Swift 代码风格指南为基础。

SwiftLint官网:Github地址

SwiftLint中文博客(推荐):Xcode代码规范之SwiftLint配置

Swift代码规范:Github 公布的 Swift 代码规范

Swift Version Support

这里有一份 SwiftLint 版本和对应该 Swift 版本的对照表作为参考。

Swift 版本 最后一个 SwiftLint 支持版本
Swift 1.x SwiftLint 0.1.2
Swift 2.x SwiftLint 0.18.1
Swift 3.x SwiftLint 0.25.1
Swift 4.0-4.1.x SwiftLint 0.28.2
Swift 4.2.x-5.0 最新的

安装

使用 Homebrew

brew install swiftlint

XCode配置

安装完成后,需要在Xcode中配置相关设置,才能使 SwiftLint 在 Xcode 中自动检测代码规范。配置也很简单,只需要在 Xcode 的 Build Phases 中新建一个 Run Script Phase 配置项,在里面添加相关代码后,编译即可!

if which swiftlint >/dev/null; then
  swiftlint
else
  echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint"
fi

多Xcode配置

如果有多个Xcode在同时使用,需要切换xcode的配置环境:

//切换到默认Xcode版本
sudo xcode-select -s '/Applications/Xcode.app/Contents/Developer'
//切换到其他Xcode版本
sudo xcode-select -s '/Applications/Xcode 10.1.app/Contents/Developer’

到这一步基本完成安装和基础的操作,正常运行Xcode即可获得CodeStyle的检查结果

自定义配置

除了通用的功能,我们还经常要做一些额外的事情,比如:去掉第三方库的检查、去掉或改变一些检查规则等

新建自定义配置文件

打开终端, cd 到项目根目录下
输入: touch .swiftlint.yml
可以自定义的常用配置:

disabled_rules: # 禁用指定的规则
  - colon
  - comma
  - control_statement
opt_in_rules: # 启用指定的规则
  - empty_count
  - missing_docs
  # 可以通过执行如下指令来查找所有可用的规则:
  # swiftlint rules
included: # 执行 linting 时包含的路径。如果出现这个 `--path` 会被忽略。
  - Source
excluded: # 执行 linting 时忽略的路径。 优先级比 `included` 更高。
  - Carthage
  - Pods
  - Source/ExcludedFolder
  - Source/ExcludedFile.swift

忽略引入的第三方库

在.swiftlint.yml文件中输入

excluded: 
  - Pods

常用的规则修改项(简单模板)

在.swiftlint.yml文件中输入

excluded:  # 执行 linting 时忽略的路径。 优先级比 `included` 更高。
  - Pods

disabled_rules: # 执行时排除掉的规则
  - identifier_name    # 命名规则必须按照驼峰原则,与后台传的Json字段命名冲突,建议排除掉
  - trailing_whitespace   # 每一个空行不能有空格,会与Xcode换行后自动对齐生成的空格冲突,建议排除掉

force_cast: warning # 类型判断
force_try: warning # try语句判断

cyclomatic_complexity: 20 #代码复杂度,默认为10

line_length:  # 单行代码长度,默认error 120
  warning: 120
  error: 200

file_length:  # 文件长度
  warning: 500
  error: 1200

function_body_length: # 函数体长度
  warning: 100
  error: 300

这是一个基础版本,随着项目的开展,可分阶段将规则逐渐严格起来