有没有计算VS 2010 Ultimate解决方案的代码指标,但是要省略代码合同?
现在,我最好的想法是进行计算,转储excel文件,然后反映每个类的IL,计算引用合同的行数,然后从代码行中减去该数量。方法。问题在于它的工作量超出了它的价值,而且我只能削减代码行,但我仍然会得到最终的圈复杂度测量等等。)更好的想法?
答案 0 :(得分:1)
如果你决定这样做(像Ira一样,我不特别推荐),从指标中排除合同的一种相当简单的方法是在没有启用运行时合同检查的情况下进行编译,然后运行指标反对该编译版本。
答案 1 :(得分: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.");