Go言語のlinter staticcheck
をGoLandでも有効にする方法を調べてみました。
staticcheck.io
プラグインとして提供されていると楽そうですが、2022年6月現在 staticcheck
のプラグインはないので、IntelliJ IDEA製品の機能であるFile Watchersを使って有効にしています。
前提
- staticcheck 2022.1.2 (v0.3.2)
- GoLand 2022.1.3
導入
staticcheckインストール
$ go install honnef.co/go/tools/cmd/staticcheck@latest
インストールしたらバイナリのパスを確認します。
$ which staticcheck /Users/t.morita/.anyenv/envs/goenv/shims/staticcheck
GoLandの設定
テンプレートを選択します。
プログラムの欄に、先ほど確認したstaticcheckのバイナリのパスを指定します。
最初ファイルタイプ「Goファイル」を見つけられなかったので、あれ!?どうやって設定するんだろうと思ったのですが、デフォルトで設定されているファイルタイプ「不明」の上の方にありました。
[:上にスクロールするとテンプレートからGoファイルが見つかる]
すべてのプロジェクトで staticcheck
を有効にするために、レベルをグローバルに変更します。
確認
設定が終わると、ファイルタイプに該当するファイルを編集すると自動的に staticcheck
を実行し、結果を出力してくれます。
以下のようなコードに対して staticcheck
を実行して結果を確認してみます。
package main import ( "fmt" "log" "os" ) func main() { f, err := os.Open("hoge.txt") fmt.Printf("%s\n", f.Name()) if err != nil { log.Fatal(err) } f, err = os.Open("hoge.txt") fmt.Printf("%s\n", f.Name()) }
初回実行時、実行の出力タブに以下のように表示されていました。
「プロジェクトを信頼して実行」を選択すると、staticcheck
が実行され、以下のようにエラーになった内容が表示されます。
エラーの内容を読むと err
が使われていないことがわかるのでエラーチェックが漏れていることに気がつけそうです。
また、エラーのファイル:行数をクリックすると、エディタの該当行にフォーカスが当たってくれるのも便利です。
[:エラーのファイル:行数をクリックするとエディタの該当行がフォーカスされる]