Skip to content

Коды предупреждений

В этом документе перечислены коды предупреждений, которые могут быть сгенерированы компилятором YaoXiang. Предупреждения не останавливают компиляцию, но могут указывать на потенциальные проблемы в коде.

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

Поведение предупреждений можно настроить через yaoxiang.toml:

toml
[lint]
# Уровень предупреждения для мёртвого кода: off | warn | deny
dead-code = "warn"
  • off: отключить предупреждение
  • warn: показать предупреждение (по умолчанию)
  • deny: считать предупреждение ошибкой

Список предупреждений

W1001: Неиспользуемая экспортированная функция

Причина: Экспортированная функция никогда не вызывается никаким кодом.

yaoxiang
pub dead_function: () -> Void = { }  // W1001: Неиспользуемая экспортированная функция

main = {
    // dead_function никогда не вызывается
}

Рекомендации

  • Если функция не требуется для внешнего использования, уберите модификатор pub
  • Если функцию нужно сохранить, но пока не использовать, можно установить dead-code = "off" в конфигурации

W1002: Неиспользуемый экспортированный тип

Причина: Экспортированный тип (type-псевдоним или пользовательский тип) никогда не используется.

Пример

yaoxiang
DeadType: Type = Int  // W1002: Неиспользуемый экспортированный тип

main = {
    x = 42
}

Рекомендации

  • Если тип нужно экспортировать, но пока не использовать, можно игнорировать это предупреждение

W1003: Неиспользуемый импорт

Причина: Модуль или символ, импортированный оператором use, никогда не используется.

yaoxiang
use std.json  // W1003: Неиспользуемый импорт

main = {
    // модуль json никогда не используется
}

Рекомендации

  • Удалите неиспользуемые импорты для поддержания чистоты кода
  • Если импорт нужно сохранить (для побочных эффектов), рассмотрите использование use std.json.* или добавление комментария

W1004: Неиспользуемая экспортированная переменная

Причина: Переменная, экспортированная с помощью pub, никогда не читается.

Пример

yaoxiang
pub dead_var = 42  // W1004: Неиспользуемая экспортированная переменная

main = {
    // dead_var никогда не читается
}

Рекомендации

  • Уберите ненужный модификатор pub
  • Если переменную нужно экспортировать, но пока не использовать, можно игнорировать это предупреждение

W1005: Неиспользуемый экспортированный метод

Причина: Метод, экспортированный на типе, никогда не вызывается.

Пример

yaoxiang
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): указывает на потенциальные проблемы, исправление необязательно