質問

Visual NdependでCQLクエリを作成して、名前空間のリストから直接依存しないすべてのタイプと方法を見つけようとしています。

私がこれまでに構築したクエリはこれです:

SELECT METHODS
WHERE 
   !IsDirectlyUsing "NAMESPACE:Microsoft.*"
   AND !IsDirectlyUsing "NAMESPACE:System.Web.UI.*"
   AND !FullNameLike ".Test"
   AND !HasAttribute "System.CodeDom.Compiler.GeneratedCodeAttribute"
   AND FullNameLike "OurOwnNameSpaceHere"

しかし、これにより、SPWEBをパラメーターとして受け入れる方法がまだ返されるため、何かが欠けている必要があります。

だから私はしたい:

  • マイクロソフト内にある参照されているアセンブリ内の任意のタイプに依存するすべての方法を除外します。*名前空間。

  • システム内にある参照されているアセンブリ内の任意のタイプに依存するすべての方法を除外します。web.ui。* namespace。

  • 生成された方法/タイプを除外します

  • 名前空間でテストされたプロジェクトの一部である方法を除外します。

fall落するサンプル方法は次のとおりです。

public void SomeMethod(SPWeb web)
{
    ... // other code here
    SomeOtherMethod(web);
    ...
}
役に立ちましたか?

解決

以下を試すことができます LINQ(CQLINQクエリ)を介したコードクエリ:

let dontUseTypes = Namespaces
                   .WithNameWildcardMatchIn("Microsoft.*", "System.Web.UI.*")
                   .ChildTypes()

from m in JustMyCode.Methods.Except(Methods.UsingAny(dontUseTypes))
where !m.ParentAssembly.Name.ToLower().Contains("test")
select m

状態 生成された方法/タイプを除外します その事実によって処理されます JustMycodeを使用しています.

次に、どの方法またはフィールドがあります SPWeb メソッドで使用されています。 ndependは、メソッドがタイプのメンバーを使用している場合にのみタイプを使用することを検出できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top