Настройка предупреждений в Visual Basic
В компиляторе Visual Basic предусмотрен набор предупреждений о коде, который может вызвать ошибки времени выполнения. Пользуясь этой информацией, можно писать более элегантный, производительный и качественный код с меньшим количеством ошибок. Например, компилятор выведет предупреждение при попытке пользователя обратиться к элементу объектной переменной, которой не присвоено значения, произвести возврат из функции без установки возвращаемого значения, или выполнить блок Try с ошибками в логике перехвата исключений.
Иногда компилятор предоставляет дополнительную логику, позволяющую пользователю сосредоточиться на прикладных задачах, а не думать о предотвращении возможных ошибок. В предыдущих версиях Visual Basic для ограничения дополнительной логики, предоставляемой компилятором Visual Basic, использовался параметр Option Strict. Настройка предупреждений позволяет ограничить эту логику более детальным способом, на уровне отдельных предупреждений.
У вас может возникнуть необходимость настроить проект и отключить некоторые предупреждения, не относящиеся к приложению, а другие предупреждения трактовать как ошибки. На этой странице показано, как включать и отключать отдельные предупреждения.
Включение и отключение предупреждений
Существует два различных способа настройки предупреждений: их можно настроить с помощью Конструктор проектов, или вы можете использовать /warnaserror и /nowarn параметры компилятора.
Вкладка Компиляция страницы Конструктор проекта позволяет включать и отключать предупреждения. Чтобы отключить все предупреждения, установите флажок Отключить все предупреждения. Чтобы все предупреждения обрабатывались как ошибки, установите флажок Обрабатывать все предупреждения как ошибки. Для отдельных предупреждений в отображаемой таблице можно по необходимости переключать режим обработки в качестве ошибок или предупреждений.
Когда параметр Option Strict установлен равным Off, связанные с Option Strict предупреждения не могут рассматриваться независимо друг от друга. Когда параметр Option Strict установлен равным On, связанные с ним предупреждения рассматриваются как ошибки, независимо от их статуса. Когда параметр Option Strict установлен равным Custom путем указания аргумента /optionstrict:custom в командной строке компилятора, предупреждения Option Strict могут включаться и отключаться независимо друг от друга.
Задать обработку предупреждений как ошибок можно также с помощью параметра командной строки компилятора /warnaserror. В этом параметре можно указать разделенный запятыми список предупреждений, которые должны рассматриваться как ошибки или предупреждения, используя знаки + или - соответственно. Возможные параметры перечислены в следующей таблице.
Параметр командной строки |
Что определяет |
---|---|
/warnaserror+ |
Обрабатывать все предупреждения как ошибки |
/warnsaserror- |
Не рассматривать предупреждения как ошибки. Это значение по умолчанию. |
/warnaserror+:<warning list> |
Обрабатывать как ошибки предупреждения, идентификаторы которых перечислены в разделенном запятыми списке. |
/warnaserror-:<warning list> |
Не обрабатывать как ошибки предупреждения, идентификаторы которых перечислены в разделенном запятыми списке. |
/nowarn |
Не выводить отчет о предупреждениях. |
/nowarn:<warning list> |
Не выводить отчет о предупреждениях, идентификаторы которых перечислены в разделенном запятыми списке. |
Список предупреждений содержит идентификаторы предупреждений, которые должны рассматриваться как ошибки; этот список может указываться в параметрах командной строки для включения и отключения определенных предупреждений. Если список предупреждений содержит недопустимое число, возвращается ошибка.
Примеры
В данной таблице примеров аргументов командной строки описывается назначение каждого аргумента.
Аргумент |
Описание |
---|---|
vbc /warnaserror |
Указывает, что все предупреждения должны рассматриваться как ошибки. |
vbc /warnaserror:42024 |
Указывает, что предупреждение 42024 должно рассматриваться как ошибка. |
vbc /warnaserror:42024,42025 |
Указывает, что предупреждения 42024 и 42025 должны рассматриваться как ошибки. |
vbc /nowarn |
Указывает, что выводить отчет о предупреждениях не следует. |
vbc /nowarn:42024 |
Указывает, что предупреждение 42024 не должно выводиться. |
vbc /nowarn:42024,42025 |
Указывает, что предупреждения 42024 и 42025 не должны выводиться. |
Типы предупреждений
Ниже приведен список предупреждений, которые иногда имеет смысл рассматривать как ошибки.
Предупреждение о неявном преобразовании
Генерируется для случаев неявного преобразования. Сюда не входят неявные преобразования из встроенных числовых типов в строковые типы при использовании оператора &. По умолчанию выключено для новых проектов.
ID: 42016
Предупреждение о вызове метода позднего связывания и разрешении перегрузки
Генерируется для случаев позднего связывания. По умолчанию выключено для новых проектов.
ID: 42017
Предупреждения об операндах типа Object
Генерируются при обнаружении операндов типа Object, которые могут привести к ошибке, если установлен параметр компилятора Option Strict On. По умолчанию включено для новых проектов.
ID: 42018 и 42019
Предупреждения о необходимости использовать предложение "As" в объявлениях
Генерируются, когда в объявлении переменной, функции или свойства отсутствует предложение As, что приводит к ошибке, если установлен параметр компилятора Option Strict On. Предполагается, что переменные, тип которых не задан явно, по умолчанию имеют тип Object. По умолчанию включены для новых проектов.
ID: 42020 (объявление переменной), 42021 (Декларация функции) и 42022 (свойства декларация).
Предупреждения о возможных исключениях при пустых ссылках
Генерируется, когда переменная используется до того, как ей было присвоено значение. По умолчанию включены для новых проектов.
ID: 42104, 42030
Предупреждение о неиспользуемой локальной переменной
Генерируется, когда локальная переменная объявлена, но на нее нет ссылок. По умолчанию включено.
ID: 42024
Предупреждение о доступе к общему члену через экземпляр переменной
Генерируется, когда доступ к общему члену через экземпляр может иметь побочные эффекты, или когда доступ к общему члену через переменную экземпляра производится не в правой части выражения или передается как параметр. По умолчанию включено для новых проектов.
ID: 42025
Предупреждения о рекурсивном операторе или доступе к свойству
Генерируются, когда в теле подпрограммы используется тот же оператор или свойство, в котором она определена. По умолчанию включены для новых проектов.
ID: 42004 (оператор), 42026 (свойство)
Предупреждение о функции или операторе без возвращаемого значения
Генерируется, когда для функции или оператора не задано возвращаемое значение. Сюда входит пропуск оператора Set с неявной локальной переменной, имеющей то же имя, что и функция. По умолчанию включено для новых проектов.
ID: 42105 (функция), 42016 (оператор)
Предупреждение об использовании в модуле модификаторов перегрузки
Генерируется, когда в модуле (Module) используется Overloads. По умолчанию включено для новых проектов.
ID: 42028
Предупреждения о повторяющихся или перекрывающихся блоках Catch
Генерируются, когда блок Catch никогда не достигается из-за его отношений с другими определенными блоками Catch. По умолчанию включены для новых проектов.
ID: 42029, 42031
См. также
Задачи
Практическое руководство. Включение или отключение предупреждений компилятора (Visual Basic)
Ссылки
Диалоговое окно "Помощник по исключениям"
Compiler Warnings That Are Off by Default