0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

golangci-lintとgolangci-lint-actionを使った開発メモ 

Last updated at Posted at 2024-09-11

概要

ローカルの golangci-lint のバージョンとCIの golangci-lint-action による golangci-lint のバージョンの違いでたびたび詰まることを観測したのでざっと調べたメモ

背景

チーム共通のアクションに golangci-lint-action を組み込んでおり、golangのプロジェクトでは .golangci.yaml を直近のプロジェクトからコピペして使い回す運用になっていた。

golangci-lint-action はversionの指定ができるが、チーム内であまり認識されていなく、CIの設定でも"stable"を固定にしていることが多い。

基本は最新を使っていくと安全なはずなので、"stable"は良いが、 .golangci.yaml の使い回しが良くない。

この辺りどう運用していくのが良いのかざっくり考えてみる

公式のドキュメント確認

IMPORTANT: It's highly recommended installing a specific version of golangci-lint available on the releases page.

公式では特定のバージョンを使うことを強く推奨している

Configuration

  • golangci-lint linters で有効になっているlinterのリストが確認できる
  • 設定ファイル .golangci.{yaml, toml, json} がカレントディレクトリにあるとそれを読み込んでくれる

カスタムしたい項目が上記ドキュメントにあれば設定ファイルを書いて挙動を制御する、ということなのでカスタムしたい項目がない(そこまでできていない)なら特に設定ファイルはおかず最新の設定そのままでlintかけていく方針が良さそう?

考えたこと

  • 理想
    • チームで話し合って必要なlintersや他設定を込めて .golangci.yaml を作る
    • CIは"stable"で最新の状態に追従していく
    • ローカル開発でこけたところは直す
    • バージョン依存のところも気づけるのでローカルを最新に追従させていく
  • ボツ案
    • チームで話し合って必要なlintersや他設定を込めた .golangci.yaml のメンテの手が回らない
    • .golangci.yaml にコメントで対応バージョンを書いてまずはそれを通すことを目標にする
    • 余力があればCIのバージョンを"stable"にして通すようにする
    • (ローカルでlintを通すようにデバッグするためにローカルのバージョンを上げる必要がありこの辺りのバージョン管理が少し手間そうなのでボツ)
  • 当座の方針
    • 使い回している .golangci.yaml はチーム内で一度それぞれのlinterを整理済みのものなので使っていく
    • CIは"stable"、ローカルも追従する
    • こけたら直す
    • .golangci.yaml のドキュメントも修正する
    • 上記方針でドキュメントに知見をためてもらう、困ったらそこをみるような習慣にする

以下のような方針もあり本当はやりたいが、リポジトリの管理状況や担当者の状況を考えると現状導入は難しそう

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?