github.com/thajeztah/cli@v0.0.0-20240223162942-dc6bfac81a8b/.golangci.yml (about)

     1  linters:
     2    enable:
     3      - bodyclose
     4      - depguard
     5      - dogsled
     6      - dupword       # Detects duplicate words.
     7      - durationcheck
     8      - errchkjson
     9      - exportloopref # Detects pointers to enclosing loop variables.
    10      - gocritic      # Metalinter; detects bugs, performance, and styling issues.
    11      - gocyclo
    12      - gofumpt       # Detects whether code was gofumpt-ed.
    13      - goimports
    14      - gosec         # Detects security problems.
    15      - gosimple
    16      - govet
    17      - ineffassign
    18      - lll
    19      - megacheck
    20      - misspell      # Detects commonly misspelled English words in comments.
    21      - nakedret
    22      - nilerr        # Detects code that returns nil even if it checks that the error is not nil.
    23      - nolintlint    # Detects ill-formed or insufficient nolint directives.
    24      - perfsprint    # Detects fmt.Sprintf uses that can be replaced with a faster alternative.
    25      - prealloc      # Detects slice declarations that could potentially be pre-allocated.
    26      - predeclared   # Detects code that shadows one of Go's predeclared identifiers
    27      - reassign
    28      - revive        # Metalinter; drop-in replacement for golint.
    29      - staticcheck
    30      - stylecheck    # Replacement for golint
    31      - tenv          # Detects using os.Setenv instead of t.Setenv.
    32      - thelper       # Detects test helpers without t.Helper().
    33      - tparallel     # Detects inappropriate usage of t.Parallel().
    34      - typecheck
    35      - unconvert     # Detects unnecessary type conversions.
    36      - unparam
    37      - unused
    38      - usestdlibvars
    39      - vet
    40      - wastedassign
    41  
    42    disable:
    43      - errcheck
    44  
    45  run:
    46    timeout: 5m
    47    skip-files:
    48      - cli/compose/schema/bindata.go
    49      - .*generated.*
    50  
    51  linters-settings:
    52    depguard:
    53      rules:
    54        main:
    55          deny:
    56            - pkg: io/ioutil
    57              desc: The io/ioutil package has been deprecated, see https://go.dev/doc/go1.16#ioutil
    58    gocyclo:
    59      min-complexity: 16
    60    govet:
    61      check-shadowing: true
    62      settings:
    63        shadow:
    64          strict: true
    65    lll:
    66      line-length: 200
    67    nakedret:
    68      command: nakedret
    69      pattern: ^(?P<path>.*?\\.go):(?P<line>\\d+)\\s*(?P<message>.*)$
    70  
    71    revive:
    72      rules:
    73        # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#import-shadowing
    74        - name: import-shadowing
    75          severity: warning
    76          disabled: false
    77        # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#empty-block
    78        - name: empty-block
    79          severity: warning
    80          disabled: false
    81        # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#empty-lines
    82        - name: empty-lines
    83          severity: warning
    84          disabled: false
    85        # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#use-any
    86        - name: use-any
    87          severity: warning
    88          disabled: false
    89  
    90  issues:
    91    # The default exclusion rules are a bit too permissive, so copying the relevant ones below
    92    exclude-use-default: false
    93  
    94    exclude:
    95      - parameter .* always receives
    96  
    97    exclude-rules:
    98      # We prefer to use an "exclude-list" so that new "default" exclusions are not
    99      # automatically inherited. We can decide whether or not to follow upstream
   100      # defaults when updating golang-ci-lint versions.
   101      # Unfortunately, this means we have to copy the whole exclusion pattern, as
   102      # (unlike the "include" option), the "exclude" option does not take exclusion
   103      # ID's.
   104      #
   105      # These exclusion patterns are copied from the default excluses at:
   106      # https://github.com/golangci/golangci-lint/blob/v1.44.0/pkg/config/issues.go#L10-L104
   107  
   108      # EXC0001
   109      - text: "Error return value of .((os\\.)?std(out|err)\\..*|.*Close|.*Flush|os\\.Remove(All)?|.*print(f|ln)?|os\\.(Un)?Setenv). is not checked"
   110        linters:
   111          - errcheck
   112      # EXC0003
   113      - text: "func name will be used as test\\.Test.* by other packages, and that stutters; consider calling this"
   114        linters:
   115          - revive
   116      # EXC0006
   117      - text: "Use of unsafe calls should be audited"
   118        linters:
   119          - gosec
   120      # EXC0007
   121      - text: "Subprocess launch(ed with variable|ing should be audited)"
   122        linters:
   123          - gosec
   124      # EXC0008
   125      # TODO: evaluate these and fix where needed: G307: Deferring unsafe method "*os.File" on type "Close" (gosec)
   126      - text: "G307"
   127        linters:
   128          - gosec
   129      # EXC0009
   130      - text: "(Expect directory permissions to be 0750 or less|Expect file permissions to be 0600 or less)"
   131        linters:
   132          - gosec
   133      # EXC0010
   134      - text: "Potential file inclusion via variable"
   135        linters:
   136          - gosec
   137  
   138      # G113 Potential uncontrolled memory consumption in Rat.SetString (CVE-2022-23772)
   139      # only affects gp < 1.16.14. and go < 1.17.7
   140      - text: "G113"
   141        linters:
   142          - gosec
   143      # TODO: G104: Errors unhandled. (gosec)
   144      - text: "G104"
   145        linters:
   146          - gosec
   147      # Looks like the match in "EXC0007" above doesn't catch this one
   148      # TODO: consider upstreaming this to golangci-lint's default exclusion rules
   149      - text: "G204: Subprocess launched with a potential tainted input or cmd arguments"
   150        linters:
   151          - gosec
   152      # Looks like the match in "EXC0009" above doesn't catch this one
   153      # TODO: consider upstreaming this to golangci-lint's default exclusion rules
   154      - text: "G306: Expect WriteFile permissions to be 0600 or less"
   155        linters:
   156          - gosec
   157  
   158      # TODO: make sure all packages have a description. Currently, there's 67 packages without.
   159      - text: "package-comments: should have a package comment"
   160        linters:
   161          - revive
   162      # FIXME temporarily suppress these (see https://github.com/gotestyourself/gotest.tools/issues/272)
   163      - text: "SA1019: (assert|cmp|is)\\.ErrorType is deprecated"
   164        linters:
   165          - staticcheck
   166      # Exclude some linters from running on tests files.
   167      - path: _test\.go
   168        linters:
   169          - errcheck
   170          - gosec
   171      - text: "ST1000: at least one file in a package should have a package comment"
   172        linters:
   173          - stylecheck
   174  
   175      # Allow "err" and "ok" vars to shadow existing declarations, otherwise we get too many false positives.
   176      - text: '^shadow: declaration of "(err|ok)" shadows declaration'
   177        linters:
   178          - govet
   179  
   180  
   181    # Maximum issues count per one linter. Set to 0 to disable. Default is 50.
   182    max-issues-per-linter: 0
   183  
   184    # Maximum count of issues with the same text. Set to 0 to disable. Default is 3.
   185    max-same-issues: 0