Коды предупреждений
В этом документе перечислены коды предупреждений, которые могут быть сгенерированы компилятором YaoXiang. Предупреждения не останавливают компиляцию, но могут указывать на потенциальные проблемы в коде.
Конфигурация
Поведение предупреждений можно настроить через yaoxiang.toml:
[lint]
# Уровень предупреждения для мёртвого кода: off | warn | deny
dead-code = "warn"off: отключить предупреждениеwarn: показать предупреждение (по умолчанию)deny: считать предупреждение ошибкой
Список предупреждений
W1001: Неиспользуемая экспортированная функция
Причина: Экспортированная функция никогда не вызывается никаким кодом.
pub dead_function: () -> Void = { } // W1001: Неиспользуемая экспортированная функция
main = {
// dead_function никогда не вызывается
}Рекомендации:
- Если функция не требуется для внешнего использования, уберите модификатор
pub - Если функцию нужно сохранить, но пока не использовать, можно установить
dead-code = "off"в конфигурации
W1002: Неиспользуемый экспортированный тип
Причина: Экспортированный тип (type-псевдоним или пользовательский тип) никогда не используется.
Пример:
DeadType: Type = Int // W1002: Неиспользуемый экспортированный тип
main = {
x = 42
}Рекомендации:
- Если тип нужно экспортировать, но пока не использовать, можно игнорировать это предупреждение
W1003: Неиспользуемый импорт
Причина: Модуль или символ, импортированный оператором use, никогда не используется.
use std.json // W1003: Неиспользуемый импорт
main = {
// модуль json никогда не используется
}Рекомендации:
- Удалите неиспользуемые импорты для поддержания чистоты кода
- Если импорт нужно сохранить (для побочных эффектов), рассмотрите использование
use std.json.*или добавление комментария
W1004: Неиспользуемая экспортированная переменная
Причина: Переменная, экспортированная с помощью pub, никогда не читается.
Пример:
pub dead_var = 42 // W1004: Неиспользуемая экспортированная переменная
main = {
// dead_var никогда не читается
}Рекомендации:
- Уберите ненужный модификатор
pub - Если переменную нужно экспортировать, но пока не использовать, можно игнорировать это предупреждение
W1005: Неиспользуемый экспортированный метод
Причина: Метод, экспортированный на типе, никогда не вызывается.
Пример:
Foo: Type = { value: Int }
pub Foo.dead_method: (self: Foo) -> Void = { } // W1005: Неиспользуемый экспортированный метод
main = {
foo = Foo(1)
// dead_method никогда не вызывается
}Рекомендации:
- Уберите ненужный модификатор
pub - Если метод нужно сохранить, но пока не использовать, можно игнорировать это предупреждение
Подробное описание уровней предупреждений
| Уровень | Эффект |
|---|---|
off | Полностью отключить это предупреждение |
warn | Показать предупреждение, продолжить компиляцию (по умолчанию) |
deny | Считать предупреждение ошибкой, остановить компиляцию |
Сценарии использования
- В процессе разработки: используйте уровень
warn, чтобы знать о потенциальных проблемах в коде - Перед выпуском: используйте уровень
deny, чтобы убедиться в отсутствии неиспользуемого кода - Унаследованный код: используйте уровень
off, чтобы временно игнорировать предупреждения
Отличие от кодов ошибок
Коды предупреждений используют префикс W (например, W1001), а коды ошибок используют префикс E (например, E1001).
- Ошибка (Error): останавливает компиляцию, требует исправления
- Предупреждение (Warning): указывает на потенциальные проблемы, исправление необязательно
