Open LipYoung opened 6 years ago
在计算机科学中,lint是一种工具程序的名称,它用来标记源代码中,某些可疑的、不具结构性(可能造成bug)的段落。它是一种静态进程分析工具,最早适用于C语言,在UNIX平台上开发出来。后来它成为通用术语,可用于描述在任何一种电脑编程语言中,用来标记源代码中有疑义段落的工具。 摘自中文百科
在计算机科学中,lint是一种工具程序的名称,它用来标记源代码中,某些可疑的、不具结构性(可能造成bug)的段落。它是一种静态进程分析工具,最早适用于C语言,在UNIX平台上开发出来。后来它成为通用术语,可用于描述在任何一种电脑编程语言中,用来标记源代码中有疑义段落的工具。
摘自中文百科
SwiftLint是一个用于强制检查 Swift 代码风格和规定的一个工具.由realm维护.
SwiftLint
SwiftLint的特点是可以通过[ATS]()的方式展示代码检查的结果,换句话说,就是可以在安装了SwiftLint的Xcode上每次构建程序(commend + B),不符合检查器要求的部分就会和Xcode自带的错误警告使用一套相同的UI出现提示错误.
Xcode
(commend + B)
最终效果图:
SwiftLint的另外一大特点是可以自己定制检查规则.
ps: 目前该社区只实现了部分规则,社区希望大家能一起帮忙维护更多规则为社区做出贡献.有想法的童鞋点击该链接查看具体的提交说明,为开源社区回馈一份力量.
官方提供了三种安装方式:
SwiftLint.pkg
如果大家有自己更深度的代码规范定制需求,建议使用第三种.SwiftLint使用Swift代码编写,学习门槛不算太大,相关的开发文档都以英文为主.
Swift
这里我们使用第二种方式,到开源库下载最新版本的安装包.下载地址
双击打开安装包,使用安装器,傻瓜式安装即可.(自动安装时,需要避免本机同时拥有两个Xcode的情况,会导致异常,同时建议安装到Xcode 8.0以上版本)
Xcode 8.0
安装完毕后,打开Xcode,在 Xcode 中添加一个新的"Run Script Phase"并且包含如下代码即可:
if which swiftlint >/dev/null; then swiftlint else echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint" fi
这样就将SwiftLint整合到Xcode上,从而可以使警告和错误显示到Xcode上.
每次构建工程(commend + B)即可.
当你在一个旧的工程中初次安装使用SwiftLint时,不出意外编辑器会提示999+左右的警告和错误.大部分原因是因为检查了三方库的源码.
999+
所有首先配置需要哪些是需要检查的源码.
步奏1: 在工程的根目录下建议一个.swiftlint.yml文件. 步奏2: 在文件内写入规则.
.swiftlint.yml
included: # 执行 linting 时包含的路径。如果出现这个 `--path` 会被忽略。 - Source excluded: # 执行 linting 时忽略的路径。 优先级比 `included` 更高。
步奏3: 添加我们需要检查的文件夹,添加需要忽略的文件.
included: # 执行 linting 时包含的路径。如果出现这个 `--path` 会被忽略。 - Thinksns Plus/ - Thinksns PlusTests/ excluded: # 执行 linting 时忽略的路径。 优先级比 `included` 更高。 - Carthage - Pods - Source/ExcludedFolder - Source/ExcludedFile.swift
这个示例指的是,需要检查工程(Thinksns Plus/)下的相关文件的源码,同时检查(Thinksns PlusTests/)测试文件夹下的测试用例的源码.忽略(Carthage/)忽略(Pods/)这些三方库的源码.
(Thinksns Plus/)
(Thinksns PlusTests/)
(Carthage/)
(Pods/)
这样再次运行(commend + B),警告和错误都少了很多,而且都是本工程相关的错误.
但是这些错误是根据官方GitHub's Swift guide规则进行检查,不符合的地方报错.但是该代码指南不一定符合我们实际的需求,所以需要制定自己的检查规则.
GitHub's Swift guide
在配置检查规则之前,你需要一份自己的代码风格指南.
开始动手之前也需要熟读官方的配置文件语法.基本上都比较简单,看一次即可.接下来举几个我编写检查规则时遇到的问题.
disabled_rules: # 执行时排除掉的规则 - colon
disabled_rules这条规则顾名思义,检查时,某些规则不进行检查.colon这条规则指的是,如果你在编写了变量后必须紧跟上冒号.这样写之后,检查器会忽略掉该条规则.
disabled_rules
colon
你可以在终端中执行swiftlint rules来查看目前官方自带的所有规则名称和含义.
swiftlint rules
官方代码规则说明表
+-----------------------------------------+--------+-------------+------------------------+-----------------------------------------------------------------------------------------------------+ | identifier | opt-in | correctable | enabled in your config | configuration | +-----------------------------------------+--------+-------------+------------------------+-----------------------------------------------------------------------------------------------------+ | attributes | yes | no | no | warning, always_on_same_line: ["@IBAction", "@NSManaged"], always_on_line_above: [] | | closing_brace | no | yes | yes | warning | | closure_end_indentation | yes | no | no | warning | | closure_parameter_position | no | no | yes | warning | | closure_spacing | yes | no | no | warning | | colon | no | yes | yes | warning, flexible_right_spacing: false, apply_to_dictionaries: true | | comma | no | yes | yes | warning |
那么如果在实际的开发过程中,你只是需要对某个文件内不执行colon该如何配置?
你只需要在该代码的源文件中添加一条如下格式的注释即可:
// swiftlint:disable colon
这样在该文件内,所有的代码都不会被colon规则检查.
官方还提供了previous this 和 next .他们可以用来使关闭或者打开某条规则的命令分别应用于前一行,当前或者后一行代码
previous this 和 next
有些规则在开启的情况下,还需要配置更多的参数.例如file_length规则,他会检查每个文件的代码行数.安装下面的代码配置警告和错误.
file_length
file_length: warning: 500 error: 1200 # 命名规则可以设置最小长度和最大程度的警告/错误 # 此外它们也可以设置排除在外的名字
当文件代码行数超过 500 时警告.超过 1200 时错误,无法正常编辑工程.
官方还提供了自定义规则的方法,基于正则表达式
custom_rules: pirates_beat_ninjas: # 规则标识符 name: "Pirates Beat Ninjas" # 规则名称,可选 regex: "([n,N]inja)" # 匹配的模式 match_kinds: # 需要匹配的语法类型,可选 - comment - identifier message: "Pirates are better than ninjas." # 提示信息,可选 severity: error # 提示的级别,可选 no_hiding_in_strings: regex: "([n,N]inja)" match_kinds: string
相关的规则还会嵌套,和相关影响.更多的细节查看官方文档即可,不在赘述.
在确定源码被正常备份后使用swiftlint autocorrect指令可以对源代码进行自动修正.
swiftlint autocorrect
请慎重操作!
更多的关于SwiftLint的详细介绍可以查看这篇官方中文说明
GitHub's Swift 代码风格指南可以点击该链接
GitHub's Swift
2017-01-23的一篇博客,顺利搬迁🎉
介绍
SwiftLint
是一个用于强制检查 Swift 代码风格和规定的一个工具.由realm维护.SwiftLint
的特点是可以通过[ATS]()的方式展示代码检查的结果,换句话说,就是可以在安装了SwiftLint
的Xcode
上每次构建程序(commend + B)
,不符合检查器要求的部分就会和Xcode
自带的错误警告使用一套相同的UI出现提示错误.最终效果图:
SwiftLint
的另外一大特点是可以自己定制检查规则.ps: 目前该社区只实现了部分规则,社区希望大家能一起帮忙维护更多规则为社区做出贡献.有想法的童鞋点击该链接查看具体的提交说明,为开源社区回馈一份力量.
安装
官方提供了三种安装方式:
SwiftLint.pkg
,双击安装如果大家有自己更深度的代码规范定制需求,建议使用第三种.
SwiftLint
使用Swift
代码编写,学习门槛不算太大,相关的开发文档都以英文为主.这里我们使用第二种方式,到开源库下载最新版本的安装包.下载地址
双击打开安装包,使用安装器,傻瓜式安装即可.(自动安装时,需要避免本机同时拥有两个
Xcode
的情况,会导致异常,同时建议安装到Xcode 8.0
以上版本)安装完毕后,打开
Xcode
,在 Xcode 中添加一个新的"Run Script Phase"并且包含如下代码即可:这样就将
SwiftLint
整合到Xcode
上,从而可以使警告和错误显示到Xcode
上.使用
每次构建工程
(commend + B)
即可.配置规则
当你在一个旧的工程中初次安装使用
SwiftLint
时,不出意外编辑器会提示999+
左右的警告和错误.大部分原因是因为检查了三方库的源码.所有首先配置需要哪些是需要检查的源码.
配置文件夹
步奏1: 在工程的根目录下建议一个
.swiftlint.yml
文件. 步奏2: 在文件内写入规则.步奏3: 添加我们需要检查的文件夹,添加需要忽略的文件.
这个示例指的是,需要检查工程
(Thinksns Plus/)
下的相关文件的源码,同时检查(Thinksns PlusTests/)
测试文件夹下的测试用例的源码.忽略(Carthage/)
忽略(Pods/)
这些三方库的源码.这样再次运行
(commend + B)
,警告和错误都少了很多,而且都是本工程相关的错误.但是这些错误是根据官方
GitHub's Swift guide
规则进行检查,不符合的地方报错.但是该代码指南不一定符合我们实际的需求,所以需要制定自己的检查规则.配置检查规则
在配置检查规则之前,你需要一份自己的代码风格指南.
开始动手之前也需要熟读官方的配置文件语法.基本上都比较简单,看一次即可.接下来举几个我编写检查规则时遇到的问题.
开关规则
disabled_rules
这条规则顾名思义,检查时,某些规则不进行检查.colon
这条规则指的是,如果你在编写了变量后必须紧跟上冒号.这样写之后,检查器会忽略掉该条规则.你可以在终端中执行
swiftlint rules
来查看目前官方自带的所有规则名称和含义.官方代码规则说明表
那么如果在实际的开发过程中,你只是需要对某个文件内不执行
colon
该如何配置?你只需要在该代码的源文件中添加一条如下格式的注释即可:
// swiftlint:disable colon
这样在该文件内,所有的代码都不会被
colon
规则检查.官方还提供了
previous this 和 next
.他们可以用来使关闭或者打开某条规则的命令分别应用于前一行,当前或者后一行代码定制规则内容
有些规则在开启的情况下,还需要配置更多的参数.例如
file_length
规则,他会检查每个文件的代码行数.安装下面的代码配置警告和错误.当文件代码行数超过 500 时警告.超过 1200 时错误,无法正常编辑工程.
自定义规则
官方还提供了自定义规则的方法,基于正则表达式
更多规则
相关的规则还会嵌套,和相关影响.更多的细节查看官方文档即可,不在赘述.
自动修正
在确定源码被正常备份后使用
swiftlint autocorrect
指令可以对源代码进行自动修正.请慎重操作!
资料来源
更多的关于
SwiftLint
的详细介绍可以查看这篇官方中文说明GitHub's Swift
代码风格指南可以点击该链接