C#


CSHARP.CLASS.IOF.BAD : Inappropriate Instanceof (C#)

要旨

The code contains type-testing that should not be used.

プロパティ

クラス名 Inappropriate Instanceof (C#)
日本語クラス名 Inappropriate Instanceof (C#)
クラス分類 信頼性 (reliability)
ニーモニック CSHARP.CLASS.IOF.BAD
カテゴリー
CWE CWE:1076 Insufficient Adherence to Expected Conventions
対応言語 C# で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで有効になっています。チェックを無効にするにはプロジェクト設定ファイル (configuration file)に以下の WARNING_FILTER ルールを追加してください。
WARNING_FILTER += discard class="Inappropriate Instanceof (C#)"

public class MyClass 
{

  public string s
  
  public override boolean Equals(Object obj) 
  {
    if(obj != null )
      if (obj is string)    // "Inappropriate Instanceof (C#)" warning issued here 
                            // - expect instance check inside MyClass.Equals() to check MyClass (or a subclass of MyClass, if any) 
        return s.equals(obj);
      
    return false;
  }
}

In this example, the programmer should modify the Equals as follows:

  public override boolean Equals(Object obj) 
  {
    if(obj != null )
      if (obj is MyClass)
        return s.equals(((MyClass) obj).s);
      
    return false;
  }

解決法

Check if the is operator can be actually removed and that it is not the sign of an actual programming bug.

関連のある設定ファイルパラメータ

設定ファイルの以下のパラメータがこのワーニングクラスのチェックに影響します。