[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
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, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details. GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
# https://golangci-lint.run/usage/linters/#govet # https://golangci-lint.run/usage/linters/#govet
govet: govet:
disable: disable:
- composites - composites
# https://golangci-lint.run/usage/linters/#revive # https://golangci-lint.run/usage/linters/#revive
revive: revive:
rules: rules:
# Enable most default rules. # Enable most default rules.
# See: https://github.com/mgechev/revive/blob/master/defaults.toml # See: https://github.com/mgechev/revive/blob/master/defaults.toml
- name: blank-imports - name: blank-imports
- name: context-as-argument - name: context-as-argument
- name: context-keys-type - name: context-keys-type
- name: dot-imports - name: dot-imports
- name: error-naming - name: error-naming
- name: error-return - name: error-return
- name: error-strings - name: error-strings
- name: exported - name: exported
- name: if-return - name: if-return
- name: increment-decrement - name: increment-decrement
- name: var-naming - name: var-naming
- name: var-declaration - name: var-declaration
- name: package-comments - name: package-comments
- name: range - name: range
- name: receiver-naming - name: receiver-naming
- name: time-naming - name: time-naming
- name: unexported-return - name: unexported-return
- name: indent-error-flow - name: indent-error-flow
- name: errorf - name: errorf
- name: empty-block - name: empty-block
- name: superfluous-else - name: superfluous-else
- name: unreachable-code - name: unreachable-code
# Disable below rules. # Disable below rules.
- name: redefines-builtin-id - name: redefines-builtin-id
disabled: true # This one is just annoying. disabled: true
- name: unused-parameter - name: unused-parameter
disabled: true # We often pass parameters to fulfil interfaces. disabled: true
# https://golangci-lint.run/usage/linters/#staticcheck # https://golangci-lint.run/usage/linters/#staticcheck
staticcheck: staticcheck:
# Enable all checks, but disable SA1012: nil context passing. # Enable all checks, but disable SA1012: nil context passing.
# See: https://staticcheck.io/docs/configuration/options/#checks # See: https://staticcheck.io/docs/configuration/options/#checks
checks: ["all", "-SA1012"] checks:
- SA*
issues: - -SA1012
exclude-rules: exclusions:
# Exclude VSCode custom folding region comments in files that use them. generated: lax
# Already fixed in go-critic and can be removed next time go-critic is updated. presets:
- linters: - comments
- gocritic - common-false-positives
path: internal/db/filter.go - legacy
text: 'commentFormatting: put a space between `//` and comment text' - std-error-handling
formatters:
enable:
- gofmt
exclusions:
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