Dragon Arrow written by Tatsuya Nakaji, all rights reserved animated-dragon-image-0164

go言語 静的解析ツール

Oct 15, 2020

コードの品質を保つ


静的解析ツール 

go vet

ビルドは通るかもしれないが、バグの懸念のあるコードの検出

golint

コードの書式でGoらしくないコードを検出

errcheck

エラー処理のミスを検出

statickcheck

サードパーティ製の静的解析ツールのセット

GolangCI-Lint

サードパーティ製のLinter Runner



go vet

  • コンパイラでは発見できないバグを見つける
    • go testを走らせれば自動で実行される(Go1.10から)

    • The Go Playgroundでも実行される


package main


import "fmt"


func main() {
    fmt.Printf("%s\n", 100) # %sなのに数値が渡されている
}
$ go vet your_file.go



PRレビューで静的解析ツールを使用


  • reviewdog

    • https://github.com/reviewdog/reviewdog

    • レビュー時に自動で静的解析ツールを実行する

    • 機械的にチェックできることは機械にやらせる

    • 人間だと忘れたり、細かいことだとケチつけるみたいで、指摘がしずらい

    • 設定ファイルを書けばreviewdogが勝手にPRにコメントをくれる