diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 7fefcc7..b4cb773 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -8,7 +8,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5 with: - go-version: 1.22 + go-version: 1.25 id: go - name: Check out code into the Go module directory diff --git a/.golangci.yml b/.golangci.yml index 148ded9..d7af3ac 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,158 +1,94 @@ +version: "2" + run: timeout: 1m linters-settings: errcheck: - # report about not checking of errors in type assetions: `a := b.(MyStruct)`; - # default is false: such cases aren't reported by default. check-type-assertions: true - - # report about assignment of errors to blank identifier: `num, _ := strconv.Atoi(numStr)`; - # default is false: such cases aren't reported by default. check-blank: false - # [deprecated] comma-separated list of pairs of the form pkg:regex - # the regex is used to ignore names within pkg. (default "fmt:.*"). - # see https://github.com/kisielk/errcheck#the-deprecated-method for details - # ignore: fmt:.*,io/ioutil:^Read.* - - # path to a file containing a list of functions to exclude from checking - # see https://github.com/kisielk/errcheck#excluding-functions for details - # exclude: /path/to/file.txt - funlen: lines: 50 statements: 40 govet: - # report about shadowed variables - shadow: true - - # enable or disable analyzers by name - # enable: - # - atomicalign enable-all: true disable: - fieldalignment - # disable-all: false - revive: - # minimal confidence for issues, default is 0.8 - min-confidence: 0.8 + gofmt: - # simplify code: gofmt with `-s` option, true by default simplify: true + goimports: - # put imports beginning with prefix after 3rd-party packages; - # it's a comma-separated list of prefixes local-prefixes: github.com/kinbiko/bugsnag + gocyclo: - # minimal code complexity to report, 30 by default (but we recommend 10-20) - # This check is set to an unreasonably low number by most developers' - # standards to track the code standard over time min-complexity: 10 + gocognit: - # minimal code complexity to report, 30 by default (but we recommend 10-20) - # This check is a more useful cyclomatic complexity called cognitive complexity, - # where nested if/for is weighted more, and only one point regardless of - # cases in a switch. min-complexity: 11 + dupl: - # tokens count to trigger issue, 150 by default threshold: 100 + goconst: - # minimal length of string constant, 3 by default min-len: 10 - # minimal occurrences count to trigger, 3 by default min-occurrences: 3 - # packages-with-error-messages: - # specify an error message to output when a blacklisted package is used - # github.com/sirupsen/logrus: "logging is allowed only by logutils.Log" misspell: - # Correct spellings using locale preferences for US or UK. - # Default is to use a neutral variety of English. - # Setting locale to US will correct the British spelling of 'colour' to 'color'. locale: US - # ignore-words: - # - someword + lll: - # max line length, lines longer will be reported. Default is 120. - # '\t' is counted as 1 character by default, and can be changed with the tab-width option line-length: 165 - # tab width in spaces. Default to 1. tab-width: 4 - unused: - # treat code as a program (not a library) and report unused exported identifiers; default is false. - # XXX: if you enable this setting, unused will report a lot of false-positives in text editors: - # if it's called for subdir of a project it can't find funcs usages. All text editor integrations - # with golangci-lint call it on a directory with the changed file. - check-exported: false + unparam: - # Inspect exported functions, default is false. Set to true if no external program/library imports your code. - # XXX: if you enable this setting, unparam will report a lot of false-positives in text editors: - # if it's called for subdir of a project it can't find external interfaces. All text editor integrations - # with golangci-lint call it on a directory with the changed file. check-exported: true + nakedret: - # make an issue if func has more lines of code than this setting and it has naked returns; default is 30 - # Naked returns can go plop itself max-func-lines: 0 - prealloc: - # XXX: we don't recommend using this linter before doing performance profiling. - # For most programs usage of prealloc will be a premature optimization. - # Report preallocation suggestions only on simple loops that have no returns/breaks/continues/gotos in them. - # True by default. + prealloc: simple: true - range-loops: true # Report preallocation suggestions on range loops, true by default - for-loops: false # Report preallocation suggestions on for loops, false by default + range-loops: true + for-loops: false + gocritic: - # Which checks should be enabled; can't be combined with 'disabled-checks'; - # See https://go-critic.github.io/overview#checks-overview - # To check which checks are enabled run `GL_DEBUG=gocritic golangci-lint run` - # By default list of stable checks is used. - # enabled-checks: - # - badCond - - # Which checks should be disabled; can't be combined with 'enabled-checks'; default is empty - # disabled-checks: - - # Enable multiple checks by tags, run `GL_DEBUG=gocritic golangci-lint run` to see all tags and checks. - # Empty list by default. See https://github.com/go-critic/go-critic#usage -> section "Tags". enabled-tags: - diagnostic - style - performance - - settings: # settings passed to gocritic - captLocal: # must be valid enabled check name + settings: + captLocal: paramsOnly: true rangeValCopy: sizeThreshold: 64 + godox: - # report any comments starting with keywords, this is useful for TODO or FIXME comments that - # might be left in the code accidentally and should be resolved before merging - keywords: # default keywords are TODO, BUG, and FIXME, these can be overwritten by this setting + keywords: - TODO - FIXME + dogsled: - # checks assignments with too many blank identifiers; default is 2 max-blank-identifiers: 2 whitespace: - multi-if: false # Enforces newlines (or comments) after every multi-line if statement - multi-func: false # Enforces newlines (or comments) after every multi-line function signature + multi-if: false + multi-func: false linters: disable: - wsl - godot - nlreturn - - depguard - - - gci # This conflicts with goimports - - varnamelen # This has too many false positives around indexes etc to be useful + - varnamelen + settings: + staticcheck: + checks: + - "all" + - "-QF1008" # Don't suggest removing embedded field from selector presets: - bugs - complexity @@ -160,24 +96,24 @@ linters: - performance - style - unused - fast: false + +formatters: + enable: + - gofmt + - goimports issues: - # Excluding configuration per-path, per-linter, per-text and per-source exclude-rules: - # Exclude some linters from running on tests files. - path: _test\.go linters: - cyclop - dupl - errcheck - errchkjson - - exhaustivestruct - forbidigo - funlen - gocognit - gocyclo - - gomnd - lll - stylecheck - testpackage @@ -187,12 +123,6 @@ issues: linters: - err113 - # Independently from option `exclude` we use default exclude patterns, - # it can be disabled by this option. To list all - # excluded by default patterns execute `golangci-lint run --help`. - # Default value for this option is true. exclude-use-default: false - # Maximum issues count per one linter. Set to 0 to disable. Default is 50. max-issues-per-linter: 0 - # Maximum count of issues with the same text. Set to 0 to disable. Default is 3. max-same-issues: 0 diff --git a/Makefile b/Makefile index dfa429b..c287e11 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -LINTER_VERSION := v1.61.0 +LINTER_VERSION := v2.4.0 .PHONY: check check: lint test diff --git a/go.mod b/go.mod index d25a27c..6158295 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,3 @@ module github.com/kinbiko/jsonassert -go 1.22 +go 1.25