Frage

C#/. NET/FXCOP!

... In einer Klasse möchte ich, dass sich FXCOP zum Handschloss beschwert

Warning CA1062 : Microsoft.Design : 
In externally visible method 'xyz', validate parameter 'a' before using it. 

Grundsätzlich deutet diese Regel darauf hin, dass ich a einsehe if (a == null) throw new ArgumentNullException("a"); Zu Beginn fast jeder Methode in meinem Code. Dies saugt und ändert die Ausnahmebehandlung Logik.

Also habe ich das irgendwo in meinen Klassenkörper gesteckt:

[SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods",
     Scope = "Type", 
     MessageId = "0", 
     Justification = "We love danger... so far.")]

Auf jeden Fall unterdrückt dies nicht einmal eine einzige Nachricht - ich bekomme immer noch all diese Warnungen. Es unterdrückt nur die Warnung, wenn es direkt über einer der fehlbaren Methodendefinitionen steht (dh nur eine einzige Warnung, nicht alle dieser Typen). Das Seltsame ist, dass dieselbe Syntax für andere Probleme funktioniert, die in meiner Klasse mehrmals auftreten.

Ich weiß nicht, was ich falsch mache, und ich verstehe ehrlich gesagt nicht wirklich, wie ich die Attributparameter verwenden soll. http://msdn.microsoft.com/de-de/library/ms244717.aspx Verfällt nicht zu viel in Details. : T ... Wie auch immer, irgendwelche Ideen, was ist nicht richtig?

War es hilfreich?

Lösung

Möchten Sie die Nachricht für alle Klassen oder nur für eine einzelne Klasse unterdrücken? Wenn er erstere, können Sie die Regel deaktivieren. (Der genaue Mechanismus dafür hängt davon ab, wie Sie FXCOP ausführen. Geben Sie also Details an, wenn Sie Hilfe benötigen.)

Wenn letzteres, müssen Sie ein SuppressMessage -Attribut für mindestens jede Methode hinzufügen, bei der das Problem erkannt wird. Der Grund dafür ist, dass FXCOP nur nach Unterdrückung des Ziels eines Verstoßes sucht. Eine Unterdrückung, die zu einem "übergeordneten" Element hinzugefügt wurde (z. B. die Klasse, zu der eine Methode gehört), wird von FXCOP niemals untersucht, wenn versucht wird, festzustellen, ob ein Verstoß unterdrückt wurde.

Sie haben eine gewisse Flexibilität darüber, wo Sie die Unterdrückung in Ihrem Code platzieren, wenn Sie das Zielattribut verwenden. Dies ändert jedoch nicht die Notwendigkeit eines Unterdrückungsattributs pro Verstößenziel.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top