2017-11-20 7 views
1

NDependからのクエリを特定のタイプのセットに制限したいと考えています。NDependあるクエリの出力と別のクエリの出力を混合するLinq

let temp = from t in Types 
let depth0 = t.DepthOfIsUsedBy("PrintOddsDrawing") 
where depth0 >= 0 orderby depth0 
select new { t, depth0, t.NbTypesUsed } 



// <Name>Methods too complex - critical</Name> 
warnif count > 0 from m in JustMyCode.Methods where 
    m.CyclomaticComplexity > 30 || 
    m.ILCyclomaticComplexity > 60 || 
    m.ILNestingDepth > 6 
    orderby m.CyclomaticComplexity descending, 
      m.ILCyclomaticComplexity descending, 
      m.ILNestingDepth descending 
select new { m, m.CyclomaticComplexity, 
       m.ILCyclomaticComplexity, 
       m.ILNestingDepth } 

答えて

1

ちょうどの先頭にwarnif count > 0ヘッダを置く

Only single statement queries are supported. If you 
wish to define a function or a variable global to the query, use a 
range variable defined in a 'let' clause declared before the query. 
For example: 

let myVar = ThirdParty.Types.WithName("IDisposable").Single() let 
myFunc = new Func<IType, bool>(t => t.NbLinesOfCode > 10) let ... from 
t in Types where t.Implement(myVar) && myFunc(t) select new { t, 
t.NbLinesOfCode } 

しかし、私の第二の試みは、同様に失敗します。私は、通常の割り当てを使用しようとした場合しかし、私は次のエラーを取得しますクエリ

warnif count > 0 
let temp = from t in Types 
... 

2番目の質問:のみ、私はあなたのようなクエリを行うことができます

に取り組んでいるタイプと接続減少サブセットに、すべてのコードのにおいの調査を適用する方法は、(自分のサブセットでTypesAndMembers.WithNameLike("m")を置き換えるもあります定義)

let subset = TypesAndMembers.WithNameLike("m").ToHashSet() 
from i in Issues 
where i.CodeElement.IsTypeOrMember && 
     subset.Contains(i.CodeElement) 
select new { i, i.Debt, i.Severity } 
+0

ありがとう。私が取り組んでいるタイプに関連する縮小されたサブセットに対してのみ、すべてのコードにおいての調査を適用する方法もありますか? – Revious

+1

あなたの2番目の質問に対する回答を見る –