From 58dfe0f16fe35488864f48c0fa235f3e9e1e6d8e Mon Sep 17 00:00:00 2001 From: Neur0toxine Date: Tue, 9 Feb 2021 16:10:58 +0300 Subject: [PATCH] Static code analysis --- .github/workflows/ci.yml | 23 +++++ .golangci.yml | 197 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 220 insertions(+) create mode 100644 .golangci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4de9114..73ac39e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,6 +14,29 @@ env: RETAILCRM_KEY: key jobs: + golangci: + name: lint + if: ${{ github.event_name == 'pull_request' }} + runs-on: ubuntu-latest + steps: + - name: Check out code into the Go module directory + uses: actions/checkout@v2 + - name: Set up latest Go 1.x version + uses: actions/setup-go@v2 + with: + go-version: '^1' + - name: Get dependencies + run: | + go get -v github.com/google/go-querystring/query + go get -v github.com/h2non/gock + go get -v github.com/joho/godotenv + go get -v github.com/retailcrm/api-client-go/errs + cp .env.dist .env + - name: Lint code with golangci-lint + uses: golangci/golangci-lint-action@v2 + with: + version: v1.36 + only-new-issues: true tests: name: Tests runs-on: ubuntu-latest diff --git a/.golangci.yml b/.golangci.yml new file mode 100644 index 0000000..5f57676 --- /dev/null +++ b/.golangci.yml @@ -0,0 +1,197 @@ +run: + skip-dirs-use-default: true + allow-parallel-runners: true + +output: + format: colored-line-number + sort-results: true + +linters: + disable-all: true + enable: + - deadcode + - errcheck + - gosimple + - govet + - ineffassign + - staticcheck + - structcheck + - unused + - unparam + - varcheck + - bodyclose + - dogsled + - dupl + - errorlint + - exhaustive + - exportloopref + - funlen + - gocognit + - goconst + - gocritic + - gocyclo + - godot + - goimports + - golint + - gomnd + - gosec + - ifshort + - interfacer + - lll + - makezero + - maligned + - misspell + - nestif + - prealloc + - predeclared + - scopelint + - sqlclosecheck + - unconvert + - whitespace + +linters-settings: + govet: + check-shadowing: false + disable-all: true + enable: + - assign + - atomic + - bools + - buildtag + - copylocks + - httpresponse + - loopclosure + - lostcancel + - printf + - shift + - stdmethods + - structtag + - tests + - unmarshal + - unreachable + - unsafeptr + - unused + settings: + printf: + funcs: + - (*log.Logger).Fatal + - (*log.Logger).Fatalf + - (*log.Logger).Fatalln + - (*log.Logger).Panic + - (*log.Logger).Panicf + - (*log.Logger).Panicln + - (*log.Logger).Print + - (*log.Logger).Printf + - (*log.Logger).Println + - (*testing.common).Error + - (*testing.common).Errorf + - (*testing.common).Fatal + - (*testing.common).Fatalf + - (*testing.common).Log + - (*testing.common).Logf + - (*testing.common).Skip + - (*testing.common).Skipf + - (testing.TB).Error + - (testing.TB).Errorf + - (testing.TB).Fatal + - (testing.TB).Fatalf + - (testing.TB).Log + - (testing.TB).Logf + - (testing.TB).Skip + - (testing.TB).Skipf + - fmt.Errorf + - fmt.Fprint + - fmt.Fprintf + - fmt.Fprintln + - fmt.Print + - fmt.Printf + - fmt.Println + - fmt.Sprint + - fmt.Sprintf + - fmt.Sprintln + - log.Fatal + - log.Fatalf + - log.Fatalln + - log.Panic + - log.Panicf + - log.Panicln + - log.Print + - log.Printf + - log.Println + - runtime/trace.Logf + - (github.com/retailcrm/mg-transport-core/core.LoggerInterface).Fatalf + - (github.com/retailcrm/mg-transport-core/core.LoggerInterface).Panicf + - (github.com/retailcrm/mg-transport-core/core.LoggerInterface).Panicf + - (github.com/retailcrm/mg-transport-core/core.LoggerInterface).Criticalf + - (github.com/retailcrm/mg-transport-core/core.LoggerInterface).Errorf + - (github.com/retailcrm/mg-transport-core/core.LoggerInterface).Warningf + - (github.com/retailcrm/mg-transport-core/core.LoggerInterface).Noticef + - (github.com/retailcrm/mg-transport-core/core.LoggerInterface).Infof + - (github.com/retailcrm/mg-transport-core/core.LoggerInterface).Debugf + unused: + check-exported: false + unparam: + check-exported: false + dogsled: + max-blank-identifiers: 3 + dupl: + threshold: 200 + errorlint: + errorf: true + exhaustive: + check-generated: false + default-signifies-exhaustive: false + funlen: + lines: 60 + statements: 40 + gocognit: + min-complexity: 25 + gocyclo: + min-complexity: 25 + goimports: + local-prefixes: github.com/retailcrm/api-client-go + lll: + line-length: 120 + maligned: + suggest-new: true + misspell: + locale: US + nestif: + min-complexity: 4 + whitespace: + multi-if: false + multi-func: false + +issues: + exclude-rules: + - path: _test\.go + linters: + - gomnd + - lll + - bodyclose + - errcheck + - sqlclosecheck + - misspell + - ineffassign + - whitespace + - makezero + - maligned + - ifshort + - errcheck + - funlen + - goconst + - gocognit + - gocyclo + - godot + exclude-use-default: true + exclude-case-sensitive: false + max-issues-per-linter: 0 + max-same-issues: 0 + fix: true + +severity: + default-severity: error + case-sensitive: false + +service: + golangci-lint-version: 1.36.x