summaryrefslogtreecommitdiff
path: root/.golangci.yml
blob: 62c10e4f361e0bc269cb0c9fca0d2916b9017679 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# Configuration file for golangci-lint linter.
# This will be automatically picked up when golangci-lint is invoked.
# For all config options, see https://golangci-lint.run/usage/configuration/#config-file
#
# 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
linters:
  # enable some extra linters, see here for the list: https://golangci-lint.run/usage/linters/
  enable:
    - gocritic
    - 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

        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.

        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/>.        
    # 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
        - name: var-naming
          arguments:
            - []
            - []
            - - skip-package-name-checks: 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