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:

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

添加 Run Script 过程
${PODS_ROOT}/SwiftLint/swiftlint

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

脚本内容

之后需要在工程根目录或子目录中添加 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.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,126评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 16,500评论 4 61
  • 前天难得休息,就急急忙忙赶回家去。我知道不管我在那里,家里始终都有父母的牵挂,古稀之年的他们越来越渴望儿孙膝下的团...
    幸福D苏眉阅读 796评论 4 6
  • 在一堆琐碎杂物中一眼看到它,心里就是要定了的。主人即将离开学校,这盆养了两年的观音莲辗转到了我手里。肉嘟嘟的嫩绿叶...
    王幽舒阅读 520评论 3 3
  • 所有学生将在这里进行无限期的共同生活2.发生了案件要进行学级裁判3.夜晚会响起铃声通知进行睡觉,不去也没关系4.每...
    黎明卿_吉恩阅读 253评论 0 0

友情链接更多精彩内容