はじめに
Goの静的チェックのためのツール群をコマンドとともにいくつか紹介します。
ツール編
gofmt
goのコード整形ツールです。
Go teamによって標準化されています。
gofmt -l -w main.go
golint
goらしくない書き方を指摘するツールです。
golint .
go vet
goのバグを指摘するツールです。
go vet main.go
errcheck
エラーチェック漏れを指摘するツールです。
errcheck github.com/foo
例えば、下記のようなエラーチェックを行っていないと指摘されます
if err := router.Run(); err != nil {
log.Fatalf("server cant start :%v", err)
}
応用編
makefile
上記を統合してMakefileを作りましょう。
メリットは、コマンド間の依存関係を定義できる点です。
たとえば、 下記の場合、make build (単に makeで可)の前に go fmt, errcheck, およびgo vetが実行されていることを保証できます。
.DEFAULT_GOAL := build
fmt:
go fmt ./...
.PHONY:fmt
lint: fmt
golint ./...
.PHONY:lint
vet: fmt
go vet ./...
.PHONY:vet
errcheck: vet
errcheck ./...
.PHONY:errcheck
build: errcheck
go build .
.PHONY:build
run: errcheck
go run .
.PHONY:run
自動整形
フォーマットはエディターで自動化すると良いです。
vscodeの場合は次のような設定をします。
- Go for Visual Studio Codeというプラグインをインストール
- setting.jsonの記述
"editor.formatOnSave": true,
"[go]": {
"editor.defaultFormatter": "golang.go"
},