Swift-lint 的安装和使用

1 Swift 代码风格规范简介

首先要了解如下这三个文档:

  • Github 代码风格规范: star 4000+ (截至2017年4月)

    暂命名为 github 规范.

  • Raywenderlich 代码风格规范: star 7000+ (截至2017年4月)

    暂命名为 温德里奇规范.

  • 苹果API设计原则(API Design Guidelines)

    苹果这个设计原则是许多规范的根源, 需要深入了解.

写作本文时, swift刚发布到 3.1 版本. 流行的 Swift 代码风格规范也只更新到对应 3.1, 后续需要不断完善补充.

不过这些规范都是基于苹果的 API 设计原则 再进行总结给出的, 故需要首先了解苹果的 API 设计原则.

2 swift-lint插件的安装和使用

swift-lint 是针对 swift 的代码风格检查工具. 它可以内置到工程中, 也可以全局安装到系统. 具有使用简单, 配置灵活的特点. 下面就来介绍它的安装, 配置和使用方法.

swift-lint 插件Github地址.

由于全世界都在逐步过渡到 swift, 基于 OC 的代码风格检查工具不再引入, 新项目争取也不再使用 OC 作为主要开发语言, 后续新模块也将使用 Swift 进行开发.

2.1 通过命令行安装

通过命令行安装的话, 首先首先安装 homebrew. 之后在命令行运行:

brew install swiftlint

之后需要在工程根目录或子目录中添加 swift-lint 配置文件(见 2.3 节) .

如果是通过命令行方式安装, 则需要进入到工程目录, 然后再运行:

swiftlint   # 当然也可以在工程添加 run script 脚本实现

2.2 通过pod方式安装和使用

推荐采用这个方式安装, 这样在多人协作的时候不用重复进行安装和配置, 直接执行 pod install 就可以使用了.

  1. 在 Podfile 中添加如下代码:

    pod 'SwiftLint'
    
  2. 打开工程并找到对应 target 的 Build Phases:

Swift-lint 的安装和使用_第1张图片

添加一个 Run Script 脚本, 脚本内容为:

Swift-lint 的安装和使用_第2张图片
添加 Run Script 过程
${PODS_ROOT}/SwiftLint/swiftlint

添加后如下图所示(实际使用时请修改进入的目录和选择是否使用 autocorrect 功能):

Swift-lint 的安装和使用_第3张图片
脚本内容

之后需要在工程根目录或子目录中添加 swift-lint 配置文件(见 2.3 节) .

至此就可以正常使用了, 每次编译工程的时候都会自动进行代码风格检查.

2.3 配置文件

虽然 swift-lint 不需要配置也可以正常使用(此时使用的是默认的规则), 但对于生产环境下的复杂场景, 就需要根据不同的任务目标来相应进行配置.

swift-lint 使用 .swiftlint.yml 文件进行配置, 并且可以在同一工程中不同文件夹下使用不同的配置文件, 这样可以达到对不同模块进行区别控制.

本文档提供的两个针对不同用途的配置文件.

适用于一般工程的配置文件:

# 要查看 swiftlint 的所有内置规则, 请在终端执行: swiftlint rules
disabled_rules: # 需要关闭的强制性规则
#  - colon
#  - comma
#  - control_statement
   - for_where
opt_in_rules: # 需要打开的可选规则
  - empty_count
  - missing_docs
  - closure_end_indentation
  - closure_spacing
  - force_unwrapping
  - implicitly_unwrapped_optional
  - operator_usage_whitespace
  - redundant_nil_coalescing
included: # 需要进行语法检查的文件夹列表, 每个文件夹都以 - 开头
  - Sources   # 演示
excluded: # 需要在语法检查时候排除掉的文件夹. 比如 Pod 或 Carthage 等第三方源代码文件夹.
  - Carthage
  - Pods

# 以下是规则参数配置:
force_cast: warning # implicitly
force_try:
  severity: warning # explicitly

line_length: 120   # 单行字符个数限制

type_body_length:  # 类型体行数限制
  - 300 # warning
  - 400 # error

function_body_length: 100   # 函数或方法的内容行数限制
function_parameter_count: 6  # 函数或方法的参数个数限制
file_length:    # 文件行数限制
  warning: 500
  error: 1200

type_name:    # 类型命名时字符个数限制
  min_length: 2 # warning
  max_length: # warning and error
    warning: 40
    error: 50
  excluded: iPhone # 排除
identifier_name:   # 标识符命名时字符个数限制
  min_length: # only min_length
    error: 4 # only error
  excluded: # excluded via string array
    - id
    - URL
    - GlobalAPIKey
reporter: "xcode" # reporter type (xcode, json, csv, checkstyle, junit, html, emoji)

适用于算法工程的配置文件:

cyclomatic_complexity: 12
file_length: 550
function_body_length: 80
function_parameter_count: 8
line_length: 150
type_body_length: 300
variable_name:
  min_length:
    error: 1
    warning: 1
  excluded:
    - N
disabled_rules:
  - valid_docs

custom_rules:
  smiley_face:
    name: "Smiley Face"
    regex: "(\:\))"
    match_kinds: 
      - comment
      - string
    message: "A closing parenthesis smiley :) creates a half-hearted smile, and thus is not preferred. Use :]"
    severity: warning

上述配置文件在使用时需要结合实际规范做小范围修改(主要是包含文件夹等配置内容).

其他配置细节详见 swift-lint 插件的 ReadMe.

你可能感兴趣的:(Swift-lint 的安装和使用)