を循環的複雑度> 25が発生します。ダイナミックキーワードは、私がこのようなコードの部分を持っているのVisual Studio 2010コード分析
dynamic a = new ValueHolder();
dynamic b = new ValueHolder();
dynamic c = new ValueHolder();
a.MtdActual = b.MtdActual + c.MtdActual;
a.YtdActual = b.YtdActual + c.YtdActual;
a.MtdVariance = b.MtdVariance + c.MtdVariance;
私は例のためにこれを作成し、コードのその部分の循環的複雑度私の質問は明確であれば、他とコンパイラ生成されたログです
object a = new ValueHolder();
object b = new ValueHolder();
object c = new ValueHolder();
if (Program.<ConsumeA>o__SiteContainer2.<>p__Site3 == null)
{
Program.<ConsumeA>o__SiteContainer2.<>p__Site3 = CallSite<Func<CallSite, object, object, object>>.Create(Binder.SetMember(CSharpBinderFlags.None, "MtdActual", typeof(Program), new CSharpArgumentInfo[]
{
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null),
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null)
}));
}
Func<CallSite, object, object, object> arg_159_0 = Program.<ConsumeA>o__SiteContainer2.<>p__Site3.Target;
CallSite arg_159_1 = Program.<ConsumeA>o__SiteContainer2.<>p__Site3;
object arg_159_2 = a;
if (Program.<ConsumeA>o__SiteContainer2.<>p__Site4 == null)
{
Program.<ConsumeA>o__SiteContainer2.<>p__Site4 = CallSite<Func<CallSite, object, object, object>>.Create(Binder.BinaryOperation(CSharpBinderFlags.None, ExpressionType.Add, typeof(Program), new CSharpArgumentInfo[]
{
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null),
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null)
}));
}
...
:コード分析によるILのコードをdissasemblingすると25
であるあなたがこれを見ることができますスパイicは複雑さを増しています。しかし、このレベルでは動作しないようにコードアナリシスを設定し、可能であれば単純なコード化(プレコンパイル)ステージを最初のコードスニペットとして評価する方法はありますか?
これは避けられませんが、アナライザはソースコードではなくILから動作します。 * dynamic *を使うと、C#バインダーへの呼び出しの全体をチェックする傾向があります。別の種類のアナライザーが必要です。 –