【iOS开发】Swift代码风格检查库 —— SwiftLint

SwiftLint

一直以来,我都非常注重代码的风格,例如变量和方法的命名、是否需要空白行、如果让代码更加简短并且保持高可读性等等,有时候我会对一个变量或者方法名纠结好久,就是为了找到一个更清晰易懂的名字。

SwiftLint是一个检查Swift代码风格的第三方库,他可以让我们在编写代码的时候减少不必要的错误和冗余代码,并且使代码更加清晰易懂。尽早养成一个良好的编程习惯非常重要。

大家可以先看看有哪些良好的Swift编程习惯:swift-style-guide >>,这个中文版的,英语好的可以去看英文版的。

安装

用Homebrew安装:brew install swiftlint
在Xcode添加运行脚本
if which swiftlint >/dev/null; then
  swiftlint
else
  echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint"
fi

添加方法如下图:

xcode添加脚本.png
添加配置文件

在想要执行代码风格检查的文件夹新建一个名为.swiftlint.yml的文件(注意不要漏了前面的点),我们可以在这个文件添加一些自定义的规则:

  • disabled_rules:从默认的可用规则集合中,禁用规则
  • opt_in_rules:激活不在默认的可用规则集合的规则
  • whitelist_rules:白名单规则,只有在这个列表的规则才会被激活,在这个列表激活的规则不能出现在disabled_rules 或者 opt_in_rules

下面是自定义配置文件的示例:

disabled_rules: # 禁用规则
  - colon
  - comma
  - control_statement
opt_in_rules: # 可选规则
  - empty_count
  - missing_docs
  # 执行这个命令可以查看所有规则: swiftlint rules
included: # 指定需要进行风格检查的路径
  - Source
excluded: # 指定不需要进行风格检查的路径,优先于included
  - Carthage
  - Pods
  - Source/ExcludedFolder
  - Source/ExcludedFile.swift

# 自定义某个规则
force_cast: warning # 隐式地
force_try:
  severity: warning # 显式地
# 有warning和error的规则,可以仅仅设置warning
# 隐式地
line_length: 110
# 使用一个数组隐式地设置
type_body_length:
  - 300 # warning
  - 400 # error
# 或者显式地设置
file_length:
  warning: 500
  error: 1200
# 命名规则可以为min_length和max_length设置warnings或者errors
# 另外可以设置某些名字除外
type_name:
  min_length: 4 # 只设置 warning
  max_length: # 同时设置warning和error
    warning: 40
    error: 50
  excluded: iPhone # 这些字符串除外
identifier_name:
  min_length: # 只设置 min_length
    error: 4 # 只设置 error
  excluded: # 这些字符串除外
    - id
    - URL
    - GlobalAPIKey
reporter: "xcode" # 指定报告类型 (xcode, json, csv, checkstyle, junit, html, emoji)

swiftlint命令

   autocorrect  自动更正warnings和errors
   help         查看帮助 
   lint         查看当前文件夹的文件中的warnings和errors,这是默认命令
   rules        查看所有规则
   version      查看SwiftLint的版本

实际使用

下面是我在某个项目中实际运用SwiftLint。.swiftlint.yml配置文件如下:

included:
    - LBJWeChat
excluded:
    - Pods
cyclomatic_complexity:
  warning: 20
  error: 30
disabled_rules:
    - trailing_newline
    - opening_brace
    - empty_count
    - comma
    - colon
    - force_cast
    - type_name
    - trailing_semicolon
    - force_try
    - function_body_length
    - nesting
    - variable_name
    - operator_whitespace
    - control_statement
    - legacy_constant
    - line_length
    - return_arrow_whitespace
    - trailing_whitespace
    - closing_brace
    - statement_position
    - type_body_length
    - todo
    - legacy_constructor
    - valid_docs
    - missing_docs
    - file_length
    - leading_whitespace
identifier_name:
    excluded: id # 允许命名为id

在刚开始时,我们先把所有想要检查的规则放到disabled_rules,然后每次删除一个规则,删除后记得保存。删除一个规则后,在终端执行swiftlint,就能看到有多少个warning和error,例如这个执行结果有36个warnings和5个errors:Done linting! Found 36 violations, 5 serious in 55 files.

某些规则的warning可以让swiftlint自动帮我们解决,例如trailing_newlinecommacolon等等,执行swiftlint autocorrect即可。如果不能自动解决的,那么需要自己手动一个个改。

直到disabled_rules列表的所有规则删除完后,代码风格检查工作也完成了。

更新SwiftLint

如果SwiftLint有新版本,在终端执行brew upgrade swiftlint,然后在Build一下,看看项目有哪些代码风格问题。

如果有问题,欢迎大家留言。同时欢迎真心喜欢Swift的童鞋加入我管理的Swift开发群:536353151,本群只讨论Swift相关内容。谢谢!(目前群里人数不多,呵呵)

推荐阅读更多精彩内容

  • 随心自在人生路 心随自在常自然 自在随心怎久长 在自随心不恋凡
    随心Rider阅读 187评论 0 0
  • 获取证书 申请证书https://startssl.com/ 生成开源证书 概述 https默认端口443 htt...
    金色的清晨阅读 719评论 0 0
  • 我有一个漂亮的新朋友,它的名字叫模型飞机。 它身穿蓝灰色的外衣,外衣上写着几个英文字母,显得十分霸气。它...
    党若语阅读 141评论 0 1
  • 信步徒登峰林近,青松老树生根。冷风吹月雁纷纷,是时夜五分,寂寞在山门。 此中景色匀人醉,霜江凝夜沉沉。相思难念惹边...
    迷曳阅读 124评论 2 6