## 背景 [[golangci-lint]]のv2が最近リリースされた。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://github.githubassets.com/favicons/favicon.svg" /> <span class="link-card-v2-site-name">GitHub</span> </div> <div class="link-card-v2-title"> golangci-lint/CHANGELOG.md at main · golangci/golangci-lint </div> <div class="link-card-v2-content"> Fast linters runner for Go. Contribute to golangci/golangci-lint development by creating an account on GitHub. </div> <img class="link-card-v2-image" src="https://repository-images.githubusercontent.com/132145189/05239680-dfaf-11e9-9646-2c3ef2f5f8d4" /> <a href="https://github.com/golangci/golangci-lint/blob/main/CHANGELOG.md#v200"></a> </div> v1では[[Neovim]]でも動作しない問題があったのでバージョンアップする。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png" /> <span class="link-card-v2-site-name">Minerva</span> </div> <div class="link-card-v2-title"> 📝NeovimでGoのファイルを開くとgolangci-lintがunknown flag --output.json.pathエラー </div> <div class="link-card-v2-content">nvim-lspconfigがgolangci-lintのv2対応されたから。</div> <img class="link-card-v2-image" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/Notes/attachments/troubleshooting.webp" /> <a data-href="📝NeovimでGoのファイルを開くとgolangci-lintがunknown flag --output.json.pathエラー" class="internal-link"></a> </div> %%[[📝NeovimでGoのファイルを開くとgolangci-lintがunknown flag --output.json.pathエラー]]%% ## アップデート バージョン 1.24.1 から 2.0.2 にアップデート。 ```console mise up golangci-lint ``` ## マイグレーション マイグレーションガイドを参考にする。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://golangci-lint.run/favicon-32x32.png?v=6f2f64f27c627571f538b670491b3f23" /> <span class="link-card-v2-site-name">golangci-lint</span> </div> <div class="link-card-v2-title"> Migration guide | golangci-lint </div> <div class="link-card-v2-content"> Fast Go linters runner golangci-lint. </div> <img class="link-card-v2-image" src="https://golangci-lint.run/logo.png" /> <a href="https://golangci-lint.run/product/migration-guide/#command-migrate"></a> </div> コマンド一発でいけそう。コメントは移行されないので注意。 ```console $ golangci-lint migrate WARN The configuration comments are not migrated. WARN Details about the migration: https://golangci-lint.run/product/migration-guide/ ``` ### 変更前 ```yaml linters: disable-all: true enable: # 暗黙的な変更を回避するため明示的に指定する - govet - errcheck - gosimple - ineffassign - staticcheck - unused # 以降は明示的に追加 - errorlint - exhaustive - exhaustruct - goimports # コード変更はgoplsで行う - nakedret - revive linters-settings: nakedret: max-func-lines: 0 # Naked returnは認めない severity: default-severity: error ``` ### 変更後 ```yaml version: "2" linters: default: none enable: - errcheck - errorlint - exhaustive - exhaustruct - govet - ineffassign - nakedret - revive - staticcheck - unused exclusions: generated: lax presets: - comments - common-false-positives - legacy - std-error-handling paths: - third_party$ - builtin$ - examples$ severity: default: error formatters: enable: - goimports exclusions: generated: lax paths: - third_party$ - builtin$ - examples$ ``` ## トラブル ### Naked returnがエラーにならない 以前は[[Naked return]]をエラーにしてた。 ```yaml linters-settings: nakedret: max-func-lines: 0 # Naked returnは認めない ``` どうやら `linters-settings` が `linters.settings` に変わったのにmigrationされてなさそう。以下のようにしてやればよい。 ```yaml version: "2" linters: enable: - nakedret settings: nakedret: max-func-lines: 0 ``` 参考。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://github.githubassets.com/favicons/favicon.svg" /> <span class="link-card-v2-site-name">GitHub</span> </div> <div class="link-card-v2-title"> golangci-lint/.golangci.next.reference.yml at 8c929e0665808d583263d73eabd596e409dd9eb9 · golangci/golangci-lint </div> <div class="link-card-v2-content"> Fast linters runner for Go. Contribute to golangci/golangci-lint development by creating an account on GitHub. </div> <img class="link-card-v2-image" src="https://repository-images.githubusercontent.com/132145189/05239680-dfaf-11e9-9646-2c3ef2f5f8d4" /> <a href="https://github.com/golangci/golangci-lint/blob/8c929e0665808d583263d73eabd596e409dd9eb9/.golangci.next.reference.yml#L1952"></a> </div>