| name | go-quality |
| description | Go バックエンドの品質チェック(golangci-lint + Swagger 生成)。「lint」「golangci-lint」「静的解析」「swagger」「OpenAPI」「ドキュメント生成」などのキーワードで自動適用。 |
Go 品質チェック(lint + Swagger)
Go バックエンドの静的解析と API ドキュメント生成。
プロジェクト検出
以下の優先順位で Go プロジェクトを検出:
- 環境変数
GO_BACKEND_DIR(go.mod の存在を確認)
- カレントディレクトリの
go.mod
- サブディレクトリ(
backend/, server/, api/, go/)
- 再帰検索(深さ2まで)
静的解析(golangci-lint)
実行
cd <backend_dir>
command -v golangci-lint || {
echo "golangci-lint がインストールされていません"
echo "インストール: brew install golangci-lint"
echo "または: go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest"
}
golangci-lint run ./...
Lint 設定
プロジェクトルートに .golangci.yml を配置してカスタマイズ可能:
linters:
enable:
- errcheck
- gosimple
- govet
- ineffassign
- staticcheck
- unused
linters-settings:
errcheck:
check-type-assertions: true
Swagger / OpenAPI 生成
実行
cd <backend_dir>
command -v swag || [[ -f "$HOME/go/bin/swag" ]] || {
echo "swag をインストール中..."
go install github.com/swaggo/swag/cmd/swag@latest
}
SWAG_CMD=$(command -v swag 2>/dev/null || echo "$HOME/go/bin/swag")
MAIN_PATH="${GO_MAIN_PATH:-}"
if [[ -z "$MAIN_PATH" ]]; then
for p in cmd/server/main.go cmd/api/main.go cmd/main.go main.go; do
[[ -f "$p" ]] && MAIN_PATH="$p" && break
done
fi
$SWAG_CMD init -g "$MAIN_PATH" -o docs --parseDependency --parseInternal
出力
生成されるファイル:
docs/docs.go — Go コード
docs/swagger.json — JSON 仕様
docs/swagger.yaml — YAML 仕様
よくあるエラー
golangci-lint が見つからない
golangci-lint: command not found
対処:
brew install golangci-lint
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
swag が見つからない
swag: command not found
対処:
go install github.com/swaggo/swag/cmd/swag@latest