Querier

Goのプロジェクトにgolangci-lintを導入してLintを自動化する

2022.08.24に公開 | 2022.08.31に更新

Querier運営

@querier_io@querierinc

「Querier(クエリア)」は社内向け管理画面を圧倒的な速さで、かつビジネスのスケールに合わせて柔軟に構築することができるローコードツールです。

管理画面の構築もWeb上で完結
エンジニアのためのローコードツール

Querierについて詳しく見る

みなさんこんにちは、Querier開発チームです。
今回は、Goのプロジェクトにgolangci-lintを導入してLintを自動化する方法を紹介していきます。

golangci-lintとは

golangci-lintは世の中にたくさんあるGoのLinterをまとめて実行するためのツールで、元々はGolangCIというサービス内で使われていたツーです。golangci-lintをインストールしておけば、様々なLinterを柔軟に呼び出すことが可能になります。

使い方

1. golangci-lintのインストール

Homebrewから簡単にインストールすることが可能です。以下のコマンドでインストールし、正常にインストールされているか確認してください。

$ brew install golangci-lint
$ golangci-lint version

2. 設定ファイルを書く

基本的には公式ドキュメントを見れば設定できますが、以下にサンプルを置いておきます。
※そのまま使う場合は、 local-prefixes の書き換えをお忘れなく。

run:
  timeout: 5m
  skip-dirs:
    - testdata
  skip-files:
    - config/**.go

linters:
  disalbe-all: true
  enable:
    - asciicheck
    - deadcode
    - depguard
    - exportloopref
    - gci
    - godot
    - gofmt
    - gofumpt
    - goimports
    - gomodguard
    - goprintffuncname
    - gosimple
    - gosec
    - govet
    - misspell
    - nakedret
    - nolintlint
    - sqlclosecheck
    - staticcheck
    - structcheck
    - typecheck
    - unconvert
    - unused
    - varcheck
    - whitespace

linters-settings:
  gofumpt:
    extra-rules: true
  misspell:
    locale: US
  gci:
    local-prefixes: github.com/<organization-name>/<repository-name>

3. Lintの実行

以下のコマンドでLintを実行します。オプションとして、 --print-issued-lines を設定すると、問題のある箇所をしてきしてくれます。また、 --fix を付けることで自動で修正してくる箇所は自動で修正してくれます。
ジェネリクスが導入されたGo1.18以降をお使いの場合は、 --go=1.19 というオプションを付けることで、ジェネリクスに対応したLintを実行してくれるので忘れずに付けるようにしてください。

$ golangci-lint run --print-issued-lines --fix --go=1.19

GitHub Actionsで自動化する

GitHub Actionsの設定ファイルを書くだけで簡単にLintの自動がを行うことができます。以下が .gihtub/workflows/lint.yml に記載する、GitHub Actinosの設定ファイルです。
公式のリポジトリはこちら: https://github.com/golangci/golangci-lint-action

name: lint

on: [pull_request]

jobs:
  golangci:
    strategy:
      matrix:
        go-version: [1.19.x]
        os: [ubuntu-latest]
    name: lint
    runs-on: ${{ matrix.os }}
    timeout-minutes: 10
    steps:
      - uses: actions/setup-go@v3
        with:
          go-version: 1.19
      - uses: actions/checkout@v3
      - name: golangci-lint
        uses: golangci/golangci-lint-action@v3
        with:
          version: latest

最後に

今回はGoのプロジェクトにgolangci-lintを導入する方法を紹介しました。golangci-lintを入れることによってチームでのコードの統一され、開発スピードが上がり、レビューコストも削減することができます。ぜひ、Lintを自動化してチーム開発を効率化してみてください。

「Querier(クエリア)」は社内向け管理画面を圧倒的な速さで、かつビジネスのスケールに合わせて柔軟に構築することができるローコードツールです。

最新の記事

バリデーション機能が大幅に強化されました!

みなさんこんにちは、Querier開発チームです。今回のアップデートで各種インプット系コンポーネントのバリデーション機能が大幅に強化されましたので、こちらで解説させていただきます。

more

管理画面の構築もWeb上で完結
エンジニアのためのローコードツール

Querierについて詳しく見る