From 5717ce6f3caf09e1952cba00ce84a53977309f5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?nicole=20miko=C5=82ajczyk?= Date: Fri, 13 Jun 2025 15:45:35 +0200 Subject: [PATCH] [chore] upgrade golangci-lint to v2.1.6 and migrate config (#4265) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: nicole mikołajczyk # Description Contribution guidelines link to the golangci-lint documentation for the up-to-date version rather than [the legacy v1 doc](https://golangci.github.io/legacy-v1-doc/), which uses a different configuration schema. I migrated the config using the `golangci-lint migrate` command, moved the comments, adjusted staticcheck config and ensured the rules still work. ## Checklist - [x] I/we have read the [GoToSocial contribution guidelines](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/CONTRIBUTING.md). - [ ] I/we have discussed the proposed changes already, either in an issue on the repository, or in the Matrix chat. - [x] I/we have not leveraged AI to create the proposed changes. - [ ] I/we have performed a self-review of added code. - [x] I/we have written code that is legible and maintainable by others. - [ ] I/we have commented the added code, particularly in hard-to-understand areas. - [ ] I/we have made any necessary changes to documentation. - [ ] I/we have added tests that cover new code. - [ ] I/we have run tests and they pass locally with the changes. - [ ] I/we have run `go fmt ./...` and `golangci-lint run`. Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4265 Co-authored-by: nicole mikołajczyk Co-committed-by: nicole mikołajczyk --- .golangci.yml | 147 ++++++++++++++++++++++---------------------- .woodpecker/pr.yaml | 2 +- 2 files changed, 75 insertions(+), 74 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 83ea9d20d..86b71194a 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -4,91 +4,92 @@ # # For GoToSocial we mostly take the default linters, but we add a few to catch style issues as well. +version: "2" # options for analysis running run: # include test files or not, default is true tests: false - # timeout for analysis, e.g. 30s, 5m, default is 1m - timeout: 5m - linters: # enable some extra linters, see here for the list: https://golangci-lint.run/usage/linters/ enable: - gocritic - - gofmt - goheader - gosec - nilerr - revive + # https://golangci-lint.run/usage/linters/#linters-configuration + settings: + # https://golangci-lint.run/usage/linters/#goheader + goheader: + template: |- + GoToSocial + Copyright (C) GoToSocial Authors admin@gotosocial.org + SPDX-License-Identifier: AGPL-3.0-or-later -# https://golangci-lint.run/usage/linters/#linters-configuration -linters-settings: - # https://golangci-lint.run/usage/linters/#goheader - goheader: - template: |- - GoToSocial - Copyright (C) GoToSocial Authors admin@gotosocial.org - SPDX-License-Identifier: AGPL-3.0-or-later - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . - # https://golangci-lint.run/usage/linters/#govet - govet: - disable: - - composites - # https://golangci-lint.run/usage/linters/#revive - revive: - rules: - # Enable most default rules. - # See: https://github.com/mgechev/revive/blob/master/defaults.toml - - name: blank-imports - - name: context-as-argument - - name: context-keys-type - - name: dot-imports - - name: error-naming - - name: error-return - - name: error-strings - - name: exported - - name: if-return - - name: increment-decrement - - name: var-naming - - name: var-declaration - - name: package-comments - - name: range - - name: receiver-naming - - name: time-naming - - name: unexported-return - - name: indent-error-flow - - name: errorf - - name: empty-block - - name: superfluous-else - - name: unreachable-code - # Disable below rules. - - name: redefines-builtin-id - disabled: true # This one is just annoying. - - name: unused-parameter - disabled: true # We often pass parameters to fulfil interfaces. - # https://golangci-lint.run/usage/linters/#staticcheck - staticcheck: - # Enable all checks, but disable SA1012: nil context passing. - # See: https://staticcheck.io/docs/configuration/options/#checks - checks: ["all", "-SA1012"] - -issues: - exclude-rules: - # Exclude VSCode custom folding region comments in files that use them. - # Already fixed in go-critic and can be removed next time go-critic is updated. - - linters: - - gocritic - path: internal/db/filter.go - text: 'commentFormatting: put a space between `//` and comment text' + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + # https://golangci-lint.run/usage/linters/#govet + govet: + disable: + - composites + # https://golangci-lint.run/usage/linters/#revive + revive: + rules: + # Enable most default rules. + # See: https://github.com/mgechev/revive/blob/master/defaults.toml + - name: blank-imports + - name: context-as-argument + - name: context-keys-type + - name: dot-imports + - name: error-naming + - name: error-return + - name: error-strings + - name: exported + - name: if-return + - name: increment-decrement + - name: var-naming + - name: var-declaration + - name: package-comments + - name: range + - name: receiver-naming + - name: time-naming + - name: unexported-return + - name: indent-error-flow + - name: errorf + - name: empty-block + - name: superfluous-else + - name: unreachable-code + # Disable below rules. + - name: redefines-builtin-id + disabled: true + - name: unused-parameter + disabled: true + # https://golangci-lint.run/usage/linters/#staticcheck + staticcheck: + # Enable all checks, but disable SA1012: nil context passing. + # See: https://staticcheck.io/docs/configuration/options/#checks + checks: + - SA* + - -SA1012 + exclusions: + generated: lax + presets: + - comments + - common-false-positives + - legacy + - std-error-handling +formatters: + enable: + - gofmt + exclusions: + generated: lax diff --git a/.woodpecker/pr.yaml b/.woodpecker/pr.yaml index b1ff0fcec..050b989e4 100644 --- a/.woodpecker/pr.yaml +++ b/.woodpecker/pr.yaml @@ -22,7 +22,7 @@ steps: # We use golangci-lint for linting. # See: https://golangci-lint.run/ - image: golangci/golangci-lint:v1.64.8 + image: golangci/golangci-lint:v2.1.6 pull: true # https://woodpecker-ci.org/docs/administration/configuration/backends/docker#run-user