Delen via


C#-compileropties voor het rapporteren van fouten en waarschuwingen

De volgende opties bepalen hoe de compiler fouten en waarschuwingen rapporteert. De nieuwe MSBuild-syntaxis wordt vet weergegeven. De oudere csc.exe syntaxis wordt weergegeven in code style.

  • WarningLevel / -warn: stel het waarschuwingsniveau in.
  • AnalysisLevel: optioneel waarschuwingsniveau instellen.
  • TreatWarningsAsErrors / -warnaserror: Alle waarschuwingen behandelen als fouten
  • WarningsAsErrors / -warnaserror: Een of meer waarschuwingen behandelen als fouten
  • WarningsNotAsErrors / -warnnotaserror: Een of meer waarschuwingen behandelen niet als fouten
  • NoWarn / -nowarn: Een lijst met uitgeschakelde waarschuwingen instellen.
  • CodeAnalysisRuleSet / -ruleset: Geef een regelsetbestand op waarmee specifieke diagnostische gegevens worden uitgeschakeld.
  • ErrorLog / -errorlog: Geef een bestand op voor het vastleggen van alle compiler- en analysediagnose.
  • ReportAnalyzer / -reportanalyzer: aanvullende analysegegevens rapporteren, zoals uitvoeringstijd.

Notitie

Raadpleeg compileropties voor meer informatie over het configureren van deze opties voor uw project.

WarningLevel

De optie WarningLevel geeft het waarschuwingsniveau aan dat de compiler moet weergeven.

<WarningLevel>3</WarningLevel>

De elementwaarde is het waarschuwingsniveau dat u wilt weergeven voor de compilatie: lagere getallen geven alleen waarschuwingen met een hoge ernst weer. Hogere getallen geven meer waarschuwingen weer. De waarde moet nul of een positief geheel getal zijn:

Waarschuwingsniveau Betekenis
0 Hiermee schakelt u de emissie van alle waarschuwingsberichten uit.
1 Geeft ernstige waarschuwingsberichten weer.
2 Geeft waarschuwingen op niveau 1 weer plus bepaalde, minder ernstige waarschuwingen, zoals waarschuwingen over het verbergen van klasseleden.
3 Geeft waarschuwingen op niveau 2 weer plus bepaalde, minder ernstige waarschuwingen, zoals waarschuwingen over expressies die altijd evalueren true of false.
4 (standaard) Geeft alle waarschuwingen op niveau 3 plus informatieve waarschuwingen weer.

Waarschuwing

De opdrachtregel van de compiler accepteert waarden die groter zijn dan 4 om waarschuwingsgolfwaarschuwingen in te schakelen. De .NET SDK stelt echter de WarningLevel in op de AnalysisLevel in uw projectbestand.

Als u informatie wilt over een fout of waarschuwing, kunt u de foutcode opzoeken in de Help-index. Zie C#-compilerfouten voor andere manieren om informatie te krijgen over een fout of waarschuwing. Gebruik TreatWarningsAsErrors om alle waarschuwingen als fouten te behandelen. Gebruik DisabledWarnings om bepaalde waarschuwingen uit te schakelen.

Analyseniveau

Met de optie AnalysisLevel worden extra waarschuwingsgolven en analyseanalyses opgegeven die moeten worden ingeschakeld. Waarschuwingsgolfwaarschuwingen zijn aanvullende controles die uw code verbeteren of ervoor zorgen dat deze compatibel is met toekomstige releases. Analyzers bieden lintachtige mogelijkheden om uw code te verbeteren.

<AnalysisLevel>preview</AnalysisLevel>
Analyseniveau Betekenis
5 Geeft alle optionele waarschuwingsgolf 5 waarschuwingen weer.
6 Geeft alle optionele waarschuwingsgolf 6 waarschuwingen weer.
7 Geeft alle optionele waarschuwingsgolf 7 waarschuwingen weer.
nieuwste (standaard) Geeft alle informatieve waarschuwingen weer tot en met de huidige release.
preview Geeft alle informatieve waarschuwingen weer tot en met de nieuwste preview-versie.
Geen Hiermee worden alle informatieve waarschuwingen uitgeschakeld.

Zie Waarschuwingsgolven voor meer informatie over optionele waarschuwingen.

Als u informatie wilt over een fout of waarschuwing, kunt u de foutcode opzoeken in de Help-index. Zie C#-compilerfouten voor andere manieren om informatie te krijgen over een fout of waarschuwing. Gebruik TreatWarningsAsErrors om alle waarschuwingen als fouten te behandelen. Gebruik NoWarn om bepaalde waarschuwingen uit te schakelen.

TreatWarningsAsErrors

De optie TreatWarningsAsErrors behandelt alle waarschuwingen als fouten. U kunt ook de WarningsAsErrors gebruiken om slechts enkele waarschuwingen in te stellen als fouten. Als u TreatWarningsAsErrors inschakelt, kunt u WarningsNotAsErrors gebruiken om waarschuwingen weer te geven die niet als fouten moeten worden behandeld.

<TreatWarningsAsErrors>true</TreatWarningsAsErrors>

Alle waarschuwingsberichten worden in plaats daarvan gerapporteerd als fouten. Het buildproces stopt (er worden geen uitvoerbestanden gemaakt). TreatWarningsAsErrors is standaard niet van kracht, wat betekent dat waarschuwingen het genereren van een uitvoerbestand niet voorkomen. Als u wilt dat slechts enkele specifieke waarschuwingen worden behandeld als fouten, kunt u eventueel een door komma's gescheiden lijst met waarschuwingsnummers opgeven om als fouten te behandelen. De set met alle waarschuwingen voor null-baarheid kan worden opgegeven met de afkorting Nullable . Gebruik WarningLevel om het waarschuwingsniveau op te geven dat de compiler moet weergeven. Gebruik NoWarn om bepaalde waarschuwingen uit te schakelen.

Belangrijk

Er zijn twee subtiele verschillen tussen het gebruik van het <TreatWarningsAsErrors> element in uw csproj-bestand en het gebruik van de warnaserror MSBuild-opdrachtregelswitch. TreatWarningsAsErrors heeft alleen invloed op de C#-compiler, niet op andere MSBuild-taken in uw csproj-bestand . De warnaserror opdrachtregelswitch heeft invloed op alle taken. Ten tweede produceert de compiler geen uitvoer op waarschuwingen wanneer TreatWarningsAsErrors wordt gebruikt. De compiler produceert uitvoer wanneer de warnaserror opdrachtregelswitch wordt gebruikt.

WarningsAsErrors en WarningsNotAsErrors

De opties WarningsAsErrors en WarningsNotAsErrors overschrijven de optie TreatWarningsAsErrors voor een lijst met waarschuwingen. Deze optie kan worden gebruikt met alle CS-waarschuwingen . Het voorvoegsel CS is optioneel. U kunt het getal of CS gebruiken, gevolgd door de fout of het waarschuwingsnummer. Zie de common MSBuild-eigenschappen voor andere elementen die van invloed zijn op waarschuwingen. Naast de lijst met waarschuwings-id's kunt u ook de tekenreeks nullableopgeven, waarmee alle waarschuwingen worden behandeld die betrekking hebben op null-baarheid als fouten.

Schakel waarschuwingen 0219, 0168 en alle null-waarschuwingen in als fouten:

<WarningsAsErrors>0219,CS0168,nullable</WarningsAsErrors>

Schakel dezelfde waarschuwingen uit als fouten:

<WarningsNotAsErrors>0219,CS0168,nullable</WarningsNotAsErrors>

U gebruikt WarningsAsErrors om een set waarschuwingen als fouten te configureren. Gebruik WarningsNotAsErrors om een set waarschuwingen te configureren die geen fouten mogen zijn wanneer u alle waarschuwingen als fouten hebt ingesteld.

NoWarn

Met de optie NoWarn kunt u onderdrukken dat de compiler een of meer waarschuwingen weergeeft, waarbij warningnumber1waarschuwingsnummers warningnumber2 zijn die u wilt onderdrukken door de compiler. Scheid meerdere waarschuwingsnummers met een komma. U kunt opgeven nullable dat alle waarschuwingen met betrekking tot null-baarheid worden uitgeschakeld.

<NoWarn>warningnumber1,warningnumber2</NoWarn>

U moet alleen het numerieke deel van de waarschuwings-id opgeven. Als u bijvoorbeeld CS0028 wilt onderdrukken, kunt u opgeven<NoWarn>28</NoWarn>. De compiler negeert op de achtergrond waarschuwingsnummers die zijn doorgegeven aan NoWarn die geldig waren in eerdere versies, maar die zijn verwijderd. CS0679 was bijvoorbeeld geldig in de compiler in Visual Studio .NET 2002, maar is later verwijderd.

De volgende waarschuwingen kunnen niet worden onderdrukt door de optie NoWarn :

  • Compilerwaarschuwing (niveau 1) CS2002
  • Compilerwaarschuwing (niveau 1) CS2023
  • Compilerwaarschuwing (niveau 1) CS2029

Houd er rekening mee dat waarschuwingen bedoeld zijn om een indicatie te zijn van een mogelijk probleem met uw code, dus u moet de risico's begrijpen van het uitschakelen van een bepaalde waarschuwing. Gebruik NoWarn alleen als u zeker weet dat een waarschuwing een fout-positief is en geen runtimefout kan zijn.

U kunt een meer gerichte benadering gebruiken om waarschuwingen uit te schakelen:

  • De meeste compilers bieden manieren om waarschuwingen alleen voor bepaalde coderegels uit te schakelen, zodat u de waarschuwingen nog steeds kunt bekijken als ze ergens anders in hetzelfde project voorkomen. Als u een waarschuwing alleen in een specifiek deel van de code in C# wilt onderdrukken, gebruikt u #pragma waarschuwing.

  • Als u beknoptere en gerichtere uitvoer in uw buildlogboek wilt zien, kunt u de uitgebreidheid van het buildlogboek wijzigen. Zie Procedure: Build-logboekbestanden weergeven, opslaan en configureren voor meer informatie.

Als u waarschuwingsnummers wilt toevoegen aan een eerder ingestelde waarde voor NoWarn zonder deze te overschrijven, raadpleegt u $(NoWarn) deze in het volgende voorbeeld:

   <NoWarn>$(NoWarn);newwarningnumber3;newwarningnumber4</NoWarn>

CodeAnalysisRuleSet

Geef een regelsetbestand op waarmee specifieke diagnostische gegevens worden geconfigureerd.

<CodeAnalysisRuleSet>MyConfiguration.ruleset</CodeAnalysisRuleSet>

Waar MyConfiguration.ruleset is het pad naar het regelsetbestand. Zie het artikel in de Visual Studio-documentatie over regelsets voor meer informatie over het gebruik van regelsets.

ErrorLog

Geef een bestand op voor het vastleggen van alle compiler- en analysediagnose.

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

De optie ErrorLog zorgt ervoor dat de compiler een SARIF-logboek (Static Analysis Results Format) uitvoert. SARIF-logboeken worden doorgaans gelezen door hulpprogramma's waarmee de resultaten van de diagnose van compiler en analyse worden geanalyseerd.

U kunt de SARIF-indeling opgeven met behulp van het version argument voor het ErrorLog element:

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

Het scheidingsteken kan een komma (,) of een puntkomma () zijn.; Geldige waarden voor versie zijn: '1', '2' en '2.1'. De standaardwaarde is '1'. "2" en "2.1" beide gemiddelde SARIF versie 2.1.0.

ReportAnalyzer

Rapport aanvullende analysegegevens, zoals uitvoeringstijd.

<ReportAnalyzer>true</ReportAnalyzer>

De optie ReportAnalyzer zorgt ervoor dat de compiler extra MSBuild-logboekinformatie verzendt die de prestatiekenmerken van analysen in de build aangeeft. Het wordt meestal gebruikt door analyseauteurs als onderdeel van het valideren van de analyse.

Belangrijk

De extra logboekgegevens die door deze vlag worden gegenereerd, worden alleen gegenereerd wanneer de -verbosity:detailed opdrachtregeloptie wordt gebruikt. Zie het artikel over switches in de MSBuild-documentatie voor meer informatie.