golangci-lintとは
Goのコードを静的解析ツール
です。
導入方法(Mac)
Macが前提で話していきます。以下のコマンドで最新版をインストールできます。
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
バージョン確認
バージョンの設定ができれば、以下のコマンドで確認してください。
$ golangci-lint --version
golangci-lint has version v1.62.2 built with go1.23.1 from (unknown, modified: ?, mod sum: "h1:b8K5K9PN+rZN1+mKLtsZHz2XXS9aYKzQ9i25x3Qnxxw=") on (unknown)
起動方法
以下のコマンドで起動します。
golangci-lint run
main.goなどでこのような設定にしている場合は違うコマンドです。
main.go
r.Run("localhost:8080")
この場合だと以下のコマンドです。
golangci-lint
lint.yml
以下のコードを実装します。
lint.yml
linters:
enable:
- gocyclo # サイクロマチック複雑度のチェック
- govet # 標準的なGoのバグチェック
- errcheck # エラーハンドリングの確認
- unused # 未使用コードのチェック
- revive # 他のスタイルガイドに基づいたリント
disable:
- dupl
- goimports
- golint
run:
timeout: 2m # タイムアウトを設定 (2分)
issues:
exclude-rules:
- text: "error strings should not be capitalized"
linters:
- revive
golangci.yml
ciのファイルを作成します。
.github/workflows/lint.yml
name: Lint
on: [push, pull_request]
jobs:
lint:
runs-on: ubuntu-latest
steps:
# ソースコードをチェックアウト
- name: Checkout code
uses: actions/checkout@v2
# Goのセットアップ
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: 1.19 # 使用しているGoのバージョンを指定
# golangci-lintのインストール
- name: Install golangci-lint
run: |
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh
sudo mv ./bin/golangci-lint /usr/local/bin
# インストールが成功したことを確認(バージョン確認)
- name: Verify golangci-lint installation
run: golangci-lint --version
# golangci-lintの実行
- name: Run golangci-lint
run: golangci-lint
これで動作確認ができればlinterとCIの設定をGOでできます。
参考資料
ChatGPT