Линтер
Wippy включает встроенный линтер, который выполняет проверку типов и статический анализ Lua-кода. Запустите его командой wippy lint.
Использование
wippy lint # Проверить все Lua-записи
wippy lint --level hint # Показать все диагностики, включая подсказки
wippy lint --json # Вывод в формате JSON
wippy lint --ns app # Проверить только пространство имён app
wippy lint --summary # Группировать результаты по коду ошибки
Что проверяется
Линтер проверяет все виды Lua-записей:
function.lua.*- Функцииlibrary.lua.*- Библиотекиprocess.lua.*- Процессыworkflow.lua.*- Рабочие процессы
Каждая запись парсится, проверяется на типы и анализируется на предмет ошибок корректности.
Уровни серьёзности
Диагностики имеют три уровня серьёзности:
| Уровень | Описание |
|---|---|
error |
Ошибки типов и проблемы корректности, которые необходимо исправить |
warning |
Вероятные ошибки или проблемные паттерны |
hint |
Стилистические рекомендации и информационные замечания |
Управляйте отображаемыми уровнями с помощью --level:
wippy lint --level error # Только ошибки
wippy lint --level warning # Предупреждения и ошибки (по умолчанию)
wippy lint --level hint # Все
Коды ошибок
Ошибки парсинга
| Код | Описание |
|---|---|
P0001 |
Синтаксическая ошибка Lua - исходный код не может быть разобран |
Ошибки проверки типов (серия E)
Ошибки проверки типов (E0001+) сообщают о проблемах, найденных системой типов: несоответствия типов, неопределённые переменные, недопустимые операции и подобные проблемы корректности. Они всегда выводятся как ошибки.
local x: number = "hello" -- E: string not assignable to number
local function add(a: number, b: number): number
return a + b
end
add("one", "two") -- E: string not assignable to number
Предупреждения правил линтера (серия W)
Правила линтера обеспечивают проверки стиля и качества кода. Включите их с помощью --rules:
wippy lint --rules
| Код | Правило | Описание |
|---|---|---|
W0001 |
no-empty-blocks | Пустые блоки операторов |
W0002 |
no-global-assign | Присваивание глобальным переменным |
W0003 |
no-self-compare | Сравнение значения с самим собой |
W0004 |
no-unused-vars | Неиспользуемые локальные переменные |
W0005 |
no-unused-params | Неиспользуемые параметры функций |
W0006 |
no-unused-imports | Неиспользуемые импорты |
W0007 |
no-shadowed-vars | Переменная затеняет внешнюю область видимости |
Без --rules выполняется только проверка типов (коды P и E).
Фильтрация
По пространству имён
Проверяйте конкретные пространства имён с помощью --ns:
wippy lint --ns app # Точное совпадение пространства имён
wippy lint --ns "app.*" # Все в пространстве app
wippy lint --ns app --ns lib # Несколько пространств имён
Зависимости выбранных записей загружаются для проверки типов, но их диагностики не выводятся.
По коду ошибки
Фильтрация диагностик по коду:
wippy lint --code E0001
wippy lint --code E0001 --code E0004
По количеству
Ограничение числа отображаемых диагностик:
wippy lint --limit 10 # Показать первые 10 проблем
Форматы вывода
Табличный формат (по умолчанию)
Каждая диагностика отображается с контекстом исходного кода, расположением в файле и сообщением об ошибке. Результаты сортируются по записи, серьёзности и номеру строки.
Итоговая строка показывает суммарные значения:
Checked 42 entries: 5 errors, 12 warnings
Сводный формат
Группировка диагностик по пространству имён и коду ошибки:
wippy lint --summary
By namespace:
app 15 issues (5 errors, 10 warnings)
lib 2 issues (2 warnings)
By error code:
E0001 [error ] 5 occurrences
E0004 [error ] 3 occurrences
Checked 42 entries: 5 errors, 12 warnings
Формат JSON
Машиночитаемый вывод для интеграции с CI/CD:
wippy lint --json
{
"diagnostics": [
{
"entry_id": "app:handler",
"code": "E0001",
"severity": "error",
"message": "string not assignable to number",
"line": 10,
"column": 5
}
],
"total_entries": 42,
"error_count": 5,
"warning_count": 12,
"hint_count": 0
}
Кэширование
Линтер кэширует результаты для ускорения повторных запусков. Ключи кэша основаны на хэше исходного кода, имени метода, зависимостях и конфигурации системы типов.
Очистите кэш, если результаты кажутся устаревшими:
wippy lint --cache-reset
Интеграция с CI/CD
Используйте JSON-вывод и коды возврата для автоматических проверок:
wippy lint --json --level error > lint-results.json
Линтер завершается с кодом 0, если ошибок не найдено, и с ненулевым кодом при наличии ошибок.
Пример шага GitHub Actions:
- name: Lint
run: wippy lint --level warning
Справочник флагов
| Флаг | Сокр. | По умолчанию | Описание |
|---|---|---|---|
--level |
warning | Минимальный уровень серьёзности (error, warning, hint) | |
--json |
false | Вывод в формате JSON | |
--ns |
Фильтр по шаблонам пространства имён | ||
--code |
Фильтр по кодам ошибок | ||
--limit |
0 | Максимум диагностик для отображения (0 = без ограничений) | |
--summary |
false | Группировать по коду ошибки | |
--no-color |
false | Отключить цветной вывод | |
--rules |
false | Включить правила линтера (проверки стиля/качества серии W) | |
--cache-reset |
false | Очистить кэш перед проверкой | |
--lock-file |
-l |
wippy.lock | Путь к файлу блокировки |
Смотрите также
- CLI - Полный справочник CLI
- Типы - Документация по системе типов
- Языковой сервер - Интеграция с редактором и диагностика в реальном времени