Skip to content

Commit ed90563

Browse files
authored
Merge pull request #9 from phpgeeks-club/dimns-patch-7
Bump golang and golangci versions
2 parents 9d52552 + db4c9b0 commit ed90563

File tree

11 files changed

+156
-40
lines changed

11 files changed

+156
-40
lines changed

.github/workflows/audit.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
- name: Run golangci-lint
2626
uses: golangci/golangci-lint-action@v6
2727
with:
28-
version: v1.55.2
28+
version: v1.64.5
2929
working-directory: ./
3030

3131
- name: Install dependencies

.golangci.yml

Lines changed: 140 additions & 9 deletions
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

Lines changed: 2 additions & 2 deletions
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 2 additions & 2 deletions
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

Lines changed: 5 additions & 2 deletions
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 `БОТ РАБОТАЕТ ТОЛЬКО У АДМИНОВ.
@@ -219,7 +219,8 @@ func getMessageText(text string) string { //nolint:cyclop,gocyclo
219219
[<code>/fl</code>, <code>/фл</code>] @freelanceGeeks - IT фриланс, ищем исполнителей и заказчиков, делимся опытом и проблемами связанными с фрилансом.
220220
[<code>/job</code>, <code>/раб</code>] Объединяет сразу две команды: <code>/hr</code> и <code>/fl</code>.
221221
[<code>/code</code>, <code>/код</code>] Код в нашем чате <a href="https://t.me/phpGeeks/1318040">ложут</a> на pastebin.org, gist.github.com или любой аналогичный ресурс (с)der_Igel
222-
[<code>/nometa</code>, <code>/номета</code>] nometa.xyz`
222+
[<code>/nometa</code>, <code>/номета</code>] nometa.xyz
223+
[<code>/wtf</code>, <code>/втф</code>] А причём тут пхп?`
223224
case "/php", "/пхп":
224225
return "@phpGeeks - Best PHP chat"
225226
case "/jun", "/джун":
@@ -243,6 +244,8 @@ func getMessageText(text string) string { //nolint:cyclop,gocyclo
243244
return "Код в нашем чате <a href=\"https://t.me/phpGeeks/1318040\">ложут</a> на pastebin.org, gist.github.com или любой аналогичный ресурс (с)der_Igel"
244245
case "/nometa", "/номета":
245246
return "nometa.xyz"
247+
case "/wtf", "/втф":
248+
return "А причём тут пхп?"
246249
}
247250

248251
return ""

internal/observer/manager_test.go

Lines changed: 1 addition & 8 deletions
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

Lines changed: 1 addition & 1 deletion
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

0 commit comments

Comments
 (0)