Skip to content

Commit

Permalink
Add golangci-lint (#331)
Browse files Browse the repository at this point in the history
  • Loading branch information
vtopc authored Oct 28, 2024
1 parent 1733cdb commit 9999804
Show file tree
Hide file tree
Showing 4 changed files with 98 additions and 8 deletions.
9 changes: 7 additions & 2 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,12 @@ jobs:
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@master
uses: actions/checkout@v4
with:
fetch-depth: 0 # for golangci-lint's -new-from-rev

- name: Set up Go
uses: actions/setup-go@v3
uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go-version }}
cache: true # caching and restoring go modules and build outputs
Expand All @@ -34,5 +36,8 @@ jobs:
- name: nilaway
run: make nilaway

- name: lint
run: make lint-new

- name: Test
run: go test -v -race -p=1 -count=1
74 changes: 74 additions & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
linters:
# Please, do not use `enable-all`: it's deprecated and will be removed soon.
# Inverted configuration with `enable-all` and `disable` is not scalable during updates of golangci-lint.
# Full list of linters - https://golangci-lint.run/usage/linters
disable-all: true
enable:
- errcheck # Mandatory. Do not disable.
- ineffassign # Mandatory. Do not disable.
- staticcheck # Mandatory. Do not disable.
- gomodguard
- nolintlint

# TODO:
# - bodyclose # https://github.com/timakin/bodyclose
# - gocritic
# - goimports
# - gosec
# - gosimple
# - govet
# - noctx
# - stylecheck
# - typecheck
# - unused

linters-settings:
gocritic:
enabled-tags:
- diagnostic
- experimental
- opinionated
- performance
- style

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:
- (io.Closer).Close
- (io.ReadCloser).Close

govet:
enable-all: true
disable:
- shadow
- fieldalignment

gomodguard:
blocked:
# List of blocked modules.
modules:
- github.com/pkg/errors:
recommendations:
- github.com/mailgun/errors
- errors
reason: "Deprecated"

stylecheck:
# https://staticcheck.io/docs/options#checks
checks: ["all"]

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: 50

run:
# include test files or not, default is true
tests: true

# Timeout for analysis, e.g. 30s, 5m.
# Default: 1m
timeout: 5m
13 changes: 13 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,16 @@ godoc:
.PHONY: nilaway
nilaway: $(NILAWAY)
$(NILAWAY) -include-pkgs="$(PACKAGE)" -test=false -exclude-errors-in-files=mock_ ./...

# linter:
GOLINT = $(GOPATH)/bin/golangci-lint
$(GOLINT):
curl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(GOPATH)/bin v1.61.0

.PHONY: lint-new
lint-new: $(GOLINT)
$(GOLINT) run -new-from-rev=master

.PHONY: lint
lint: $(GOLINT)
$(GOLINT) run
10 changes: 4 additions & 6 deletions analytics.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@ import (
type MetricsPagination struct {
// Colon-separated value indicating column name and sort direction e.g. 'domain:asc'.
Sort string `json:"sort"`
// The number of items to skip over when satisfying the request. To get the first page of data set skip to zero. Then increment the skip by the limit for subsequent calls.
// The number of items to skip over when satisfying the request.
// To get the first page of data set skip to zero.
// Then increment the skip by the limit for subsequent calls.
Skip int `json:"skip"`
// The maximum number of items returned in the response.
Limit int `json:"limit"`
Expand Down Expand Up @@ -79,11 +81,7 @@ func (iter *MetricsIterator) Next(ctx context.Context, resp *MetricsResponse) (m

iter.opts.Pagination.Skip = iter.opts.Pagination.Skip + iter.opts.Pagination.Limit

if len(resp.Items) < iter.opts.Pagination.Limit {
return false
}

return true
return len(resp.Items) == iter.opts.Pagination.Limit
}

func (iter *MetricsIterator) fetch(ctx context.Context, resp *MetricsResponse) error {
Expand Down

0 comments on commit 9999804

Please sign in to comment.