Golint < Json should be JSON!
「えっ、そんなん言われても・・・」
使ってますか Golint
この子です。Golangを使ってるときには欠かせない(はず)の静的解析ツールです。
細かな関数名のスペルだったり、明らかに冗長なコードを書いていたり、
あるいは公開している関数や構造体なのにドキュメントコメントが無い場合などなど
色々アドバイスをくれる憎いやつです。
具体的にどんなことしてくれるのかは下記のスライドが詳しかったので紹介します。
www.slideshare.net
Golint の簡単な使い方
導入は go get から簡単に行なえます。
go get -u github.com/golang/lint/golint
usage がそのままなので抜粋します。
基本形は golint hoge.go
や golint package-name
です。
$ golint -h Usage of golint: golint [flags] # runs on package in current directory golint [flags] [packages] golint [flags] [directories] # where a '/...' suffix includes all sub-directories golint [flags] [files] # all must belong to a single package Flags: -min_confidence float minimum confidence of a problem to print it (default 0.8) -set_exit_status set exit status to 1 if any issues are found
ガツンとカレントディレクトリ配下全てのチェックを行う場合は下記のようにします。
# カレントディレクトリ配下のチェックを行う
golint ./...
「Json should be JSON」
ここで1つされやすい(と思われる)警告を例に上げてみます。
一般的な略語(URLとかXSSとかSSHとか) については合致するものは例えば、
Url や Xss、Ssh と言うように記述しているときに警告されます。
その時は
func hogeFugaJson should be hogeFugaJSON
というように警告されます。
定義されている略語は下記のようになっています。
lint/lint.go at b8599f7d71e7fead76b25aeb919c0e2558672f4a · golang/lint · GitHub
とはいえチェックが五月蠅すぎる・・・
という場合はあると思うので、あくまで最終的な手段として
min_confidence
というパラメータを設定することができます。
これは golint を実行した際に警告される最低レベルを実数で設定するとができます。
具体的には下記のような感じです。
golint ./... -min_confidence=1
デフォルトでは Usageにもあったように 0.8 で動作しています。
各解析結果を警告するかどうかはそれぞれで動作する段階があり、
例えば先のJson/JSON問題で言えば下記の行で指定がされており
0.8 で動作するようになっていることがわかります。
lint/lint.go at b8599f7d71e7fead76b25aeb919c0e2558672f4a · golang/lint · GitHub
つまり、この場合は0.9以上の値にすればこの警告については黙ってくれるということになるわけですね。
とはいえ難しいものでなければ可能な限りデフォルトで実行されるgolintに対応できると気持ち良いのではないかと思います