1

NDepend を使用して特別なクエリを作成しようとしていますが、わかりません。

より手続き的な疑似コードでクエリしたいのは次のとおりです。

var list
foreach type t
    foreach i = t.attribute that is an interface
        var nm = i.numberOfMethods
        var mu = numberOfMethods that t actually uses
        if mu / nm < 1
        list.Add(t)
    end foreach
end foreach
return list

Interface Segregation Principleに準拠していないタイプをリストすることになっています。

ありがとう!

4

1 に答える 1

2

したがって、質問するクエリは次のように記述できます。

from t in JustMyCode.Types where !t.IsAbstract

from i in t.TypesUsed where i.IsInterface

// Here collect methods of i that are not used
let methodsOfInterfaceUnused = i.Methods.Where(m => !m.IsUsedBy(t))
where methodsOfInterfaceUnused.Count() > 0
select new { t, methodsOfInterfaceUnused }

このクエリには、同じ型が複数回一致するという特性があり、毎回 1 つmethodsOfInterfaceUnusedは空ではありません。結果は適切に表示され、理解できるようになります。

NDepend による分離原則

于 2013-01-21T00:51:17.437 に答える