[chore] upgrade golangci-lint to v2.1.6 and migrate config (#4265)

Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>

# 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 <git@mkljczk.pl>
Co-committed-by: nicole mikołajczyk <git@mkljczk.pl>
This commit is contained in:
nicole mikołajczyk 2025-06-13 15:45:35 +02:00 committed by tobi
commit 5717ce6f3c
2 changed files with 75 additions and 74 deletions

View file

@ -4,91 +4,92 @@
# #
# For GoToSocial we mostly take the default linters, but we add a few to catch style issues as well. # 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 # options for analysis running
run: run:
# include test files or not, default is true # include test files or not, default is true
tests: false tests: false
# timeout for analysis, e.g. 30s, 5m, default is 1m
timeout: 5m
linters: linters:
# enable some extra linters, see here for the list: https://golangci-lint.run/usage/linters/ # enable some extra linters, see here for the list: https://golangci-lint.run/usage/linters/
enable: enable:
- gocritic - gocritic
- gofmt
- goheader - goheader
- gosec - gosec
- nilerr - nilerr
- revive - 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 This program is free software: you can redistribute it and/or modify
linters-settings: it under the terms of the GNU Affero General Public License as published by
# https://golangci-lint.run/usage/linters/#goheader the Free Software Foundation, either version 3 of the License, or
goheader: (at your option) any later version.
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 This program is distributed in the hope that it will be useful,
it under the terms of the GNU Affero General Public License as published by but WITHOUT ANY WARRANTY; without even the implied warranty of
the Free Software Foundation, either version 3 of the License, or MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
(at your option) any later version. GNU Affero General Public License for more details.
This program is distributed in the hope that it will be useful, You should have received a copy of the GNU Affero General Public License
but WITHOUT ANY WARRANTY; without even the implied warranty of along with this program. If not, see <http://www.gnu.org/licenses/>.
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # https://golangci-lint.run/usage/linters/#govet
GNU Affero General Public License for more details. govet:
disable:
You should have received a copy of the GNU Affero General Public License - composites
along with this program. If not, see <http://www.gnu.org/licenses/>. # https://golangci-lint.run/usage/linters/#revive
# https://golangci-lint.run/usage/linters/#govet revive:
govet: rules:
disable: # Enable most default rules.
- composites # See: https://github.com/mgechev/revive/blob/master/defaults.toml
# https://golangci-lint.run/usage/linters/#revive - name: blank-imports
revive: - name: context-as-argument
rules: - name: context-keys-type
# Enable most default rules. - name: dot-imports
# See: https://github.com/mgechev/revive/blob/master/defaults.toml - name: error-naming
- name: blank-imports - name: error-return
- name: context-as-argument - name: error-strings
- name: context-keys-type - name: exported
- name: dot-imports - name: if-return
- name: error-naming - name: increment-decrement
- name: error-return - name: var-naming
- name: error-strings - name: var-declaration
- name: exported - name: package-comments
- name: if-return - name: range
- name: increment-decrement - name: receiver-naming
- name: var-naming - name: time-naming
- name: var-declaration - name: unexported-return
- name: package-comments - name: indent-error-flow
- name: range - name: errorf
- name: receiver-naming - name: empty-block
- name: time-naming - name: superfluous-else
- name: unexported-return - name: unreachable-code
- name: indent-error-flow # Disable below rules.
- name: errorf - name: redefines-builtin-id
- name: empty-block disabled: true
- name: superfluous-else - name: unused-parameter
- name: unreachable-code disabled: true
# Disable below rules. # https://golangci-lint.run/usage/linters/#staticcheck
- name: redefines-builtin-id staticcheck:
disabled: true # This one is just annoying. # Enable all checks, but disable SA1012: nil context passing.
- name: unused-parameter # See: https://staticcheck.io/docs/configuration/options/#checks
disabled: true # We often pass parameters to fulfil interfaces. checks:
# https://golangci-lint.run/usage/linters/#staticcheck - SA*
staticcheck: - -SA1012
# Enable all checks, but disable SA1012: nil context passing. exclusions:
# See: https://staticcheck.io/docs/configuration/options/#checks generated: lax
checks: ["all", "-SA1012"] presets:
- comments
issues: - common-false-positives
exclude-rules: - legacy
# Exclude VSCode custom folding region comments in files that use them. - std-error-handling
# Already fixed in go-critic and can be removed next time go-critic is updated. formatters:
- linters: enable:
- gocritic - gofmt
path: internal/db/filter.go exclusions:
text: 'commentFormatting: put a space between `//` and comment text' generated: lax

View file

@ -22,7 +22,7 @@ steps:
# We use golangci-lint for linting. # We use golangci-lint for linting.
# See: https://golangci-lint.run/ # See: https://golangci-lint.run/
image: golangci/golangci-lint:v1.64.8 image: golangci/golangci-lint:v2.1.6
pull: true pull: true
# https://woodpecker-ci.org/docs/administration/configuration/backends/docker#run-user # https://woodpecker-ci.org/docs/administration/configuration/backends/docker#run-user