1

是否有计算 VS 2010 Ultimate 解决方案的代码指标,但忽略代码合同?

现在,我最好的想法是进行计算,转储 Excel 文件,然后反映每个类的 IL,计算引用合同的行数,然后从该方法的代码行中减去该数量。问题是它的工作量远远超过它的价值,我只能削减代码行,但我仍然有由此产生的圈复杂度度量等)更好的想法?

4

2 回答 2

1

如果您决心这样做(像 Ira 一样,我不会特别推荐),从指标中排除合约的一种相当简单的方法是在不启用运行时合约检查的情况下进行编译,然后针对已编译的指标运行指标版本。

于 2013-03-06T17:47:34.277 回答
1

转到项目的属性,然后在Code Contracts选项卡上将选项设置Perform Runtime Contract CheckingNone. 然后重新编译您的项目并让您的分析器分析生成的程序集。

但是,如果您有复杂的合同,那么我建议您将它们提取到一个方法中,如下所示:

[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 回答