linters: disable-all: true enable: - asasalint - asciicheck - bidichk - bodyclose - depguard - dogsled - errcheck - errname - errorlint - exportloopref - gocheckcompilerdirectives - gocritic - goprintffuncname - gosec - gosimple - govet - ineffassign - interfacebloat - lll - makezero - nakedret - nilerr - nolintlint - perfsprint - prealloc - predeclared - revive - sqlclosecheck - staticcheck - tenv - testifylint - tparallel - typecheck - unconvert - unparam - unused linters-settings: depguard: rules: # Name of a rule. main: # Packages that are not allowed where the value is a suggestion. deny: - pkg: log desc: 'Use injected telegraf.Logger instead' # List of file globs that will match this list of settings to compare against. # Default: $all files: - "!**/agent/**" - "!**/cmd/**" - "!**/config/**" - "!**/filter/**" - "!**/internal/**" - "!**/logger/**" - "!**/metric/**" - "!**/models/**" - "!**/plugins/serializers/**" - "!**/scripts/**" - "!**/selfstat/**" - "!**/testutil/**" - "!**/tools/**" - "!**/*_test.go" errcheck: # List of functions to exclude from checking, where each entry is a single function to exclude. # See https://github.com/kisielk/errcheck#excluding-functions for details. exclude-functions: - "(*hash/maphash.Hash).Write" - "(*hash/maphash.Hash).WriteByte" - "(*hash/maphash.Hash).WriteString" 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: # diagnostic - argOrder - badCall - badCond - badLock - badRegexp - badSorting - builtinShadowDecl - caseOrder - codegenComment - commentedOutCode - deferInLoop - dupArg - deprecatedComment - dupBranchBody - dupCase - dupSubExpr - dynamicFmtString - emptyDecl - evalOrder - exitAfterDefer - externalErrorReassign - filepathJoin - flagName - mapKey - nilValReturn - offBy1 - regexpPattern - sloppyTestFuncName - sloppyReassign - sloppyTypeAssert - sortSlice - sprintfQuotedString - sqlQuery - syncMapLoadAndDelete - truncateCmp - uncheckedInlineErr - unnecessaryDefer - weakCond # performance - appendCombine - equalFold - indexAlloc - hugeParam - preferDecodeRune - preferFprint - preferStringWriter - preferWriteByte - rangeExprCopy - rangeValCopy - sliceClear - stringXbytes # Settings passed to gocritic. # The settings key is the name of a supported gocritic checker. # The list of supported checkers can be find in https://go-critic.github.io/overview. settings: hugeParam: # Size in bytes that makes the warning trigger. # Default: 80 sizeThreshold: 512 rangeValCopy: # Size in bytes that makes the warning trigger. # Default: 128 sizeThreshold: 512 gosec: # To select a subset of rules to run. # Available rules: https://github.com/securego/gosec#available-rules # Default: [] - means include all rules includes: - G101 - G102 - G103 - G106 - G107 - G108 - G109 - G110 - G111 - G112 - G114 - G201 - G202 - G203 - G301 - G302 - G303 - G305 - G306 - G401 - G403 - G404 - G501 - G502 - G503 - G505 - G601 # G104, G105, G113, G204, G304, G307, G402, G504 were not enabled intentionally # To specify the configuration of rules. config: # Maximum allowed permissions mode for os.OpenFile and os.Chmod # Default: "0600" G302: "0640" # Maximum allowed permissions mode for os.WriteFile and ioutil.WriteFile # Default: "0600" G306: "0640" govet: settings: ## Check the logging function like it would be a printf printf: funcs: - (github.com/influxdata/telegraf.Logger).Debugf - (github.com/influxdata/telegraf.Logger).Infof - (github.com/influxdata/telegraf.Logger).Warnf - (github.com/influxdata/telegraf.Logger).Errorf - (github.com/influxdata/telegraf.Logger).Debug - (github.com/influxdata/telegraf.Logger).Info - (github.com/influxdata/telegraf.Logger).Warn - (github.com/influxdata/telegraf.Logger).Error lll: # Max line length, lines longer will be reported. # '\t' is counted as 1 character by default, and can be changed with the tab-width option. # Default: 120. line-length: 160 # Tab width in spaces. # Default: 1 tab-width: 4 nolintlint: # Enable to require an explanation of nonzero length after each nolint directive. # Default: false require-explanation: true # Enable to require nolint directives to mention the specific linter being suppressed. # Default: false require-specific: true prealloc: # Report pre-allocation suggestions only on simple loops that have no returns/breaks/continues/gotos in them. # Default: true simple: false revive: rules: - name: argument-limit arguments: [ 6 ] - name: atomic - name: bare-return - name: blank-imports - name: bool-literal-in-expr - name: call-to-gc - name: confusing-naming - name: confusing-results - name: constant-logical-expr - name: context-as-argument - name: context-keys-type - name: deep-exit - name: defer - name: dot-imports - name: duplicated-imports - name: early-return - name: empty-block - name: empty-lines - name: error-naming - name: error-return - name: error-strings - name: errorf - name: function-result-limit arguments: [ 3 ] - name: identical-branches - name: if-return - name: import-shadowing - name: increment-decrement - name: indent-error-flow - name: modifies-parameter - name: modifies-value-receiver - name: package-comments - name: range - name: range-val-address - name: range-val-in-closure - name: receiver-naming - name: redefines-builtin-id - name: string-of-int - name: struct-tag - name: superfluous-else - name: time-naming - name: unconditional-recursion - name: unexported-naming - name: unnecessary-stmt - name: unreachable-code - name: unused-parameter - name: var-declaration - name: var-naming - name: waitgroup-by-value nakedret: # make an issue if func has more lines of code than this setting and it has naked returns; default is 30 max-func-lines: 1 tenv: # The option `all` will run against whole test files (`_test.go`) regardless of method/function signatures. # Otherwise, only methods that take `*testing.T`, `*testing.B`, and `testing.TB` as arguments are checked. # Default: false all: true testifylint: # Enable specific checkers. # https://github.com/Antonboom/testifylint#checkers # Default: ["bool-compare", "compares", "empty", "error-is-as", "error-nil", "expected-actual", "float-compare", "len", "require-error", "suite-dont-use-pkg", "suite-extra-assert-call"] enable: - bool-compare - compares - empty - error-is-as - error-nil - expected-actual - len - require-error - suite-dont-use-pkg - suite-extra-assert-call - suite-thelper run: # timeout for analysis, e.g. 30s, 5m, default is 1m timeout: 10m # which dirs to skip: issues from them won't be reported; # can use regexp here: generated.*, regexp is applied on full path; # default value is empty list, but default dirs are skipped independently # from this option's value (see skip-dirs-use-default). # "/" will be replaced by current OS file path separator to properly work # on Windows. skip-dirs: - assets - docs - etc # which files to skip: they will be analyzed, but issues from them # won't be reported. Default value is empty list, but there is # no need to include all autogenerated files, we confidently recognize # autogenerated files. If it's not please let us know. # "/" will be replaced by current OS file path separator to properly work # on Windows. skip-files: - plugins/parsers/influx/machine.go* issues: # 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 # List of regexps of issue texts to exclude. # # But independently of this option we use default exclude patterns, # it can be disabled by `exclude-use-default: false`. # To list all excluded by default patterns execute `golangci-lint run --help` # # Default: https://golangci-lint.run/usage/false-positives/#default-exclusions exclude: # revive:var-naming - don't use an underscore in package name # EXC0001 errcheck: Almost all programs ignore errors on these functions and in most cases it's ok - Error return value of .((os\.)?std(out|err)\..*|.*Close.*|.*Flush|.*Disconnect|.*Clear|os\.Remove(All)?|.*print(f|ln)?|os\.(Un)?Setenv). is not checked # EXC0013 revive: Annoying issue about not having a comment. The rare codebase has such comments - package comment should be of the form "(.+)... # EXC0015 revive: Annoying issue about not having a comment. The rare codebase has such comments - should have a package comment # Excluding configuration per-path, per-linter, per-text and per-source exclude-rules: - path: plugins/parsers/influx linters: - govet - path: cmd/telegraf/(main|printer|cmd_plugins).go text: "Error return value of `outputBuffer.Write` is not checked" #errcheck - path: _test\.go text: "Potential hardcoded credentials" #gosec:G101 - path: _test\.go text: "Use of weak random number generator" #gosec:G404 # Independently of 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: true. exclude-use-default: false # output configuration options output: # Format: colored-line-number|line-number|json|tab|checkstyle|code-climate|junit-xml|github-actions # # Multiple can be specified by separating them by comma, output can be provided # for each of them by separating format name and path by colon symbol. # Output path can be either `stdout`, `stderr` or path to the file to write to. # Example: "checkstyle:report.json,colored-line-number" # # Default: colored-line-number format: tab # Make issues output unique by line. # Default: true uniq-by-line: false # Sort results by: filepath, line and column. sort-results: true