Skip to content

Commit 79a41f8

Browse files
author
Dmitrii Shcherbakov
committed
Bump golang and golangci versions
1 parent 9d52552 commit 79a41f8

File tree

11 files changed

+153
-40
lines changed

11 files changed

+153
-40
lines changed

.github/workflows/audit.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ jobs:
2323
cache-dependency-path: ./go.sum
2424

2525
- name: Run golangci-lint
26-
uses: golangci/golangci-lint-action@v6
26+
uses: golangci/golangci-lint-action@v7
2727
with:
28-
version: v1.55.2
28+
version: v1.64.5
2929
working-directory: ./
3030

3131
- name: Install dependencies

.golangci.yml

+140-9
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,57 @@ run:
33
timeout: 5m
44

55
linters:
6-
disable-all: true
6+
disable-all:
7+
true
8+
# Disabled linters:
9+
# canonicalheader
10+
# decorder
11+
# dupword
12+
# err113
13+
# exhaustruct
14+
# forbidigo
15+
# forcetypeassert # заменён на errcheck
16+
# funlen
17+
# ginkgolinter
18+
# gofmt # заменён на goimports
19+
# gofumpt # заменён на goimports
20+
# goheader
21+
# gomoddirectives
22+
# gomodguard # используется более мощный depguard
23+
# gosmopolitan
24+
# grouper
25+
# interfacebloat
26+
# intrange
27+
# ireturn
28+
# lll
29+
# loggercheck
30+
# mirror
31+
# misspell # бесполезный
32+
# nonamedreturns
33+
# nlreturn # слишком строгий и в основном код не более читабелен
34+
# paralleltest # слишком много ложных срабатываний
35+
# protogetter
36+
# sloglint
37+
# spancheck
38+
# sqlclosecheck
39+
# tagalign
40+
# tenv # заменён на usetesting.os-setenv: true
41+
# testableexamples
42+
# testpackage
43+
# varnamelen
44+
# wastedassign
45+
# wsl # слишком строгий и в основном код не более читабелен
46+
# zerologlint
747
enable:
848
- asasalint
949
- asciicheck
1050
- bidichk
1151
- bodyclose
1252
- containedctx
1353
- contextcheck
54+
- copyloopvar
1455
- cyclop
56+
- depguard
1557
- dogsled
1658
- dupl
1759
- durationcheck
@@ -20,59 +62,86 @@ linters:
2062
- errname
2163
- errorlint
2264
- exhaustive
23-
- exportloopref
24-
- forcetypeassert
65+
- exptostd
66+
- fatcontext
2567
- gci
2668
- gocheckcompilerdirectives
2769
- gochecknoglobals
2870
- gochecknoinits
71+
- gochecksumtype
2972
- gocognit
3073
- goconst
3174
- gocritic
3275
- gocyclo
3376
- godot
3477
- godox
35-
- gofmt
3678
- goimports
37-
- gomnd
3879
- goprintffuncname
3980
- gosec
4081
- gosimple
4182
- govet
83+
- iface
4284
- importas
85+
- inamedparam
4386
- ineffassign
4487
- maintidx
4588
- makezero
46-
- misspell
89+
- mnd # https://golangci-lint.run/usage/linters/#mnd
4790
- musttag
4891
- nakedret
4992
- nestif
5093
- nilerr
94+
- nilnesserr
5195
- nilnil
52-
- nlreturn
5396
- noctx
5497
- nolintlint
5598
- nosprintfhostport
56-
- paralleltest
99+
- perfsprint
57100
- prealloc
58101
- predeclared
102+
- promlinter
59103
- reassign
104+
- recvcheck
60105
- revive
106+
- rowserrcheck
61107
- staticcheck
62108
- stylecheck
63109
- tagliatelle
110+
- testifylint
64111
- thelper
112+
- tparallel
65113
- typecheck
66114
- unconvert
67115
- unparam
68116
- unused
69117
- usestdlibvars
118+
- usetesting
70119
- whitespace
71120
- wrapcheck
72121

73122
linters-settings:
123+
cyclop:
124+
max-complexity: 15
125+
skip-tests: true
126+
depguard:
127+
rules:
128+
main:
129+
list-mode: lax
130+
deny:
131+
- pkg: "github.com/pkg/errors"
132+
desc: Should be replaced by standard lib errors package
133+
- pkg: "github.com/golang/protobuf"
134+
desc: "Use google.golang.org/protobuf instead, see https://developers.google.com/protocol-buffers/docs/reference/go/faq#modules"
135+
errcheck:
136+
check-type-assertions: true
74137
errorlint:
75138
errorf: false
139+
exhaustive:
140+
# Presence of "default" case in switch statements satisfies exhaustiveness,
141+
# even if all enum members are not listed.
142+
default-signifies-exhaustive: true
143+
# Only run exhaustive check on switches with "//exhaustive:enforce" comment.
144+
explicit-exhaustive-switch: true
76145
gci:
77146
sections:
78147
- standard
@@ -81,8 +150,70 @@ linters-settings:
81150
gocognit:
82151
min-complexity: 10
83152
gocyclo:
84-
min-complexity: 10
153+
min-complexity: 15
154+
goimports:
155+
local-prefixes: capuchin
156+
gosec:
157+
excludes:
158+
- G108 # Profiling endpoint automatically exposed on /debug/pprof
159+
govet:
160+
# Run `GL_DEBUG=govet golangci-lint run --enable=govet` to see default, all available analyzers, and enabled analyzers.
161+
enable-all: true
162+
disable:
163+
- fieldalignment # Использовать при необходимости, ухудшается читаемость кода
164+
- slog # На проекте используется zap
165+
settings:
166+
shadow:
167+
strict: true
168+
iface:
169+
enable:
170+
- identical
171+
- unused
172+
- opaque
85173
nestif:
86174
min-complexity: 4
175+
nolintlint:
176+
require-explanation: true
177+
require-specific: true
178+
revive:
179+
enable-all-rules: true
180+
rules:
181+
- name: add-constant
182+
disabled: true
183+
- name: cognitive-complexity
184+
disabled: true
185+
- name: comment-spacings
186+
disabled: true
187+
- name: cyclomatic
188+
disabled: true
189+
- name: function-length
190+
disabled: true
191+
- name: line-length-limit
192+
disabled: true
193+
- name: max-public-structs
194+
disabled: true
195+
- name: unused-parameter
196+
disabled: true
197+
rowserrcheck:
198+
packages:
199+
- github.com/jmoiron/sqlx
200+
tagliatelle:
201+
case:
202+
use-field-name: true
203+
testifylint:
204+
enable-all: true
205+
disable:
206+
- require-error
87207
unparam:
88208
check-exported: true
209+
210+
issues:
211+
# Maximum count of issues with the same text.
212+
# Set to 0 to disable.
213+
# Default: 3
214+
max-same-issues: 50
215+
216+
exclude-rules:
217+
- linters:
218+
- govet
219+
text: '^shadow: declaration of "err" shadows declaration.+'

.tool-versions

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
golang 1.21.4
2-
golangci-lint 1.55.2
1+
golang 1.23.6
2+
golangci-lint 1.64.5

Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
# STEP 1 build executable binary #
77
##################################
88

9-
FROM golang:1.21.4-alpine as builder
9+
FROM golang:1.23.6-alpine as builder
1010

1111
LABEL org.opencontainers.image.source="https://github.com/phpgeeks-club/admin-bot"
1212

go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module geeksonator
22

3-
go 1.21
3+
go 1.23.6
44

55
require (
66
github.com/caarlos0/env/v10 v10.0.0

internal/app/geeksonator/app.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ func Start() error {
4343
if err != nil {
4444
return fmt.Errorf("newLogger: %v", err)
4545
}
46-
defer logger.Sync() //nolint:errcheck
46+
defer logger.Sync() //nolint:errcheck // it's ok
4747

4848
var tgBotToken string
4949
if cfg.DebugMode {
@@ -118,7 +118,7 @@ func Start() error {
118118
}
119119

120120
// newLogger creates new logger.
121-
func newLogger(debugMode bool) (*zap.Logger, error) {
121+
func newLogger(debugMode bool) (*zap.Logger, error) { //nolint:revive // false positive
122122
if debugMode {
123123
logger, err := zap.NewDevelopment()
124124
if err != nil {

internal/observer/manager.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ func authorIsAdmin(admins []tgbotapi.ChatMember, userID int64) bool {
200200
}
201201

202202
// getMessageText returns message text.
203-
func getMessageText(text string) string { //nolint:cyclop,gocyclo
203+
func getMessageText(text string) string {
204204
switch text {
205205
case "/help", "/хелп":
206206
return `БОТ РАБОТАЕТ ТОЛЬКО У АДМИНОВ.

internal/observer/manager_test.go

+1-8
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ func TestNewManager(t *testing.T) {
4343
},
4444
}
4545
for _, tt := range tests {
46-
tt := tt
4746
t.Run(tt.name, func(t *testing.T) {
4847
t.Parallel()
4948

@@ -57,7 +56,7 @@ func TestNewManagerWithDebug(t *testing.T) {
5756
t.Parallel()
5857

5958
m := NewManager(nil, nil, nil, WithDebug(zap.NewNop()))
60-
assert.NotEqual(t, nil, m.logger)
59+
assert.NotNil(t, m.logger)
6160
}
6261

6362
func TestNewManagerWithSkipAdminCheck(t *testing.T) {
@@ -183,7 +182,6 @@ func TestManager_processingUpdate(t *testing.T) {
183182
},
184183
}
185184
for _, tt := range tests {
186-
tt := tt
187185
t.Run(tt.name, func(t *testing.T) {
188186
t.Parallel()
189187

@@ -359,7 +357,6 @@ func TestManager_processingMessage(t *testing.T) {
359357
},
360358
}
361359
for _, tt := range tests {
362-
tt := tt
363360
t.Run(tt.name, func(t *testing.T) {
364361
t.Parallel()
365362

@@ -529,7 +526,6 @@ func TestManager_sendMessage(t *testing.T) {
529526
},
530527
}
531528
for _, tt := range tests {
532-
tt := tt
533529
t.Run(tt.name, func(t *testing.T) {
534530
t.Parallel()
535531

@@ -636,7 +632,6 @@ func TestManager_getAdmins(t *testing.T) {
636632
},
637633
}
638634
for _, tt := range tests {
639-
tt := tt
640635
t.Run(tt.name, func(t *testing.T) {
641636
t.Parallel()
642637

@@ -689,7 +684,6 @@ func Test_authorIsAdmin(t *testing.T) {
689684
},
690685
}
691686
for _, tt := range tests {
692-
tt := tt
693687
t.Run(tt.name, func(t *testing.T) {
694688
t.Parallel()
695689

@@ -719,7 +713,6 @@ func Test_getMessageText(t *testing.T) {
719713
},
720714
}
721715
for _, tt := range tests {
722-
tt := tt
723716
t.Run(tt.name, func(t *testing.T) {
724717
t.Parallel()
725718

internal/provider/telegram/service.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func (s *Service) GetChatAdministrators(chatConfig tgbotapi.ChatConfig) ([]tgbot
3333
}
3434

3535
// NewMessage creates new message.
36-
func (s *Service) NewMessage(chatID int64, text string) tgbotapi.MessageConfig {
36+
func (*Service) NewMessage(chatID int64, text string) tgbotapi.MessageConfig {
3737
return tgbotapi.NewMessage(chatID, text)
3838
}
3939

internal/provider/telegram/service_test.go

-4
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ func TestNewService(t *testing.T) {
3131
},
3232
}
3333
for _, tt := range tests {
34-
tt := tt
3534
t.Run(tt.name, func(t *testing.T) {
3635
t.Parallel()
3736

@@ -79,7 +78,6 @@ func TestService_GetChatAdministrators(t *testing.T) {
7978
},
8079
}
8180
for _, tt := range tests {
82-
tt := tt
8381
t.Run(tt.name, func(t *testing.T) {
8482
t.Parallel()
8583

@@ -121,7 +119,6 @@ func TestService_NewMessage(t *testing.T) {
121119
},
122120
}
123121
for _, tt := range tests {
124-
tt := tt
125122
t.Run(tt.name, func(t *testing.T) {
126123
t.Parallel()
127124

@@ -172,7 +169,6 @@ func TestService_Send(t *testing.T) {
172169
},
173170
}
174171
for _, tt := range tests {
175-
tt := tt
176172
t.Run(tt.name, func(t *testing.T) {
177173
t.Parallel()
178174

0 commit comments

Comments
 (0)