📚
CloudBuildでgolangci-lintを実行する
結論
cloudbuild.yaml
に以下を追加すれば、実装できます
cloudbuild.yaml
steps:
# golangci-lintのDockerイメージを指定する
- name: 'golangci/golangci-lint'
# デフォルトの設定でgolangci-lintを実行する
args: ['golangci-lint', 'run']
[1]とは
golangci-lint
golangci-lint
is a fast Go linters runner.
It runs linters in parallel, uses caching, supports YAML configuration, integrates with all major IDEs, and includes over a hundred linters.
golangci-lint
は高速なGoリンターランナーです。
並列にリンターを実行し、キャッシュを使い、YAML設定をサポートし、すべての主要なIDEと統合し、100以上のリンターを含みます。
Goの静的解析ツールは本当にたくさん存在するのですが、それらをひとまとめにして実行してくれるツールです。 GoのプロジェクトをGitHub ActionsのようなCIでテストする際にはよく使われます。[2]
golangci-lintの設定
デフォルトでは、以下のlinterが実行されます[3]
Name | Description | Presets |
---|---|---|
errcheck | Errcheck is a program for checking for unchecked errors in Go code. These unchecked errors can be critical bugs in some cases. | bugs, error |
gosimple | Linter for Go source code that specializes in simplifying code. | style |
govet | Vet examines Go source code and reports suspicious constructs. It is roughly the same as go vet and uses its passes. |
bugs, metalinter |
ineffassign | Detects when assignments to existing variables are not used. | unused |
staticcheck | It's a set of rules from staticcheck. It's not the same thing as the staticcheck binary. The author of staticcheck doesn't support or approve the use of staticcheck as a library inside golangci-lint. | bugs, metalinter |
unused | Checks Go code for unused constants, variables, functions and types. | unused |
.golangci.yml
などの設定ファイルを追加することで、linterの有効/無効の設定ができます[4]
-
mattn. Go言語プログラミングエッセンス エンジニア選書 (p.133). 株式会社技術評論社. Kindle 版. ↩︎
Discussion
元気?
元気です!
ご飯連れて行ってください!
おっけー