Go (Golang) 工具之Golang格式化程序golines
什么是golines
https://github.com/segmentio/golines
Golines是一个Golang格式化程序,除了由gofmt
完成的所有格式修复外,缩短了长行。
动机
标准的 golang 格式工具(gofmt
, goimports
等)很大,但故意不缩短长行;相反,这是留给开发人员的一项动作。
虽然在谈到行长度方面存在不同的口味,但我们通常发现非常长的行比短行方案更难以阅读。举个例子:
myMap := map[string]string{"first key": "first value", "second key": "second value", "third key": "third value", "fourth key": "fourth value", "fifth key": "fifth value"}
vs.
myMap := map[string]string{
"first key": "first value",
"second key": "second value",
"third key": "third value",
"fourth key": "fourth value",
"fifth key": "fifth value",
}
根据他们的偏好,我们构建了 Go开发人员可以选择自动缩短长线的选项。
此博客文章中提供了更多背景和技术细节。
使用 golines 简洁您的 go 代码
首先,安装工具:
go install github.com/segmentio/golines@latest
golines [paths to format]
路径可以是目录或单个文件。如果没有提供路径,则从stdin(与gofmt一样)输入。
默认情况下,结果将打印到stdout。要覆盖现有文件,请使用-w
标志。
选项
以下部分描述了一些其他选项。运行golines --help
以查看所有可用的flags 和settings。
-
Line length settings
默认情况下,该工具尝试缩短长于100列的行,并假定1个选项卡= 4列。后者可以分别通过-m和-t标志进行更改。 -
Dry-run mode
运行工具使用--dry-run
, 显示漂亮,git风格的差异。 -
Comment shortening
缩短的长注释行比缩短代码更难,因为注释可以具有任意结构和格式。Golines包括缩短单行(即// - 前缀)注释的一些基本逻辑,但默认情况下,由于质量不大,因此默认情况下关闭。要启用此功能,请使用–shorten-comments标志运行。 -
Custom formatters
默认情况下,该工具将使用goimports
作为基本格式器(如果找到),否则它将恢复为gofmt
。可以通过--base-formatter
标志设置显式格式化程序;这里提供的命令应通过stdin
接受其输入并将其输出写入stdout
。 -
Generated files
默认情况下,该工具不会格式化它们生成的文件。如果您想要重新格式化这些,请使用-no-Ignore
标志。 -
Chained method splitting
有几种可能的方法可以分割作为方法链的一部分。golines采取的原始方法是在args上分裂,例如:
myObj.Method(
arg1,
arg2,
arg3,
).AnotherMethod(
arg1,
arg2,
).AThirdMethod(
arg1,
arg2,
)
从版本0.3.0开始,该工具现在默认拆分在点上,例如:
myObj.Method(arg1, arg2, arg3).
AnotherMethod(arg1, arg2).
AThirdMethod(arg1, arg2)
通过使用--no-chain-split-dots
标志运行工具可以使用原始行为。
- Struct tag reformatting
除了缩短长行外,该工具还对齐结构标签键;请参阅_fixtures目录中的之前和之后的示例。要关闭此行为,请使用--no-reformat-tags
运行。