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: 'table'、パラメーターは、メソッド 'ccc.settestconnectionstring(コンポーネント)'で複数回「xxx」と入力するためにキャストされます。冗長なキャストクラス命令を排除するために、「AS」オペレーターまたはダイレクトキャストの結果をキャッシュします。
このコードをリファクタリングして警告を削除できることはわかっていますが、コードの読み取りが低下します。この例では、この1つの関数に関するこのメッセージを抑制したいと思います。
私は何が間違っているのですか?
解決
プロジェクトのプロパティでプリプロセッサシンボルCode_analysisを定義したかどうかを確認してください。
他のヒント
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>full</DebugType>
所属していません StackOverflow