Configurando avisos no Visual Basic
O compilador do Visual Basic inclui um conjunto de avisos sobre o código que podem causar erros em tempo de execução. Você pode usar essas informações para escrever código mais limpo, mais rápido e melhor 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 retornado ou executar um bloco 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 prever possíveis erros. Nas versões anteriores do Visual Basic, o Option Strict foi usado para limitar a lógica adicional fornecida pelo compilador do Visual Basic. Configurar avisos permite limitar essa lógica de forma mais granular, no nível dos avisos individuais.
Talvez você queira personalizar seu projeto e desativar alguns avisos não pertinentes ao seu aplicativo ao transformar outros avisos em erros. Esta página explica como ativar e desativar avisos individuais.
Desativar e ativar avisos
Há diversas maneiras de configurar avisos: você pode configurá-los usando o Project Designer, pode usar as opções do compilador /warnaserror e /nowarn, ou editar o arquivo de projeto (vbproj
arquivo) e usar a propriedade NoWarn
MSBuild. Para usar a propriedade MSBuild, confira Suprimir avisos específicos para um projeto do Visual Basic inteiro.
A experiência do Designer de Projeto difere dependendo se você está trabalhando com um projeto do .NET Framework ou um projeto do .NET Core (ou .NET 5 ou posterior).
Em projetos do .NET Core (ou .NET 5 e posterior), a seção Compilar do Designer de Projeto contém uma configuração chamada Gravidade do aviso que você pode usar para desabilitar todos os avisos, promover todos os avisos a erros ou escolher controlar cada categoria de aviso separadamente (o padrão). As configurações de categoria de aviso aparecem na mesma área do Designer de Projeto.
Em projetos do .NET Framework, na guia Compilar do Designer de Projeto, marque a caixa de seleção Desabilitar Todos os Avisos para desabilitar todos os avisos; marque a caixa Tratar Todos os Avisos como Erros para tratar todos os avisos como erros. Alguns avisos individuais podem ser ativados/desativados como erro ou aviso, conforme desejado, na tabela exibida.
A guia Compilar da página do Designer de Projeto permite ativar e desativar avisos. Marque a caixa de seleção Desabilitar Todos os Avisos para desabilitar todos os avisos; selecione o Tratar Todos os Avisos como Erros para tratar todos os avisos como erros. Alguns avisos individuais podem ser ativados/desativados como erro ou aviso, conforme desejado, na tabela exibida.
Quando Opção Estrita é definida como Desativado, os avisos relacionados à Opção Estrita não podem ser tratados independentemente uns dos outros. Quando Opção Estrita é definida como Ativado, os avisos associados são tratados como erros, independentemente de seu status. Quando Option Strict está definida como Personalizado especificando /optionstrict:custom
no compilador de linha de comando, os avisos de Option Strict podem ser ativados ou desativados de forma independente.
A opção /warnaserror linha de comando 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írgula 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 por seu número de ID de erro em uma lista delimitada por vírgula r. |
/warnaserror-:<warning list> |
Não trate avisos específicos como erros, listados pelo número da ID de erro em uma lista delimitada por vírgula. |
/nowarn |
Não relatar avisos. |
/nowarn:<warning list> |
Não relatar avisos especificados, listados pelo número de ID de erro em uma lista delimitada por vírgulas. |
A lista de avisos contém os números de ID 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 nenhum aviso deve ser relatado. |
vbc /nowarn:42024 |
Especifica que o aviso 42024 não deve ser relatado. |
vbc /nowarn:42024,42025 |
Especifica que os avisos 42024 e 42025 não devem ser relatados. |
Tipos de avisos
Veja a seguir uma lista de avisos que talvez você queira tratar como erros.
Aviso de conversão implícita
Gerado para instâncias de conversão implícita. Elas não incluem conversões implícitas de um tipo numérico intrínseco em uma cadeia de caracteres ao usar o operador &
. O padrão para novos projetos é desativado.
ID: 42016
Aviso de invocação de método de associação tardia e resolução de sobrecarga
Gerado para instâncias de associação tardia. O padrão para novos projetos é desativado.
ID: 42017
Avisos de operandos do tipo 'Objeto'
Gerado quando ocorrem operandos do tipo Object
que criariam um erro com Option Strict On. O padrão para novos projetos é ativado.
ID: 42018 e 42019
Avisos de declarações que exigem cláusula 'As'
Gerado quando uma declaração de variável, função ou propriedade sem uma cláusula As
criaria um erro com Option Strict On. As variáveis que não têm um tipo atribuído a elas são consideradas tipo Object
. O padrão para novos projetos é ativado.
ID: 42020 (declaração de variável), 42021 (declaração de função) e 42022 (declaração de propriedade).
Avisos de possível exceção de referência nula
Gerado quando uma variável é usada antes de receber um valor. O padrão para novos projetos é ativado.
ID: 42104, 42030
Aviso de variável local não utilizado
Gerado quando uma variável local é declarada, mas nunca referenciada. O padrão é ativado.
ID: 42024
Aviso de acesso de membro compartilhado por meio 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 por meio de uma variável de instância não é o lado direito de uma expressão ou está sendo passado como um parâmetro. O padrão para novos projetos é ativado.
ID: 42025
Avisos de acesso recursivo a operador ou propriedade
Gerado quando o corpo de uma rotina usa o mesmo operador ou propriedade em que ele é definido. O padrão para novos projetos é ativado.
ID: 42004 (operador), 42026 (propriedade)
Aviso de função ou operador sem valor retornado
Gerado quando a função ou o operador não tem um valor retornado especificado. Isso inclui omitir uma Set
da variável local implícita com o mesmo nome da função. O padrão para novos projetos é ativado.
ID: 42105 (função), 42016 (operador)
Aviso de modificador Sobrecargas usado em um módulo
Gerado quando Overloads
é usado em um Module
. O padrão para novos projetos é ativado.
ID: 42028
Avisos de blocos de captura duplicados ou sobrepostos
Gerado quando um bloco de Catch
nunca é atingido devido à sua relação com outros blocos de Catch
que foram definidos. O padrão para novos projetos é ativado.
ID: 42029, 42031