Skip to content

🐈 Nekonote.

Golint < Json should be JSON!

February 15, 2017

「えっ、そんなん言われても・・・」


使ってますか Golint

この子です。Golangを使ってるときには欠かせない(はず)の静的解析ツールです。

細かな関数名のスペルだったり、明らかに冗長なコードを書いていたり、 あるいは公開している関数や構造体なのにドキュメントコメントが無い場合などなど 色々アドバイスをくれる憎いやつです。

具体的にどんなことしてくれるのかは下記のスライドが詳しかったので紹介します。

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

というように警告されます。

定義されている略語は下記のようになっています。

とはいえチェックが五月蠅すぎる・・・

という場合はあると思うので、あくまで最終的な手段として min_confidence というパラメータを設定することができます。

これは golint を実行した際に警告される最低レベルを実数で設定するとができます。 具体的には下記のような感じです。

golint ./... -min_confidence=1

デフォルトでは Usageにもあったように 0.8 で動作しています。

各解析結果を警告するかどうかはそれぞれで動作する段階があり、 例えば先のJson/JSON問題で言えば下記の行で指定がされており 0.8 で動作するようになっていることがわかります。

つまり、この場合は0.9以上の値にすればこの警告については黙ってくれるということになるわけですね。

とはいえ難しいものでなければ可能な限りデフォルトで実行されるgolintに対応できると気持ち良いのではないかと思います


関連リンク


忘備録や調べたことなどを気が向いたときに書いたりします。