diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d85691b --- /dev/null +++ b/.gitignore @@ -0,0 +1,50 @@ +# IDE +.idea +.vscode + +# Vendoring +vendor + +# tempfiles +.DS_Store +*~ +.cache + +temp +tmp + +# binary +bin/ +release/ + +# coverage +coverage.txt +coverage.html + +# testing +cmd/test +/plugins/ +testfile + +# misc + +# debhelpers +debian/*debhelper* + +# logfiles +debian/*.log + +# .substvars +debian/*.substvars + +# .bash-completion +debian/*.bash-completion + +# Install folders and files +debian/frostfs-cli/ +debian/frostfs-ir/ +debian/files +debian/frostfs-storage/ +debian/changelog +man/ +debs/ diff --git a/.gitlint b/.gitlint new file mode 100644 index 0000000..e7218ac --- /dev/null +++ b/.gitlint @@ -0,0 +1,11 @@ +[general] +fail-without-commits=True +regex-style-search=True +contrib=CC1 + +[title-match-regex] +regex=^\[\#[0-9Xx]+\]\s + +[ignore-by-title] +regex=^Release(.*) +ignore=title-match-regex diff --git a/.golangci.yml b/.golangci.yml index 958f486..fae355a 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -4,10 +4,10 @@ # options for analysis running run: # timeout for analysis, e.g. 30s, 5m, default is 1m - timeout: 5m + timeout: 10m # include test files or not, default is true - tests: true + tests: false # output configuration options output: @@ -24,6 +24,13 @@ linters-settings: govet: # report about shadowed variables check-shadowing: false + staticcheck: + checks: ["all", "-SA1019"] # TODO Enable SA1019 after deprecated warning are fixed. + funlen: + lines: 80 # default 60 + statements: 60 # default 40 + gocognit: + min-complexity: 40 # default 30 linters: enable: @@ -34,23 +41,26 @@ linters: # some default golangci-lint linters - errcheck - gosimple + - godot - ineffassign - staticcheck - typecheck - unused # extra linters + - bidichk + - durationcheck - exhaustive - - godot + - exportloopref - gofmt - - whitespace - goimports + - misspell + - predeclared + - reassign + - whitespace + - containedctx + - funlen + - gocognit + - contextcheck disable-all: true fast: false - -issues: - include: - - EXC0002 # should have a comment - - EXC0003 # test/Test ... consider calling this - - EXC0004 # govet - - EXC0005 # C-style breaks \ No newline at end of file diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..24c9557 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,45 @@ +ci: + autofix_prs: false + +repos: + - repo: https://github.com/jorisroovers/gitlint + rev: v0.19.1 + hooks: + - id: gitlint + stages: [commit-msg] + - id: gitlint-ci + + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.4.0 + hooks: + - id: check-added-large-files + - id: check-case-conflict + - id: check-executables-have-shebangs + - id: check-shebang-scripts-are-executable + - id: check-merge-conflict + - id: check-json + - id: check-xml + - id: check-yaml + - id: trailing-whitespace + args: [--markdown-linebreak-ext=md] + - id: end-of-file-fixer + exclude: ".key$" + + - repo: https://github.com/shellcheck-py/shellcheck-py + rev: v0.9.0.2 + hooks: + - id: shellcheck + + - repo: https://github.com/golangci/golangci-lint + rev: v1.51.2 + hooks: + - id: golangci-lint + + - repo: local + hooks: + - id: go-unit-tests + name: go unit tests + entry: make test + pass_filenames: false + types: [go] + language: system