Линтер
Wippy включает встроенный линтер, который выполняет проверку типов и статический анализ Lua-кода. Запустите его командой wippy lint.
Использование
Заголовок раздела «Использование»wippy lint # Проверить все Lua-записиwippy lint --level hint # Показать все диагностики, включая подсказкиwippy lint --json # Вывод в формате JSONwippy lint --ns app # Проверить только пространство имён appwippy lint --summary # Группировать результаты по коду ошибкиЧто проверяется
Заголовок раздела «Что проверяется»Линтер проверяет все виды Lua-записей:
function.lua- Функцииlibrary.lua- Библиотекиprocess.lua- Процессыworkflow.lua- Рабочие процессы
Их предкомпилированные .bc-варианты (function.lua.bc, library.lua.bc, process.lua.bc, workflow.lua.bc) также проверяются линтером.
Каждая запись парсится, проверяется на типы и анализируется на предмет ошибок корректности.
Уровни серьёзности
Заголовок раздела «Уровни серьёзности»Диагностики имеют три уровня серьёзности:
| Уровень | Описание |
|---|---|
error | Ошибки типов и проблемы корректности, которые необходимо исправить |
warning | Вероятные ошибки или проблемные паттерны |
hint | Стилистические рекомендации и информационные замечания |
Управляйте отображаемыми уровнями с помощью --level:
wippy lint --level error # Только ошибкиwippy lint --level warning # Предупреждения и ошибки (по умолчанию)wippy lint --level hint # ВсеКоды ошибок
Заголовок раздела «Коды ошибок»Ошибки парсинга
Заголовок раздела «Ошибки парсинга»| Код | Описание |
|---|---|
P0001 | Синтаксическая ошибка Lua - исходный код не может быть разобран |
Ошибки проверки типов (серия E)
Заголовок раздела «Ошибки проверки типов (серия E)»Ошибки проверки типов (E0001+) сообщают о проблемах, найденных системой типов: несоответствия типов, неопределённые переменные, недопустимые операции и подобные проблемы корректности. Они всегда выводятся как ошибки.
local x: number = "hello" -- E: string not assignable to number
local function add(a: number, b: number): number return a + bend
add("one", "two") -- E: string not assignable to numberПредупреждения правил линтера (серия W)
Заголовок раздела «Предупреждения правил линтера (серия 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.*" # Все в пространстве appwippy lint --ns app --ns lib # Несколько пространств имёнЗависимости выбранных записей загружаются для проверки типов, но их диагностики не выводятся.
По коду ошибки
Заголовок раздела «По коду ошибки»Фильтрация диагностик по коду:
wippy lint --code E0001wippy lint --code E0001 --code E0004По количеству
Заголовок раздела «По количеству»Ограничение числа отображаемых диагностик:
wippy lint --limit 10 # Показать первые 10 проблемФорматы вывода
Заголовок раздела «Форматы вывода»Табличный формат (по умолчанию)
Заголовок раздела «Табличный формат (по умолчанию)»Каждая диагностика отображается с контекстом исходного кода, расположением в файле и сообщением об ошибке. Результаты сортируются по записи, серьёзности и номеру строки.
Итоговая строка показывает суммарные значения:
Checked 42 entries: 5 errors, 12 warningsСводный формат
Заголовок раздела «Сводный формат»Группировка диагностик по пространству имён и коду ошибки:
wippy lint --summaryBy 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
Заголовок раздела «Формат 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
Заголовок раздела «Интеграция с 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
- Типы - Документация по системе типов
- Языковой сервер - Интеграция с редактором и диагностика в реальном времени