From e48be3936e3d6b8cf14972e161c02f4907ef5ce2 Mon Sep 17 00:00:00 2001 From: eleksir Date: Sun, 15 Oct 2023 18:16:45 +0300 Subject: [PATCH] Add golangci-lint and fix a bit of errors --- .golangci.yml | 69 ++++++++++++++++++++++++++++++++++++++ Makefile | 10 +++--- README.md | 6 ++-- buny.go | 2 +- commands.go | 2 +- data/sample_blacklist.json | 10 +++--- 6 files changed, 84 insertions(+), 15 deletions(-) create mode 100644 .golangci.yml diff --git a/.golangci.yml b/.golangci.yml new file mode 100644 index 0000000..44130af --- /dev/null +++ b/.golangci.yml @@ -0,0 +1,69 @@ +run: + tests: false + skip-dirs: + - data + - vendor + modules-download-mode: readonly + allow-parallel-runners: true + go: '1.21' +output: + sort-results: true +linters-settings: + gosec: + excludes: + # Оно не используется для повышения безопасности или каких-то таких секъюрых вещей, оно используется для выборки + # произвольного элемента из массива, так что ИДИ НАХУЙ с этой проверкой и не еби мозги липовой безопасностью. + - G404 # Insecure random number source (rand) +linters: + disable-all: true + enable: + - errcheck + - gosimple + - govet + - ineffassign + - staticcheck + - unused + - asasalint + - asciicheck + - bodyclose + - containedctx + - contextcheck + - decorder + - durationcheck + - errchkjson + - errorlint + - exhaustive + - exhaustruct + - exportloopref + - ginkgolinter + - gci + - gocheckcompilerdirectives + - gocritic + - godot + - goerr113 + - gofmt + - goimports + - gosec + - gosmopolitan + - grouper + - importas + - ireturn + - makezero + - mirror + - nakedret + - nilerr + - nilnil + - nlreturn + - noctx + - nolintlint + - nonamedreturns + - predeclared + - promlinter + - reassign + - revive + - rowserrcheck + - stylecheck + - unconvert + - wastedassign + - whitespace + - wsl diff --git a/Makefile b/Makefile index 2b88315..cff37fd 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ FILELIST=collection.go types.go globals.go lib.go event_parser.go buny.go comman BINARY=buny-jabber-bot -# На windows имя бинарника может зависеть не только от платформы, но и от выранной цели, для linux-а суффикс .exe +# На windows имя бинарника может зависеть не только от платформы, но и от выбранной цели, для linux-а суффикс .exe # не нужен ifeq ($(OS),Windows_NT) ifeq ($(strip $(GOOS)),) @@ -23,10 +23,10 @@ define IFS endef -# Используем классические таргеты, где первый встречаемый является таргетом по-умолчанию +## Используем классические таргеты, где первый встречаемый является таргетом по-умолчанию all: clean build - +## Этот таргет собирает бинарь build: # Ну и дальше просто билдим бинарник средствами гошки ifeq ($(OS),Windows_NT) @@ -45,12 +45,12 @@ else endif -# Удаляем бинарник средствами go +## Удаляем бинарник средствами go clean: go clean -# Служебный таргет, для целей разработки. Обновляет завендоренные либы, брутальным образом. +## Служебный таргет, для целей разработки. Обновляет завендоренные либы, брутальным образом. upgrade: ifeq ($(OS),Windows_NT) # вариант с jetbrains golang на windows или powershell на windows diff --git a/README.md b/README.md index 0f416f0..2895307 100644 --- a/README.md +++ b/README.md @@ -13,8 +13,8 @@ Имеет возможность заносить пользователей в бан-лист, согласно заданным в чёрном списке правилам: по совпадению с регулярными выражениями в nick-е или jid-е злодея, а также по регулярным выражениям характерных фраз. Правила можно -настроить как глобально, для всех комнат, где присутсвует бот, так и для каждой комнаты отдельно. При изменении списка -правил бота надо перезапускать. +настроить как глобально, для всех комнат, где присутствует бот, так и для каждой комнаты отдельно. При изменении списка +правил бота не надо перезапускать, достаточно отдать ему команду rehash либо в приват, либо прям в чатике. ## Что он не может? @@ -46,7 +46,7 @@ make Почему нельзя оставить комнату анонимной? А тут всё просто, в банлист заносится реальный jid пользователя, а не его ник. Соответственно, бот должен видеть этот самый реальный jid. В анонимной комнате бот не сможет увидеть реальный jid. -А автокик - это конечно хорошо, но есть нюанс: можно, например, гадить ником. +А автокик - это конечно хорошо, но есть нюанс: можно, например, гадить ником, поэтому бот в автокик не умеет. ## Как работает бан? diff --git a/buny.go b/buny.go index 58acb81..8f79a4a 100644 --- a/buny.go +++ b/buny.go @@ -209,7 +209,7 @@ func bunyPresense(v xmpp.Presence) error { //nolint:gocognit,gocyclo return err } -// bunyChat проиводит проверку сообщений участников чата по списку забаненных фраз и в случае нахождения запрещённого +// bunyChat производит проверку сообщений участников чата по списку забаненных фраз и в случае нахождения запрещённого // шаблона банит участника чата. func bunyChat(v xmpp.Chat) error { var ( diff --git a/commands.go b/commands.go index eed136a..1d5bc87 100644 --- a/commands.go +++ b/commands.go @@ -54,7 +54,7 @@ func cmd(v xmpp.Chat) error { return err } - case v.Text == fmt.Sprintf("%srehash", config.CSign): + case v.Text == fmt.Sprintf("%srehash", config.CSign): //nolint:wsl /* Эта команда может прилетать из приватной беседы с realjid-ом, из приватной беседы с chat-nick-ом, а также из * чятика. * Groupchat мы можем определить по v.Type (groupchat) и тогда понятно что делать. diff --git a/data/sample_blacklist.json b/data/sample_blacklist.json index 8a3ae29..a8fd61d 100644 --- a/data/sample_blacklist.json +++ b/data/sample_blacklist.json @@ -1,14 +1,14 @@ { "blacklist": [ { - # Пустой список означает глобальные баны, которые применяются ко всем комнатам, где присутствует бот + # Пустой список означает глобальные баны, которые применяются ко всем комнатам, где присутствует бот. "room_name": "", - # Записывать ли в reason в банлисте комнаты сообщение вида autoban at yyyy.MM.dd hh:mm:ss + # Записывать ли в reason в банлисте комнаты сообщение вида autoban at yyyy.MM.dd hh:mm:ss. # Если не задано, то false "reason_enable": false, - # Список регулярок JID-ов, которых надо банить + # Список регулярок JID-ов, которых надо банить. "jid_re": [ "^[Mm]ary@server.tld/resource1$", "^[cC]hris(topher)?@", @@ -16,13 +16,13 @@ "^(her|his)_dog@.*\\.street/.*" ], - # Список регулярок nick-ов злодеев + # Список регулярок nick-ов злодеев. "nick_re": [ "^(Annoying_)?[F|f]ly$", "^Buzzing_Wasp$" ], - # Список регулярок, запрещённых к упоминанию в чяте + # Список регулярок, запрещённых к упоминанию в чяте. "phrase_re": [ "^Exterminate.$" ]