FXCOP подавляет предупреждение CA1800 (ненужные отливки)
-
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>