Ich habe folgende Erweiterungsmethode für Strings:Code-Analyse-Regel CA1062 Verhalten
public static bool IsNullOrEmpty(this string target)
{
return string.IsNullOrEmpty(target);
}
... und in dem Code, den ich es wie folgt verwenden:
public static string DoSomethingOnString(this string target)
{
if (target.IsNullOrEmpty())
return target;
target = target.Trim(); //This line causes CA1062 violation
return target;
}
Nun, wenn ich Code-Analyse ausführen Ich bekomme einen Verstoß gegen die Regel CA1062. Aber wenn ich den Code zu ändern:
public static string DoSomethingOnString(this string target)
{
if (string.IsNullOrEmpty(target)) //CHANGED LINE
return target;
target = target.Trim(); //This line DOES NOT cause CA1062 violation anymore
return target;
}
... dann ist es in Ordnung.
Warum denkt es, dass ich im ersten Beispiel nicht nach Null-Bedingung suche? Prüft es nur für string.IsNullOrEmpty oder string.IsNullOrWhiteSpace? Gibt es eine Möglichkeit, CA dazu zu bringen, meine Erweiterungsmethode zu erkennen, oder muss ich diese Regel unterdrücken?
UPDATE: Wenn Sie das gleiche Problem, das Sie auf dem Feedback Artikel stimmen kann ich auf MS Connect vorgelegt: Code Analysis rule CA1062 raises false alarm
* Wo ist der Verstoß? In der Erweiterungsmethode? In dem Anruf * zu * der Erweiterungsmethode? Oder danach? Wann immer Sie in einer Frage einen Fehler/eine Warnung erwähnen, * zeigen * Sie bitte, wo sie auftritt. –
Schauen Sie sich den IL-Code an, die Code-Analyse funktioniert nicht mit dem Code, den Sie in Ihrer IDE sehen, also wird Ihnen das vielleicht helfen. – Gorgsenegger
Sie könnten 'ValidatedNotNullAttribute' verwenden, um FxCop zu informieren. Mehr hier: http://esmithy.net/2011/03/15/suppressing-ca1062/ –