Линтер для проверки лог-записей в Go-проектах. Анализирует код и проверяет соответствие логов четырем правилам.
Проект представляет собой статический анализатор кода для Go, который находит в коде вызовы логгеров (slog, zap) и проверяет их аргументы на соответствие правилам форматирования и безопасности.
- Язык: Go 1.25+
- Основной пакет:
golang.org/x/tools/go/analysis - Поддерживаемые логгеры:
log/slog,go.uber.org/zap - Тестирование: встроенный пакет
testing+analysistest
loglinter/
├── pkg/
│ └── analyzer/
│ ├── analyzer.go # Основная логика линтера (4 правила)
│ ├── analyzer_test.go # Unit-тесты
│ └── testdata/
│ └── src/
│ ├── firstletter/ # Тесты для правила 1
│ │ └── firstletter.go
│ ├── englishwords/ # Тесты для правила 2
│ │ └── englishwords.go
│ ├── specialchars/ # Тесты для правила 3
│ │ └── specialchars.go
│ ├── sensitive/ # Тесты для правила 4
│ │ └── sensitive.go
│ └── go.uber.org/
│ └── zap/ # Заглушка для zap
│ └── zap.go
│
├── plugin/
│ └── plugin.go # Плагин для golangci-lint
│
├── cmd/
│ └── loglinter/
│ └── main.go # Точка входа для go vet
│
├── Dockerfile.demo # Docker-образ для кросс-платформенного использования
├── .golangci.yml # Конфигурация для плагина
├── go.mod # Модуль и зависимости
└── README.md # Документация
Все тесты расположены в директории pkg/analyzer/testdata/src/. Для каждого правила создана отдельная папка с тестовыми файлами:
firstletter/- проверка на строчную буквуenglishwords/- проверка на английский языкspecialchars/- проверка на спецсимволы и эмодзиsensitive/- проверка на чувствительные данные
- Перейдите в директорию с тестами:
cd pkg/analyzer- Выполните команду
go test -v- Клонировать репозиторий
git clone https://github.com/gopher-95/loglinter.git- Собрать плагин
go build -buildmode=plugin -o loglinter.so plugin/plugin.go- Скопируйте плагин в корень вашего проекта:
cp loglinter.so /path/to/your/project/- Создайте файл .golangci.yml в корне проекта:
linters-settings:
custom:
loglinter:
path: ./loglinter.so
description: "Линтер для проверки логов"
linters:
enable:
- loglinter- Запустите линтер
golangci-lint runНа платформе Windows Go не поддерживает сборку и загрузку плагинов (-buildmode=plugin). Это техническое ограничение языка Go, которое проявляется ошибкой:
-buildmode=plugin not supported on windows/amd64В качестве решения этой проблемы было принято создать Dockerfile в корне проекта. Для использования на Windows необходимо склонировать мой репозиторий
git clone https://github.com/gopher-95/loglinter.gitПерейти в него
cd loglinterСобрать образ локально
docker build -f Dockerfile.demo -t loglinter-local .Перейти в свой проект
cd /path/to/their-projectИспользовать в своем проекте
docker run --rm -v ${PWD}:/app -w /app loglinter-demo sh -c "cd /app && go vet -vettool=/go/bin/loglinter ./..."