C#


CSHARP.COMPARE.EQUALS.CN : Comparison to Class Names (C#)

要旨

Class names are compared with Equals(). This is not a reliable check for class equality, because multiple classes might have the same name.

プロパティ

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

using System;
using System.Diagnostics;

namespace DocumentationExamples {
    public class BadEq {
        public static void Main(string[] args) {
            string s = "";
            object o = "";
            if (s.GetType().Name.Equals(o.GetType().Name)) // 'Comparison to Class Names (C#)' warning issued here
                // ... 
            }
        }
    }
}

解決法

To check if two objects have the same class, use the getType() method and the == operator.

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

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