Partilhar via


Configurando avisos no Visual Basic

O compilador do Visual Basic inclui um conjunto de avisos sobre código que pode causar erros em tempo de execução. Você pode usar essas informações para escrever códigos mais limpos, rápidos e melhores com menos bugs. Por exemplo, o compilador produzirá um aviso quando o usuário tentar invocar um membro de uma variável de objeto não atribuída, retornar de uma função sem definir o valor de retorno ou executar um bloco de Try com erros na lógica para capturar exceções.

Às vezes, o compilador fornece lógica extra em nome do usuário para que o usuário possa se concentrar na tarefa em questão, em vez de antecipar possíveis erros. Em versões anteriores do Visual Basic, Option Strict foi usado para limitar a lógica adicional que o compilador do Visual Basic fornece. A configuração de avisos permite limitar essa lógica de forma mais granular, no nível dos avisos individuais.

Você pode querer personalizar seu projeto e desativar alguns avisos não pertinentes ao seu aplicativo enquanto transforma outros avisos em erros. Esta página explica como ativar e desativar avisos individuais.

Ligar e desligar avisos

Há várias maneiras diferentes de configurar avisos: você pode configurá-los usando o Project Designer, você pode usar o /warnaserror e /nowarn opções do compilador, ou você pode editar o arquivo de projeto (arquivovbproj) e usar a propriedade NoWarn MSBuild. Para usar a propriedade MSBuild, consulte Suprimir avisos específicos para um projeto Visual Basic inteiro.

A experiência do Project Designer difere dependendo se você está trabalhando com um projeto .NET Framework ou um projeto .NET Core (ou .NET 5 ou posterior).

Em projetos .NET Core (ou .NET 5 e posteriores), a seção Compile do Project Designer contém uma configuração chamada de gravidade de aviso que você pode usar para desabilitar todos os avisos, promover todos os avisos para erros ou você pode optar por controlar cada categoria de aviso separadamente (o padrão). As configurações de categoria de aviso aparecem na mesma área do Project Designer.

Em projetos do .NET Framework, na guia Compilar do Project Designer , marque a caixa de seleção Desabilitar todos os avisos para desabilitar todos os avisos; selecione a Tratar todos os avisos como erros para tratar todos os avisos como erros. Alguns avisos individuais podem ser definidos como erro ou aviso, de acordo com a necessidade na tabela exibida.

A guia Compilar da página do Project Designer permite ativar e desativar avisos. Marque a caixa de seleção Desativar todos os avisos para desativar todos os avisos; selecione a Tratar todos os avisos como erros para tratar todos os avisos como erros. Alguns avisos individuais podem ser alternados como erro ou aviso, conforme desejado na tabela exibida.

Quando a Opção Estrita está definida como Desativado, os alertas relacionados à Opção Estrita não podem ser tratados independentemente uns dos outros. Quando opção Strict está definida como On, os avisos associados são tratados como erros, independentemente do seu estado. Quando Option Strict é definido como Custom especificando /optionstrict:custom no compilador de linha de comando, avisos de Option Strict podem ser ativados ou desativados independentemente.

A opção de linha de comando /warnaserror do compilador também pode ser usada para especificar se os avisos são tratados como erros. Você pode adicionar uma lista delimitada por vírgulas a essa opção para especificar quais avisos devem ser tratados como erros ou avisos usando + ou -. A tabela a seguir detalha as opções possíveis.

Opção de linha de comando Especifica
/warnaserror+ ou /warnaserror Tratar todos os avisos como erros
/warnsaserror- Não trate os avisos como erros. Essa configuração é o padrão.
/warnaserror+:<warning list > Trate avisos específicos como erros, listados pelo número de identificação do erro em uma lista delimitada por vírgulas r.
/warnaserror-:<warning list> Não trate avisos específicos como erros, listados pelo número de identificação do erro em uma lista delimitada por vírgula.
/nowarn Não reporte avisos.
/nowarn:<warning list> Não relate avisos especificados, listados pelo número de ID do erro em uma lista delimitada por vírgula.

A lista de avisos contém os números de identificação de erro dos avisos que devem ser tratados como erros, que podem ser usados com as opções de linha de comando para ativar ou desativar avisos específicos. Se a lista de avisos contiver um número inválido, um erro será relatado.

Exemplos

Esta tabela de exemplos de argumentos de linha de comando descreve o que cada argumento faz.

Argumento Descrição
vbc /warnaserror Especifica que todos os avisos devem ser tratados como erros.
vbc /warnaserror:42024 Especifica que o aviso 42024 deve ser tratado como um erro.
vbc /warnaserror:42024,42025 Especifica que os avisos 42024 e 42025 devem ser tratados como erros.
vbc /nowarn Especifica que não devem ser relatados avisos.
vbc /nowarn:42024 Especifica que o aviso 42024 não deve ser reportado.
vbc /nowarn:42024,42025 Especifica que os avisos 42024 e 42025 não devem ser relatados.

Tipos de advertências

A seguir está uma lista de avisos que você pode querer tratar como erros.

Aviso de conversão implícito

Gerado para instâncias de conversão implícita. Eles não incluem conversões implícitas de um tipo numérico intrínseco para uma cadeia de caracteres ao usar o operador &. O padrão para novos projetos está desativado.

Identificação: 42016

Invocação de método de vinculação tardia e aviso sobre resolução de sobrecarga

Gerado para instâncias de vinculação tardia. O padrão para novos projetos está desativado.

Identificação: 42017

Operandos do tipo 'Objeto' avisos

Gerado quando ocorrem operandos do tipo Object que criariam um erro com opção Strict On. O padrão para projetos novos é ativado.

ID: 42018 e 42019

As declarações requerem avisos referentes à palavra-chave «As»

Gerado quando uma variável, função ou declaração de propriedade sem uma cláusula As teria criado um erro com opção Strict On. As variáveis que não têm um tipo atribuído a elas são assumidas como tipo Object. O padrão para novos projetos está ativado.

ID: 42020 (declaração de variável), 42021 (declaração de função) e 42022 (declaração de propriedade).

Possíveis avisos de exceção de referência nula

Gerado quando uma variável é usada antes de lhe ter sido atribuído um valor. O padrão para novos projetos está ativado.

Identificação: 42104, 42030

Aviso de variável local não utilizada

Gerado quando uma variável local é declarada, mas nunca referida. O padrão está ativado.

Identificação: 42024

Acesso de membro compartilhado por meio de aviso de variável de instância

Gerado quando o acesso a um membro compartilhado por meio de uma instância pode ter efeitos colaterais, ou quando o acesso a um membro compartilhado através de uma variável de instância não está no lado direito de uma expressão ou está a ser passado como um parâmetro. O padrão para novos projetos está ativado.

Identificação: 42025

Avisos de acesso recursivo ao operador ou à propriedade

Gerado quando o corpo de uma rotina usa o mesmo operador ou propriedade em que está definido. O padrão está ativado para novos projetos.

ID: 42004 (operador), 42026 (propriedade)

Função ou operador sem aviso de valor de retorno

Gerado quando a função ou operador não tem um valor de retorno especificado. Isso inclui omitir um Set para a variável local implícita com o mesmo nome da função. O padrão para novos projetos está ativado.

ID: 42105 (função), 42016 (operador)

Modificador de sobrecargas usado em um aviso de módulo

Gerado quando Overloads é usado em um Module. O padrão para novos projetos está ativado.

Identificação: 42028

Advertências de blocos de captura duplicados ou sobrepostos

Gerado quando um bloco Catch nunca é atingido devido à sua relação com outros blocos Catch que foram definidos. O padrão para novos projetos está ativado.

ID: 42029, 42031