ktlint是一个自带格式化的静态代码分析工具,可用于规范化kotlin代码风格,还可以自动格式化代码,大大节省手动格式化的时间。简单来说,ktlint是一个包含了linter和formatter的静态代码分析工具。
特性(Features)
- 无须配置。也就是说无须讨论决定使用什么代码规范,也无须去管理特定文件。ktlint会从 kotlinlang.org 和 Android Kotlin Style Guide 中获取官方代码规范。当然 ktlint 不需要配置规则文件不意味着不允许扩展,ktlint 支持自定义.editorconfig 和规则集(ruleset)。
- 内置格式化工具。因此你无须手动去修复不规范的代码。
- 自定义化输出。在检查代码格式时,可以指定任何类型的输出,例如
plain
(+plain?group_by_file
,默认输出格式),json
,checkstyle
等类型,同时也很容易创建自己的输出格式。 - 已包含所有依赖的单个jar文件,即不需要引入其他的依赖,只需要下载单个jar文件即可。
标准规则(Standard rules)
- 缩进用4个space(除非在.editorConfig中设置了不同的
indent_size
值(使用方法参考EditorConfig)); - 无分号(除非用于在同一行上分隔多个语句);
- 不使用通配符和无用的
import
; - 无连续空行;
}
之前没有空行;- 无尾部空白;
- 不使用
Unit
返回值(即用fun fn {}
代替fun fn: Unit {}
); - 没有空的(
{}
) 类主体; - 范围(
..
)运算符周围没有空格; +
,-
,*
,/
,%
,&&
,||
等二进制运算符之前无换行符;- 在链式调用中,
.
,?.
和?:
应该放在下一行 - 在赋值(
=
)操作符处分行时,后续内容紧跟在赋值符号后面; - 当类/函数签名不适合单行时,每个参数必须位于单独一行;
- 统一字符串模板(
$v
而不是${v}
,${p.v}
而不是${p.v.toString()}
); - 统一修饰剂的顺序;
- 统一关键字,逗号,冒号,大括号,中缀运算符,注释等后面的间距;
- 在每个文件末尾换行(默认情况下不使用,但推荐使用)(在.editorConfig中设置
insert_final_newline=true
便可使用) 。</