FXCOP подавляет предупреждение CA1800 (ненужные отливки)

StackOverflow https://stackoverflow.com/questions/3522612

  •  29-09-2019
  •  | 
  •  

Вопрос

У меня есть следующий код:

[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
}

Однако, когда я бегу FxCop За этот класс / функция все еще генерирует предупреждение

ПРЕДУПРЕЖДЕНИЕ: CA1800: Microsoft.performance: «Таблица», параметр, имеет значение «xxx» несколько раз в методе «CCC.SettestConnectionStringString (компонент)». Кэшируйте результат оператора «как» или прямого отличия, чтобы исключить избыточную инструкцию CastClass.

Я знаю, что могу рефакторировать этот код, чтобы удалить предупреждение, однако это сделает код менее читаемым. В этом случае я хотел бы подавить это одно сообщение об этой функции.

Что я делаю не так?

Это было полезно?

Решение

Проверьте, определяете ли вы код препроцессора Code_analysis в свойствах вашего проекта.

Посмотри на: http://msdn.microsoft.com/en-us/library/system.diagnostics.codeanalysiz.suppressmessageattribute.aspx.

Другие советы

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
}

Я подозреваю, что ваш файл проекта содержит debugtype - это нет. При установке Debugtype нет, он не будет обнаруживать код подавления. Таким образом, вы можете изменить DEBUGTYPE на полный, потому что он будет правильно обнаруживать код подавления.

<DebugType>full</DebugType>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top