swiftlint swift代码规范检查神器

一大堆的你为何要用swiftlint,你为何要codereview,swiftlint到底在作什么,就很少说了,没意义,他就是帮助你写出规范漂亮代码的神器!git

  • 安装

官方提供了三种安装的方式github

  1. homebrew
brew install swiftlint
  1. cocoapods
pod 'SwiftLint'
  1. pkg安装

https://github.com/realm/SwiftLint/releases/tag/0.24.2swift

使用:

整合 SwiftLint 到 Xcode 体系中去从而可使警告和错误显示到 IDE 上,只须要在 Xcode 中添加一个新的“Run Script Phase”而且包含以下代码便可:bash

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

或者,脚本看起来应该像这样若是你已经经过 CocoaPods 安装了 SwiftLint:app

"${PODS_ROOT}/SwiftLint/swiftlint"

Rules:

swiftlint整合了大约70中的代码规范,你能够选择性的在代码中使用;框架

咱们将目录切换到工程的根目录之下,而后敲击以下命令:编辑器

swiftlint autocorrect

而后咱们就会发现,全部的空格符Warning都消失了。这都得益于咱们刚刚所进行的命令行操做,它会将已知的可以自动修复的Error和Warning都自动修复,大大的减轻了咱们的工做量。ide

可是又出现了一个问题,在项目的根目录之下执行自动纠正,SwiftLint会将Pods文件夹中的Swift文件也一块儿纠正了,第三方的框架原则上能不动就不动,那么咱们该怎么办呢?spa

这个时候就须要.swiftlint.yml文件了。那么这是一个什么文件呢?在使用SwiftLint的时候,不少时候咱们会碰到一些自定义的规则需求,这个时候就须要.swiftlint.yml来解决问题了。命令行

.swiftlint.yml

所谓的.swiftlint.yml其实就是SwiftLint的一个配置文件,咱们能够经过这个配置文件来修改约束的规则,以此达到自定义的效果。

建立.swiftlint.yml必须严格按照命名建立,Mac能够直接使用文本编辑器建立,Mac默认不容许建立以.开头的文件名,因此建议你们使用命令行建立文件,而后编辑便可:

touch .swiftlint.yml

建立好以后是不可见的,咱们须要设置隐藏文件的可见:

显示:defaults write com.apple.finder AppleShowAllFiles -bool true
隐藏:defaults write com.apple.finder AppleShowAllFiles -bool false

设置好以后重启finder便可看到咱们建立的.swiftlint.yml 文件;

使用的时候,将.swiftlint.yml 放在须要执行swiftlint工程的根目录中,整个工程会执行.swiftlint.yml的配置;若是在二级目录一样配置了.swiftlint.yml文件,则会执行二级目录下的配置;

建立一个怎样的.swiftlint.yml文件?:

这个要根据我的的习惯,须要执行哪些约束以及不执行哪些约束,在哪些文件执行哪些文件不执行,下面是个人一个配置,供参考:

included:
    - JCFC_Loan_Swift
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 

咱们也能够在类内部执行注释来屏蔽某一条约束等,具体操做格式以下

// swiftlint:disable colon
let noWarning :String = "" // No warning about colons immediately after variable names!
// swiftlint:enable colon
let hasWarning :String = "" // Warning generated about colons immediately after variable names

好了,开始你的约束之路吧!

相关文章
相关标签/搜索