Share via


Configuratieopties voor codeanalyse

Codeanalyseregels hebben verschillende configuratieopties. Sommige van deze opties worden opgegeven als sleutel-waardeparen in een analyseconfiguratiebestand met behulp van de syntaxis <option key> = <option value>. Andere opties, waarmee codeanalyse als geheel wordt geconfigureerd, zijn beschikbaar als MSBuild-eigenschappen in uw projectbestand.

De meest voorkomende optie die u configureert, is de ernst van een regel. U kunt het ernstniveau voor elke regel configureren, inclusief regels voor codekwaliteit en codestijlregels. Als u bijvoorbeeld een regel als waarschuwing wilt inschakelen, voegt u het volgende sleutel-waardepaar toe aan een analyseconfiguratiebestand:

dotnet_diagnostic.<rule ID>.severity = warning

U kunt ook aanvullende opties configureren om het gedrag van regels aan te passen:

  • Codekwaliteitsregels hebben gedragsopties, zoals de methodenamen waarop een regel moet worden toegepast.
  • Regels voor codestijlen hebben opties voor stijlvoorkeuren, zoals waar nieuwe regels wenselijk zijn.
  • Analyseregels van derden kunnen hun eigen configuratieopties definiëren, met aangepaste sleutelnamen en waardenotaties.

Algemene opties

Deze opties zijn van toepassing op codeanalyse als geheel. Ze kunnen niet alleen worden toegepast op een specifieke regel.

Zie Eigenschappen van codeanalyse voor meer opties.

Analysemodus

Hoewel de .NET SDK alle regels voor codeanalyse bevat, zijn er slechts enkele standaard ingeschakeld. De analysemodus bepaalt welke, indien van toepassing, set regels moet worden ingeschakeld. U kunt een agressievere analysemodus kiezen waarbij de meeste of alle regels zijn ingeschakeld. U kunt ook een conservatievere analysemodus kiezen waarbij de meeste of alle regels zijn uitgeschakeld en u kunt zich vervolgens indien nodig aanmelden voor specifieke regels. Stel de analysemodus in door de <eigenschap AnalysisMode> MSBuild toe te voegen aan uw projectbestand.

<PropertyGroup>
  <AnalysisMode>Recommended</AnalysisMode>
</PropertyGroup>

Vanaf .NET 6 kunt u ook bulksgewijs een categorie regels inschakelen met behulp van de msBuild-eigenschap AnalysisMode<Category>>.<

Notitie

Als u codeanalyse configureert met behulp van MSBuild-eigenschappen zoals AnalysisMode, worden alle opties voor bulkconfiguratie die u in uw configuratiebestand instelt, genegeerd. Als u bijvoorbeeld alle regels of een categorie regels in een .editorconfig-bestand bulksgewijs hebt ingeschakeld, wordt die configuratie genegeerd.

Codeanalyse inschakelen

Codeanalyse is standaard ingeschakeld voor projecten die gericht zijn op .NET 5 en latere versies. Als u de .NET 5+ SDK hebt, maar uw project is gericht op een andere .NET-implementatie, kunt u codeanalyse handmatig inschakelen door de eigenschap EnableNETAnalyzers in uw projectbestand in te stellen op true.

<PropertyGroup>
  <EnableNETAnalyzers>true</EnableNETAnalyzers>
</PropertyGroup>

Gegenereerde code uitsluiten

Waarschuwingen voor .NET Code Analyzer zijn niet nuttig voor gegenereerde codebestanden, zoals door ontwerper gegenereerde bestanden, die gebruikers niet kunnen bewerken om schendingen op te lossen. In de meeste gevallen slaan codeanalyses gegenereerde codebestanden over en melden ze geen schendingen van deze bestanden.

Standaard worden bestanden met bepaalde bestandsextensies of automatisch gegenereerde bestandsheaders behandeld als gegenereerde codebestanden. Een bestandsnaam die eindigt op .designer.cs of .generated.cs wordt beschouwd als gegenereerde code. Met deze configuratieoptie kunt u extra naamgevingspatronen opgeven die moeten worden behandeld als gegenereerde code. U configureert extra bestanden en mappen door een generated_code = true | false vermelding toe te voegen aan uw configuratiebestand. Als u bijvoorbeeld alle bestanden wilt behandelen waarvan de naam eindigt op .MyGenerated.cs gegenereerde code, voegt u de volgende vermelding toe:

[*.MyGenerated.cs]
generated_code = true

Regelspecifieke opties

Regelspecifieke opties kunnen worden toegepast op één regel, een set regels of alle regels. De regelspecifieke opties zijn:

Ernstniveau

In de volgende tabel ziet u de verschillende ernstniveaus voor regels die u kunt configureren voor alle analyseregels, inclusief regels voor codekwaliteit en codestijl .

Waarde voor ernstconfiguratie Gedrag van buildtijd
error Schendingen worden weergegeven als buildfouten en veroorzaken dat builds mislukken.
warning Schendingen worden weergegeven als buildwaarschuwingen, maar veroorzaken geen fouten in builds (tenzij u een optie hebt ingesteld om waarschuwingen als fouten te behandelen).
suggestion Schendingen worden weergegeven als buildberichten en als suggesties in de Visual Studio IDE. (In Visual Studio worden suggesties weergegeven als drie grijze stippen onder de eerste twee tekens.)
silent Schendingen zijn niet zichtbaar voor de gebruiker.

Voor regels in codestijl genereren visual Studio-functies voor het genereren van code nog steeds code in deze stijl. Deze regels nemen ook deel aan opschonen en worden weergegeven in het menu Snelle acties en herstructureringen in Visual Studio.
none Regel wordt volledig onderdrukt.

Voor regels in codestijl genereren visual Studio-functies voor het genereren van code nog steeds code in deze stijl.
default De standaard ernst van de regel wordt gebruikt. De standaard ernstwaarden voor elke .NET-release worden vermeld in de roslyn-analyzers-opslagplaats. In die tabel komt 'Uitgeschakeld' overeen met none'Verborgen' komt overeen met silenten 'Info' komt overeen met suggestion.

Bereik

  • Eén regel

    Als u de ernst van de regel voor één regel wilt instellen, gebruikt u de volgende syntaxis.

    dotnet_diagnostic.<rule ID>.severity = <severity value>
    
  • Categorie regels

    Gebruik de volgende syntaxis om de standaardregel ernst voor een categorie regels in te stellen. Deze ernst-instelling is echter alleen van invloed op regels in die categorie die standaard zijn ingeschakeld.

    dotnet_analyzer_diagnostic.category-<rule category>.severity = <severity value>
    

    De verschillende categorieën worden vermeld en beschreven in regelcategorieën. Daarnaast vindt u de categorie voor een specifieke regel op de referentiepagina, bijvoorbeeld CA1000.

  • Alle regels

    Als u de standaardregel ernst voor alle analyseregels wilt instellen, gebruikt u de volgende syntaxis. Deze ernst-instelling is echter alleen van invloed op regels die standaard zijn ingeschakeld.

    dotnet_analyzer_diagnostic.severity = <severity value>
    

Belangrijk

Wanneer u het ernstniveau voor meerdere regels configureert met één vermelding, voor een categorie regels of voor alle regels, is de ernst alleen van toepassing op regels die standaard zijn ingeschakeld. En als u alle regels inschakelt met behulp van de MSBuild-eigenschappen <AnalysisMode> of <AnalysisLevel>, worden alle bulkopties dotnet_analyzer_diagnostic genegeerd. Daarom is het beter om een categorie regels in te schakelen door AnalysisMode-categorie in te stellen <op All.<>>

Notitie

Het voorvoegsel voor het instellen van ernst voor één regel, dotnet_diagnosticis iets anders dan het voorvoegsel voor het configureren van ernst via categorie of voor alle regels. dotnet_analyzer_diagnostic

Prioriteit

Als u meerdere ernstconfiguratievermeldingen hebt die kunnen worden toegepast op dezelfde regel-id, wordt prioriteit gekozen in de volgende volgorde:

  • Een vermelding voor een categorie heeft voorrang op een vermelding voor alle analyseregels.
  • Een vermelding voor een afzonderlijke regel op id heeft voorrang op een vermelding voor een categorie.

Bekijk het volgende voorbeeld, waarbij CA1822 de categorie 'Prestaties' heeft:

[*.cs]
dotnet_diagnostic.CA1822.severity = error
dotnet_analyzer_diagnostic.category-performance.severity = warning
dotnet_analyzer_diagnostic.severity = suggestion

In het voorgaande voorbeeld zijn alle drie de ernstvermeldingen van toepassing op CA1822. Als u echter de opgegeven prioriteitsregels gebruikt, wint de eerste regel-id-vermelding de volgende vermeldingen. In dit voorbeeld heeft CA1822 een effectieve ernst van error. Alle andere regels in de categorie 'Prestaties' hebben een ernst van warning.

Zie de sectie Prioriteit van het artikel Configuratiebestanden voor meer informatie over hoe prioriteit tussen bestanden wordt bepaald.