Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
| Eigenschaft | Wert |
|---|---|
| Regel-ID | CA2243 |
| Titel | Attribut-Zeichenfolgenliterale sollten korrekt geparst werden. |
| Kategorie | Verwendung |
| Fix führt zu Unterbrechungen oder bleibt funktionsfähig | Untrennbar |
| Standardmäßig in .NET 10 aktiviert | Nein |
| Anwendbare Sprachen | C# und Visual Basic |
Ursache
Der Zeichenfolgenliteralparameter eines Attributs wird für eine URL, GUID oder Version nicht korrekt geparst.
Regelbeschreibung
Da Attribute von System.Attribute abgeleitet werden und Attribute zur Kompilierzeit verwendet werden, können nur konstante Werte an Ihre Konstruktoren übergeben werden. Attributparameter, die URLs, GUIDs und Versionen darstellen müssen, können nicht als System.Uri , System.Guid und System.Version eingegeben werden, da diese Typen nicht als Konstanten dargestellt werden können. Stattdessen müssen sie durch Zeichenfolgen dargestellt werden.
Da der Parameter als Zeichenfolge typisiert ist, kann es vorkommen, dass ein falsch formatierter Parameter zum Zeitpunkt der Kompilierung übergeben werden kann.
Diese Regel verwendet eine Namensheuristik, um Parameter zu suchen, die einen URI (Uniform Resource Identifier), einen global eindeutigen Bezeichner (GUID) oder eine Version darstellen, und überprüft, ob der durchgegangene Wert korrekt ist.
So beheben Sie Verstöße
Ändern Sie die Parameterzeichenfolge in eine ordnungsgemäß formatierte URL, GUID oder Version.
Wann sollten Warnungen unterdrückt werden?
Eine Warnung bei dieser Regel kann sicher unterdrückt werden: sofern der Parameter weder eine URL, noch eine GUID oder eine Version darstellt.
Unterdrücken einer Warnung
Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.
#pragma warning disable CA2243
// The code that's violating the rule is on this line.
#pragma warning restore CA2243
Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad auf none in der Konfigurationsdatei fest.
[*.{cs,vb}]
dotnet_diagnostic.CA2243.severity = none
Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.
Beispiel
Das folgende Beispiel zeigt den Code für AssemblyFileVersion-Attribut, das gegen diese Regel verstößt.
[AttributeUsage(AttributeTargets.Assembly, Inherited = false)]
[ComVisible(true)]
public sealed class AssemblyFileVersionAttribute : Attribute
{
public AssemblyFileVersionAttribute(string version) { }
public string? Version { get; set; }
}
// Since the parameter is typed as a string, it is possible
// to pass an invalid version number at compile time. The rule
// would be violated by the following code: [assembly : AssemblyFileVersion("xxxxx")]
Die Regel wird durch die folgenden Parameter ausgelöst:
Parameter, die „Version“ enthalten und nicht in „System.Version“ analysiert werden können.
Parameter, die „guid“ enthalten und nicht in „System.Guid“ analysiert werden können.
Parameter, die „uri“, „urn“ oder „url“ enthalten und nicht in „System.Uri“ geparst werden können.