FXCop reprimir Advertencia CA1800 (Casts innecesario)
-
29-09-2019 - |
Pregunta
Tengo el siguiente código:
[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
}
Sin embargo, cuando corro FxCop
sobre esta clase / función que todavía genera la advertencia
advertencia: CA1800: Microsoft.Performance: 'mesa', un parámetro, es Reparto de tipo 'xxx' varias veces en el método 'Ccc.SetTestConnectionString (Componente)'. Almacenar en caché el resultado del 'como' operador o fundición directa con el fin de eliminar la redundancia castclass de instrucciones.
Sé que podría refactorizar el código para eliminar la advertencia, sin embargo, sería que el código sea menos legible. En este caso me gustaría suprimir este mensaje en este una función.
¿Qué estoy haciendo mal?
Solución
Comprobar si ha definido el símbolo de preprocesador CODE_ANALYSIS en las propiedades de su proyecto.
Para consultar: http: // MSDN .microsoft.com / es-es / library / system.diagnostics.codeanalysis.suppressmessageattribute.aspx
Otros consejos
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
}
sospecho que el archivo de proyecto contiene la DEBUGTYPE hay ninguno. Cuando se establece la DEBUGTYPE hay ninguno, no se detecta el código de supresión. Por lo que puede cambiar el DEBUGTYPE al completo, ya que detectará el código reprimir adecuadamente.
<DebugType>full</DebugType>