我正在尝试在 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 作为参数的方法,所以我一定遗漏了一些东西。
所以我想:
排除依赖于 Microsoft.* 命名空间内的任何引用程序集内的任何类型的任何方法。
排除依赖于 System.Web.Ui.* 命名空间内的任何引用程序集内的任何类型的任何方法。
排除任何生成的方法/类型
排除属于在命名空间中具有 Test 的项目的任何方法。
失败的示例方法是:
public void SomeMethod(SPWeb web)
{
... // other code here
SomeOtherMethod(web);
...
}