Codeanalysewaarschuwingen onderdrukken
In dit artikel worden de verschillende manieren beschreven waarop u waarschuwingen van codeanalyse kunt onderdrukken wanneer u uw .NET-app bouwt. U kunt regels voor codekwaliteit, regels voor codestijl en analyseregels van derden onderdrukken met behulp van de informatie die hier wordt gegeven.
Tip
Als u Visual Studio als uw ontwikkelomgeving gebruikt, biedt het gloeilampmenu opties waarmee de code wordt gegenereerd om waarschuwingen voor u te onderdrukken. Zie Schendingen onderdrukken voor meer informatie.
De regel uitschakelen
U kunt een regel uitschakelen die een waarschuwing veroorzaakt door de ernst ervan in te none
stellen in een EditorConfig- of AnalyzerConfig-configuratiebestand. Met deze actie wordt de regel voor uw hele bestand of project uitgeschakeld, afhankelijk van het bereik van het configuratiebestand dat u gebruikt.
[*.{cs,vb}]
dotnet_diagnostic.<rule-ID>.severity = none
Zie Ernst van regel configureren voor meer informatie over de ernst van regels.
Een preprocessorrichtlijn gebruiken
Gebruik een #pragma waarschuwingsrichtlijn (C#) of Uitschakelen (Visual Basic) om de waarschuwing voor slechts een specifieke coderegel te onderdrukken.
try { ... }
catch (Exception e)
{
#pragma warning disable CA2200 // Rethrow to preserve stack details
throw e;
#pragma warning restore CA2200 // Rethrow to preserve stack details
}
Try
...
Catch e As Exception
#Disable Warning CA2200 ' Rethrow to preserve stack details
Throw e
#Enable Warning CA2200 ' Rethrow to preserve stack details
End Try
De SuppressMessageAttribute gebruiken
U kunt een SuppressMessageAttribute waarschuwing onderdrukken in het bronbestand of in een globaal onderdrukkingsbestand voor het project (GlobalSuppressions.cs of GlobalSuppressions.vb). Dit kenmerk biedt een manier om een waarschuwing te onderdrukken in alleen bepaalde delen van uw project of bestand.
De twee vereiste positionele parameters voor het SuppressMessageAttribute kenmerk zijn de categorie van de regel en de regel-id. Het volgende codefragment wordt doorgegeven "Usage"
en "CA2200:Rethrow to preserve stack details"
voor deze parameters.
[System.Diagnostics.CodeAnalysis.SuppressMessage("Usage", "CA2200:Rethrow to preserve stack details", Justification = "Not production code.")]
private static void IgnorableCharacters()
{
try
{
...
}
catch (Exception e)
{
throw e;
}
}
Als u het kenmerk toevoegt aan het algemene onderdrukkingsbestand, kunt u bijvoorbeeld de onderdrukking toepassen op het gewenste niveau"member"
. U geeft de API op waar de waarschuwing moet worden onderdrukt met behulp van de Target eigenschap.
[assembly: SuppressMessage("Usage", "CA2200:Rethrow to preserve stack details", Justification = "Not production code.", Scope = "member", Target = "~M:MyApp.Program.IgnorableCharacters")]
Gebruik de documentatie-id voor de API waarnaar u wilt verwijzen in het Target
kenmerk. Zie documentatie-id-indeling voor informatie over documentatie-id's.
Als u waarschuwingen wilt onderdrukken voor door compiler gegenereerde code die niet is toegewezen aan expliciet opgegeven gebruikersbron, moet u het onderdrukkingskenmerk in een globaal onderdrukkingsbestand plaatsen. De volgende code onderdrukt bijvoorbeeld een schending tegen een door een compiler verzonden constructor:
[module: SuppressMessage("Design", "CA1055:AbstractTypesDoNotHavePublicConstructors", Scope="member", Target="MyTools.Type..ctor()")]