目录 [−]
原文: Lint your #golang code like a mad man!, 作者: Arsham Shirvani
我使用下面的工具来改进我的代码,除了vendor
文件夹。我的操作系统是GNU/Linux
,但是稍微修改一下脚本应该也能运行在你的操作系统上。我使用glide来处理依赖(vendor),但你也可以使用你的包依赖管理工具来替换glide nv
, 这个命令列出了所有的文件夹,除了vender (译者按: Go 1.9中可以直接使用./...
,它会排除vendor文件夹)。有些情况下glide nv
不适合,所以我使用了它的老式风格。
注意我使用$
作为shell的提示符。
gofmt
Go安装程序中自带了gofmt
工具,可以使用它来格式化代码,保持一致的代码风格:
|
|
gocyclo
gocyclo 用来检查函数的复杂度。
安装:
|
|
使用:
|
|
上面的命令列出了所有复杂度大于12的函数。你还可以提出最复杂的几个:
|
|
interfacer
interfacer 是一个有趣的工具,依照作者所说:
这个工具提供接口类型的建议,换句话说,它会对可以本没有必要定义成具体的类型的代码提出警告
安装:
|
|
使用:
|
|
译者按:看官方的例子就明白这个工具的作用了:
|
|
|
|
deadcode
deadcode会告诉你哪些代码片段根本没用。
安装:
|
|
使用:
|
|
gotype
gotype会对go文件和包进行语义(semantic)和句法(syntactic)的分析,这是google提供的一个工具。
安装:
|
|
使用:
|
|
misspell
misspell用来拼写检查,对国内英语不太熟练的同学很有帮助。
安装:
|
|
使用:
|
|
staticcheck
staticcheck是一个超牛的工具,提供了巨多的静态检查,就像 C#生态圈的 ReSharper 一样。
安装:
|
|
使用:
|
|
gosimple
gosimple 提供信息,帮助你了解哪些代码可以简化。
安装:
|
|
使用:
|
|
译者按: 事实上这个工具和上面的staticcheck工具已经合并为同一个项目了:go-tools,这个项目提供了非常好的工具, 还包括 structlayout-optimize
、unused
、rdeps
、keyify
等,值的你去探索。
goconst
goconst 会查找重复的字符串,这些字符串可以抽取成常量。
|
|
使用:
|
|
以上是作者列出的一些工具, 和我以前的一篇文章中列出的工具有很多重合的: 使用工具检查你的代码, 事实上我在项目中已经使用了文中很多的代码,非常非常的有帮助,希望你在阅读后能有所收获,快将这些工具加入到你的Makefile文件中吧。