大约两年前(差不多),我介绍了 nit,我们的Opinionated Go linter用于文件内的代码组织,然后在几个月后发布了MVP版本,从那时起,我们一直在成功地使用nit ,以保持我们代码的一致性。
然而,还有一件小事我们没有自动执行:我们在生成Swagger 2.0文档时遵循的规则。为了了解更多的情况,我们已经在使用 go-swagger多年来,但这个提示过程并不是该包所独有的,它更多地与swagger.json 文件有关,该文件是在我们用相应的go-swagger元数据来注释我们的代码后生成的,是要与你的客户共享的。
直到现在,我们还没有执行它。让我向你介绍。 swagger-lint我们的Swagger 2.0规范的观点式linter。
什么是swagger-lint ?
swagger-lint 是一个linter,它强制执行我们在定义新资源、新模型和命名时遵循的惯例。这些规则非常简单明了,而且这个linter的实际代码一点都不复杂。
版本 v0.0.1是最新的版本,虽然是第一个版本,但它被认为是稳定的,可以用于生产。
安装和使用
你可以从发布页面下载已发布的二进制文件,或者你可以做。
go install github.com/MarioCarrion/nit/cmd/nit
或者使用tools.go 范例。
// +build tools
package tools
import (
_ "github.com/MarioCarrion/swagger-lint"
)
来使用它。
swagger-lint -input path/to/swagger.json
如果有任何违规行为,它将打印出来,包括具体的细节,为什么它被认为是违规的。
结论
这个工具让我们再次确保我们的代码在所有的项目中都是一致的,虽然这个工具的实现非常简单,但重要的是我们有具体的规则,每个人都同意并遵守,并且可以通过自动构建来执行,这就是关键的启示:如果你有规则或惯例,确保每一次提交一行代码到版本库时都可以执行。