FxCop reprimere Attenzione CA1800 (inutili calchi)
-
29-09-2019 - |
Domanda
Ho il seguente codice:
[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
}
Tuttavia, quando corro su questo FxCop
Classe / Funzione genera ancora l'Attenzione
Attenzione: CA1800: Microsoft.Performance: 'table', un parametro, è cast di tipo 'xxx' più volte nel metodo 'Ccc.SetTestConnectionString (Component)'. Cache il risultato del 'come' operatore o getto diretto in modo da eliminare il castclass ridondante istruzioni.
Lo so che potrei refactoring questo codice per rimuovere l'avviso, ma sarebbe rendere il codice meno leggibile. In questo caso vorrei sopprimere questo messaggio in questa una funzione.
Che cosa sto facendo di sbagliato?
Soluzione
Controlla se è stato definito il simbolo del preprocessore CODE_ANALYSIS nelle proprietà del progetto.
Date un'occhiata a: http: // msdn .microsoft.com / en-us / library / system.diagnostics.codeanalysis.suppressmessageattribute.aspx
Altri suggerimenti
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
}
ho il sospetto il file di progetto contiene il DEBUGTYPE è nessuno. Una volta impostato il DEBUGTYPE è nessuno, non rilevare il codice di sopprimere. Così si può cambiare il DEBUGTYPE a pieno, perché in grado di rilevare il codice di sopprimere in modo corretto.
<DebugType>full</DebugType>