🛠️
Go言語 品質向上 ツール
Go言語の便利なツール
-
Goで書いたプログラムの品質の向上させたい...ということで、簡単に利用できるツールをまとめました。
-
ツールを利用すると、「コードの一貫性と読みやすさUP」「インポート整理」「ミスやエラーの早期発見」「プロダクティビティUP」などのメリットがあります。
ツール一覧
gofmt
- コードのインデント、スペースの配置、行の折り返しなどを自動的に整える。
goimports
-
.go
ファイルの必要なインポートステートメントが追加され、不要なインポートステートメントが削除される。
golint
- コーディングスタイルの問題や一般的なエラーパターンを検出する。(変数の命名規則、コメントの形式、不要なコード、冗長なコードなど)
go vet
- ポテンシャルなエラーや不正な使用法を静的解析によって検出する。(未使用の変数、未定義の関数、型の不一致、メモリリークなど)
go mod tidy
-
go.mod
ファイル、go.sum
ファイル内を整理する。importを追加、削除など変更したときに利用すると、ファイルをきれいにしてくれる。(個人的に一番利用しています)
インストール方法
goimports
go install golang.org/x/tools/cmd/goimports@latest
golint
go install golang.org/x/lint/golint@latest
gofmt , go vet , go mod tidy
- Goの標準パッケージに含まれているため、インストールの必要はありません。
コマンド
gofmt -w [main.go]
goimports -w [main.go]
golint [main.go]
go vet [main.go]
go mod tidy
main.go
main.go
package main
import "fmt"
func main() {
var message = "Hello, World!"
fmt.Println(mesage) // タイプミス: mesage -> message
var x int
fmt.Println("x =", x) // xが初期化されていない
var y string = "Hello, Golang!"
fmt.Println(y) // yは使用されていない(未使用変数)
}
コマンド実行
gofmt -w main.go
goimports -w main.go
golint main.go
go vet main.go
go mod tidy
gofmt
- インデント整理
main.go
package main
import "fmt"
func main() {
var message = "Hello, World!"
fmt.Println(mesage) // タイプミス: mesage -> message
var x int
fmt.Println("x =", x) // xが初期化されていない
var y string = "Hello, Golang!"
fmt.Println(y) // yは使用されていない(未使用変数)
}
goimports
- 変更なし (コードの整形)
golint
- エラー出力
main.go:7:2: should replace mesage with message
main.go:10:2: should drop "x =" from comment or add comment to preceding variable declaration
main.go:13:2: y declared but not used
go vet
- エラー出力
# command-line-arguments
./main.go:7:18: undefined: mesage
./main.go:13:6: y declared and not used
go mod tidy
- 変化なし (go.mod,go.sumファイル修正)
Discussion