Настройка предупреждений в Visual Basic

Обновлен: Ноябрь 2007

В компиляторе 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 не должны выводиться.

Типы предупреждений

Ниже приведен список предупреждений, которые иногда имеет смысл рассматривать как ошибки.

Предупреждение о неявном преобразовании

Генерируется для случаев неявного преобразования. Сюда не входят неявные преобразования из встроенных числовых типов в строковые типы при использовании оператора &. По умолчанию выключено для новых проектов.

Идентификатор: 42016

Предупреждение о вызове метода позднего связывания и разрешении перегрузки

Генерируется для случаев позднего связывания. По умолчанию выключено для новых проектов.

Идентификатор: 42017

Предупреждения об операндах типа Object

Генерируются при обнаружении операндов типа Object, которые могут привести к ошибке, если установлен параметр компилятора Option Strict On. По умолчанию включено для новых проектов.

Идентификаторы: 42018 и 42019

Предупреждения о необходимости использовать предложение "As" в объявлениях

Генерируются, когда в объявлении переменной, функции или свойства отсутствует предложение As, что приводит к ошибке, если установлен параметр компилятора Option Strict On. Предполагается, что переменные, тип которых не задан явно, по умолчанию имеют тип Object. По умолчанию включены для новых проектов.

Идентификаторы: 42020 (объявление переменной), 42021 (объявление функции) и 42022 (объявление свойства).

Предупреждения о возможных исключениях при пустых ссылках

Генерируется, когда переменная используется до того, как ей было присвоено значение. По умолчанию включены для новых проектов.

Идентификаторы: 42104, 42030

Предупреждение о неиспользуемой локальной переменной

Генерируется, когда локальная переменная объявлена, но на нее нет ссылок. По умолчанию включено.

Идентификатор: 42024

Предупреждение о доступе к общему члену через экземпляр переменной

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

Идентификатор: 42025

Предупреждения о рекурсивном операторе или доступе к свойству

Генерируются, когда в теле подпрограммы используется тот же оператор или свойство, в котором оно определено. По умолчанию включены для новых проектов.

Идентификаторы: 42004 (оператор), 42026 (свойство)

Предупреждение о функции или операторе без возвращаемого значения

Генерируется, когда для функции или оператора не задано возвращаемое значение. Сюда входит пропуск оператора Set с неявной локальной переменной, имеющей то же имя, что и функция. По умолчанию включено для новых проектов.

Идентификаторы: 42105 (функция), 42016 (оператор)

Предупреждение об использовании в модуле модификаторов перегрузки

Генерируется, когда в модуле (Module) используется Overloads. По умолчанию включено для новых проектов.

Идентификатор: 42028

Предупреждения о повторяющихся или перекрывающихся блоках Catch

Генерируются, когда блок Catch никогда не достигается из-за его отношений с другими определенными блоками Catch. По умолчанию включены для новых проектов.

Идентификаторы: 42029, 42031

См. также

Задачи

Практическое руководство. Включение или отключение предупреждений компилятора

Основные понятия

Типы ошибок

Ссылки

Диалоговое окно "Помощник по исключениям"

/nowarn

/warnaserror (Visual Basic)

Compiler Warnings That Are Off by Default

Другие ресурсы

Задачи обработки исключений