Skip to content
ishkaiPublic

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

LogLint

LogLint — анализатор для Go, который проверяет сообщения логирования и помогает поддерживать единый стиль логов.

Линтер анализирует вызовы логгеров и выявляет проблемы в текстах сообщений.

Поддерживаются:

  • log/slog
  • go.uber.org/zap

Проверяемые правила

LogLint проверяет следующие правила.

1. Lowercase

Сообщение лога должно начинаться с маленькой буквы.

❌ Плохо

slog.Info("Server started")

✅ Хорошо

slog.Info("server started")

2. English

Сообщения должны содержать только английский текст.

❌ Плохо

slog.Info("сервер запущен")

3.Special characters

Сообщения не должны содержать спецсимволы или emoji.

❌ Плохо

logger.Info("server started!!!")
logger.Info("deployment finished 🚀")

4. Sensitive data

Сообщения не должны содержать чувствительные данные.

По умолчанию проверяются:

password
token
api_key
secret

❌ Плохо

logger.Info("user password leaked")

Автоматическое исправление (SuggestedFix)

Для некоторых правил линтер умеет автоматически исправлять код.

Например:

slog.Info("Server started!!!")

будет предложено исправить на:

slog.Info("server started")

Установка

Клонировать репозиторий:

git clone https://github.com/USERNAME/loglint.git
cd loglint

Собрать бинарник:

go build -o loglint ./cmd/mylinter

После этого появится исполняемый файл:

loglint

Использование

Запуск линтера:

./loglint ./...

Пример вывода:

example/example.go:8:12: log should start with lowercase
example/example.go:10:12: log should not contain special characters
example/example.go:11:2: log should not contain any sensitive words

Линтер возвращает exit code 3, если найдены ошибки.

Это удобно использовать в CI.


Конфигурация

Линтер поддерживает конфигурационный файл.

Пример loglint.yaml:

enabled_rules:
  - lowercase
  - english
  - special
  - sensitive

sensitive_words:
  - password
  - token
  - api_key
  - secret

sensitive_patterns:
  - '(?i)authorization'
  - '(?i)bearer\s+[a-z0-9\-\._]+'

Запуск с конфигурацией:

./loglint -config=loglint.yaml ./...

Тестирование

Запуск всех тестов:

go test ./...

Тесты включают:

  • проверку диагностик (analysistest)

  • проверку автоисправлений (SuggestedFix)

  • unit-тесты правил


CI

Проект использует GitHub Actions для автоматической проверки:

  • сборка проекта

  • запуск тестов

  • проверка статического анализа

CI запускается автоматически при каждом push.

Структура проекта

cmd/mylinter      — CLI для запуска линтера
analyzer          — основной анализатор
rules             — правила проверки логов
lint              — поиск лог-вызовов в AST
config            — загрузка конфигурации
testdata          — тестовые кейсы analysistest

Требования

  • Go 1.22+

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages