10 Stimmen

Kann ich alle Codeanalyse-Meldungen für eine bestimmte Klasse unterdrücken?

Immer wenn ich meinen Logger in einer Methode aufrufe, z.B.

_logger.Debug("Connecting to database...");

Ich habe die Warnung erhalten:

CA1303 : Microsoft.Globalization: 
Method 'Database.Connect()' passes a literal 
string as parameter  'message' of a call to 'ILogger.Debug(string)'. 
Retrieve the following string(s) from a resource table instead: 
"Connecting to database...".

Gibt es eine Möglichkeit, diese Warnung jedes Mal zu unterdrücken, wenn ich eine Funktion von ILogger ? Ich möchte sie wirklich nicht bei jeder Methode, die ich verwende, unterdrücken.

15voto

John Koerner Punkte 36554

Wenn Sie die Kontrolle über die ILogger Schnittstelle, können Sie die Localizable Attribut mit dem Wert "false", um anzuzeigen, dass der Wert nicht lokalisierbar ist.

Zum Beispiel:

void Info([Localizable(false)] string message);

3voto

Nicole Calinoiu Punkte 20595

Weder FxCop/VS Code Analysis noch die CA1303-Regel sind so konfigurierbar, dass bestimmte Ziele auf diese Weise ignoriert werden. Sie haben grundsätzlich drei Möglichkeiten:

  1. Unterdrücken Sie die Verstöße einzeln,
  2. Deaktivieren Sie die Regel, oder
  3. Ersetzen Sie eine benutzerdefinierte Regel, die sich so verhält, wie Sie es wünschen.

Ich neige bei dieser Art von Dingen zu Nummer 3, aber ymmv... Wenn Sie außerdem der Meinung sind, dass Sie das Verhalten des CA1303 kontrollieren können sollten, sollten Sie eine Anfrage bei https://connect.microsoft.com/VisualStudio o http://visualstudio.uservoice.com/forums/121579-visual-studio .

3voto

halter73 Punkte 14900

Ich bin auf dieses Problem gestoßen und habe festgestellt, dass die einfachste Lösung darin bestand, den Parameter meiner Protokollierungsmethode von "message" in etwas anderes umzubenennen.

CA1303 wird nur ausgelöst, wenn der betreffende Parameter oder Eigenschaftsname "Text", "Nachricht" oder "Beschriftung" enthält. Wenn der Parameter übergeben wird an Console.Write o Console.WriteLine kann der Parameter auch nicht als "Wert" oder "Format" bezeichnet werden.

2voto

Evan Machusak Punkte 684

Wenn Sie das Attribut GeneratedCode auf eine Klasse anwenden, wird Ihre Klasse nicht von Code Analysis analysiert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X