GoのLinter使ってる?
自分は Local で開発するときに intelliJ を使ってるんですが(ultimate版)、
FileWatcher という plugin を使って、ファイルを編集保存したタイミングで、
gofmt や gometalinter を実行するようにしてます。
PullReqでレビュー投げる前にここもっとsimpleに書けるよーとかコメント間違ってるよーとか教えてくれるので大変便利です。
GoMetaLinter が重い遅い件
ファイルを編集する度に gometalinter が実行されるとたまに結果が返ってくるのやたら遅かったり、
PCのファンが猛烈に回りだしたりします。
そこで、 golangci-lint に乗り換えてみました。
比較
下記はとあるアプリケーションの一部のソースコードに同じ linter設定で gometalinter と golangci-lint それぞれ実行結果を取ってみたものです。
% /usr/bin/time gometalinter --disable-all -E errcheck -E ineffassign -E interfacer -E unconvert -E misspell -E unparam -E nakedret -E dupl -E goconst -E gocyclo --cyclo-over=15 src/hoge/model 19.64 real 35.53 user 10.96 sys % /usr/bin/time golangci-lint run --disable-all -E errcheck -E ineffassign -E interfacer -E unconvert -E misspell -E unparam -E nakedret -E dupl -E goconst -E gocyclo --gocyclo.min-complexity 15 src/hoge/model 6.24 real 11.33 user 2.99 sys
golangci-lint の実行時間が gometalinter の 1/3 以下に。
結論
GolangCI-Lint is a linters aggregator. It's fast: on average 5 times faster than gometalinter.
そもそも golangci-lint の README に gometalinter より5倍速いぜ!って書いてあるの見ずに使ってました・・・
時間あるときに中のソースまで見たい。