🛠️

Go言語 品質向上 ツール

2023/06/27に公開

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