3

CQL でリクエストを作成することは可能ですか?

次のようなものを書きたいと思います:

アセンブリからタイプを選択 "myassemblie" WHERE IsUsing アセンブリからメソッドを選択 "myotherassemblie" WHERE IsStatic

ありがとう、ヴァンズ

4

1 に答える 1

3

NDepend チームは、最終的にこの質問に対するエレガントな回答を提供できることを誇りに思っています :) 新しい NDepend v4 Code Query LINQ (CQLinq) 機能のおかげで、あなたが求めているものは、例えば次のように書くことができます:

let staticMethods = Application.Assemblies.WithName("nunit.core")
                    .ChildMethods().Where(m => m.IsStatic)

from t in Application.Assemblies.WithName("nunit.util")
          .ChildTypes().UsingAny(staticMethods )

let staticMethodsUsed = staticMethods.UsedBy(t)
select new { t, staticMethodsUsed  }

このようなクエリを作成する方法は他にもたくさんありますが、この方法は確かに最も簡潔で最適化された方法です (右上のパネルは、それが 4ms で実行されることを示しています)。

CQLinq によるコード クエリ構成

于 2011-03-07T18:58:20.687 に答える