Opções do compilador C# para relatar erros e avisos

As opções a seguir controlam como o compilador relata erros e avisos. A nova sintaxe MSBuild é mostrada em Negrito. A sintaxe decsc.exe mais antiga é mostrada em code style.

  • WarningLevel / -warn: definir o nível de aviso.
  • AnalysisLevel: definir o nível de aviso opcional.
  • TreatWarningsAsErrors / -warnaserror: tratar todos os avisos como erros
  • WarningsAsErrors / -warnaserror: tratar um ou mais avisos como erros
  • WarningsNotAsErrors / -warnnotaserror: tratar um ou mais avisos não como erros
  • DisabledWarnings / -nowarn: defina uma lista de avisos desabilitados.
  • CodeAnalysisRuleSet / -ruleset: especifique um arquivo de conjunto de regras que desabilita diagnósticos específicos.
  • ErrorLog / -errorlog: especifique um arquivo para registrar todos os diagnósticos do compilador e do analisador.
  • ReportAnalyzer / -reportanalyzer: relatar informações adicionais do analisador, como o tempo de execução.

WarningLevel

A opção WarningLevel especifica o nível de aviso para exibição do compilador.

<WarningLevel>3</WarningLevel>

O valor do elemento é o nível de aviso que você deseja exibir para a compilação: números mais baixos mostram apenas avisos de severidade alta. Números mais altos mostram mais avisos. O valor deve ser zero ou um inteiro positivo:

Nível de aviso Significado
0 Desativa a emissão de todas as mensagens de aviso.
1 Exibe mensagens de aviso graves.
2 Exibe os avisos do nível 1 e mais alguns avisos menos graves, como avisos sobre membros de classe ocultos.
3 Exibe os avisos do nível 2 e mais alguns avisos menos graves, como avisos sobre expressões que sempre resultam em true ou false.
4 (o padrão) Exibe todos os avisos do nível 3 e também avisos informativos.

Aviso

A linha de comando do compilador aceita valores maiores que 4 para habilitar avisos de onda de aviso. No entanto, o SDK do .NET define o WarningLevel para corresponder ao AnalysisLevel em seu arquivo de projeto.

Para obter informações sobre um erro ou aviso, você pode pesquisar o código de erro no Índice de Ajuda. Para outras maneiras de se obter informações sobre um erro ou aviso, consulte Erros do compilador do C#. Use TreatWarningsAsErrors para tratar todos os avisos como erros. Use DisabledWarnings para desabilitar determinados avisos.

Nível de análise

Nível de análise Significado
5 Exibe todos os avisos opcionais de onda de aviso 5.
6 Exibe todos os avisos opcionais de onda de aviso 6.
7 Exibe todos os avisos opcionais de onda de aviso 7.
mais recente (padrão) Exibe todos os avisos informativos até e incluindo a versão atual.
preview Exibe todos os avisos informativos até e incluindo a versão prévia mais recente.
nenhum Desativa todos os avisos informativos.

Para obter mais informações sobre avisos opcionais, consulte Ondas de aviso.

Para obter informações sobre um erro ou aviso, você pode procurar o código de erro no Índice da Ajuda. Para outras maneiras de se obter informações sobre um erro ou aviso, consulte Erros do compilador do C#. Use TreatWarningsAsErrors para tratar todos os avisos como erros. Use DisabledWarnings para desabilitar determinados avisos.

TreatWarningsAsErrors

A opção TreatWarningsAsErrors trata todos os avisos como erros. Você também pode usar o TreatWarningsAsErrors para definir apenas alguns avisos como erros. Se você ativar TreatWarningsAsErrors, poderá usar WarningsNotAsErrors para listar avisos que não devem ser tratados como erros.

<TreatWarningsAsErrors>true</TreatWarningsAsErrors>

Todas as mensagens de aviso são relatadas como erros. O processo de build é interrompido (nenhum arquivo de saída é criado). Por padrão, TreatWarningsAsErrors não está em vigor, o que significa que os avisos não impedem a geração de um arquivo de saída. Opcionalmente, se você deseja que apenas avisos específicos sejam tratados como erros, você pode especificar uma lista separada por vírgulas de números de aviso para serem tratados como erros. O conjunto de todos os avisos de nulidade pode ser especificado com a abreviação Anulável . Use WarningLevel para especificar o nível de avisos que você deseja que o compilador exiba. Use DisabledWarnings para desabilitar determinados avisos.

Importante

Há duas diferenças sutis entre usar o <TreatWarningsAsErrors> elemento no arquivo csproj e usar o warnaserror comutador de linha de comando MSBuild. TreatWarningsAsErrors afeta apenas o compilador C#, não outras tarefas MSBuild no arquivo csproj. A warnaserror opção de linha de comando afeta todas as tarefas. Em segundo lugar, o compilador não produz nenhuma saída em nenhum aviso quando TreatWarningsAsErrors é usado. O compilador produz a saída quando a opção warnaserror de linha de comando é usada.

WarningsAsErrors e WarningsNotAsErrors

As opções WarningsAsErrors e WarningsNotAsErrors substituem a opção TreatWarningsAsErrors para uma lista de avisos. Essa opção pode ser usada com todos os avisos de CS . O prefixo "CS" é opcional. Você pode usar o número ou "CS" seguido pelo nível de erro ou aviso. Para outros elementos que afetam avisos, consulte as propriedades de MSBuild Comuns.

Habilite os avisos 0219 e 0168 como erros:

<WarningsAsErrors>0219,CS0168</WarningsAsErrors>

Desabilite os mesmos avisos que os erros:

<WarningsNotAsErrors>0219,CS0168</WarningsNotAsErrors>

Você usa WarningsAsErrors para configurar um conjunto de avisos como erros. Use WarningsNotAsErrors para configurar um conjunto de avisos que não devem ser erros quando você definir todos os avisos como erros.

DisabledWarnings

A opção DisabledWarnings permite suprimir que o compilador exiba um ou mais avisos. Separe vários números de aviso com uma vírgula.

<DisabledWarnings>number1, number2</DisabledWarnings>

number1, number2 números de aviso que você deseja que o compilador suprima. Especifique a parte numérica do identificador de aviso. Por exemplo, se você quiser suprimir CS0028, poderá especificar <DisabledWarnings>28</DisabledWarnings>. O compilador ignora silenciosamente os números de aviso passados para DisabledWarnings que eram válidos em versões anteriores, mas que foram removidos. Por exemplo, CS0679 era válido no compilador no Visual Studio .NET 2002, mas foi removido posteriormente.

Os seguintes avisos não podem ser suprimidos pela opção DisabledWarnings :

  • Aviso do compilador (nível 1) CS2002
  • Aviso do compilador (nível 1) CS2023
  • Aviso do compilador (nível 1) CS2029

CodeAnalysisRuleSet

Especifique um arquivo de conjunto de regras que configure diagnósticos específicos.

<CodeAnalysisRuleSet>MyConfiguration.ruleset</CodeAnalysisRuleSet>

Onde MyConfiguration.ruleset está o caminho para o arquivo de conjunto de regras. Para obter mais informações sobre como usar conjuntos de regras, consulte o artigo na documentação Visual Studio sobre conjuntos de regras.

ErrorLog

Especifique um arquivo para registrar todos os diagnósticos do compilador e do analisador.

<ErrorLog>compiler-diagnostics.sarif</ErrorLog>

A opção ErrorLog faz com que o compilador gere um log SARIF (Formato de Intercâmbio de Resultados de Análise Estática). Os logs SARIF normalmente são lidos por ferramentas que analisam os resultados do compilador e do diagnóstico do analisador.

Você pode especificar o formato SARIF usando o version argumento para o ErrorLog elemento:

<ErrorLog>logVersion21.json,version=2.1</ErrorLog>

O separador pode ser uma vírgula (,) ou um ponto-e-vírgula (;). Os valores válidos são para a versão: "1", "2" e "2.1". O padrão é "1". "2" e "2.1" significam sarif versão 2.1.0.

ReportAnalyzer

Reporte informações adicionais do analisador, como o tempo de execução.

<ReportAnalyzer>true</ReportAnalyzer>

A opção ReportAnalyzer faz com que o compilador emita informações extras de log MSBuild que detalham as características de desempenho dos analisadores no build. Normalmente, é usado por autores analisadores como parte da validação do analisador.

Importante

As informações de log extra geradas por esse sinalizador só são geradas quando a opção de -verbosity:detailed linha de comando é usada. Confira o artigo sobre swtiches na documentação MSBuild para obter mais informações.