1

VS 2010 Ultimate ソリューションのコード メトリクスを計算し、コード コントラクトを省略する方法はありますか?

今のところ、私の最善のアイデアは、計算を行い、Excel ファイルをダンプし、各クラスの IL を反映し、コントラクトを参照している行の数を数え、そのメソッドのコード行からその量を差し引くことです。問題は、それが価値があるよりもはるかに多くの作業であり、コード行を削ることしかできませんが、結果として循環的複雑度の測定値が残っているなどです。より良いアイデアはありますか?

4

2 に答える 2

1

プロジェクトのプロパティに移動し、 [コード コントラクト] タブでPerform Runtime Contract Checkingオプションを に設定しますNone。次に、プロジェクトを再コンパイルし、アナライザーに結果のアセンブリを分析させます。

ただし、複雑なコントラクトがある場合は、次のようにメソッドに抽出することをお勧めします。

[Pure]
public void IsNotNullOrEmpty(object input)
{
    if (typeof(string).IsAssignableFrom(typeof(TInput)))
        return !string.IsNullOrEmpty((string)(object)input)
    else
        return typeof(TInput).IsValueType
            || !ReferenceEquals(input, null);
}

Contract.Requires<ArgumentException>(IsNotNullOrEmpty(input),
    "Input object must represent an actual value.");
于 2013-03-06T17:52:58.400 に答える
1

これを行うことに決めた場合 (Ira のように、特にお勧めしません)、メトリクスからコントラクトを除外するかなり簡単な方法は、ランタイム コントラクト チェックを有効にせずにコンパイルし、コンパイルされたものに対してメトリクスを実行することです。バージョン。

于 2013-03-06T17:47:34.277 に答える