FXCop Suppress Warning CA1800 (Unnötige Casts)
-
29-09-2019 - |
Frage
Ich habe den folgenden Code:
[SuppressMessage( "Microsoft.Performance", "CA1800:DoNotCastUnnecessarily" )]
private static void SetTestConnectionString( Component table )
{
if( table is Object1 )
{
fn1( (Object1)table );
}
// ... a few more if statements for different Classes
}
Allerdings, wenn ich FxCop
über diese Klasse / Funktion ausführen erzeugt es immer noch die Warnung
Warnung: CA1800: Microsoft.Performance: 'table', einen Parameter, ist cast type ‚xxx‘ mehrfach in Verfahren 'Ccc.SetTestConnectionString (Komponente)'. Cachen das Ergebnis des ‚als‘ Operator oder direkt gegossenen, um die redundante castclass zu beseitigen Anweisung.
Ich weiß, dass ich diesen Code Refactoring könnte die Warnung zu entfernen, aber es wäre der Code weniger lesbar machen. In diesem Fall würde Ich mag diese eine Nachricht auf dieser Funktion zu unterdrücken.
Was mache ich falsch?
Lösung
Überprüfen Sie, ob Sie die Präprozessorsymbol CODE_ANALYSIS in den Eigenschaften Ihres Projekts definiert.
Haben Sie einen Blick auf: http: // msdn .microsoft.com / en-us / library / system.diagnostics.codeanalysis.suppressmessageattribute.aspx
Andere Tipps
private static void SetTestConnectionString( Component table )
{
if( table.GetType() == typeof(Object1) )
{
Object1 object1 = (Object1)table;
fn1( object1 );
}
// ... a few more if statements for different Classes
}
Ich vermute, dass die Projektdatei enthält die DEBUGTYPE keine ist. Wenn Satz der DEBUGTYPE keine ist, wird es nicht die Unterdrückungs-Code erkennen. So ermitteln Sie den DEBUGTYPE auf volle ändern kann, weil sie richtig den Unterdrückungs-Code erkennt.
<DebugType>full</DebugType>