如何为NDepend查询重新定义应用程序域?

时间:2014-03-12 22:00:09

标签: ndepend

问题:
在分析来自大量可部署的程序集时,有一种方法可以控制NDepend如何定义"应用程序"域?或者我可以为依赖关系矩阵和图形指定JustMyCode吗?

背景
我正在尝试确定我公司所有产品的所有第三方依赖项。

在一个地方获取所有二进制文件的最简单方法是从测试服务器复制所有程序集(而不是尝试下载所有150多个单独部署的源代码)。

这意味着所有第三方(即nuget)依赖关系似乎都被NDepend包含在预定义的"应用程序"域。而ThirdParty域只包含框架程序集。

我已经定义了一个查询,该查询标识了我认为是应用程序代码的所有程序集(即a.Name.Contains(" MyCompanyName"))但我没有看到改进的方法使用该查询的NDepend应用程序域。我已经使用该查询来改变JustMyCode域,但似乎没有为依赖矩阵或图形指定JustMyCode的选项。

我可以在项目属性中看到,可以将程序集从第三方移动到应用程序,但似乎没有将程序集从应用程序移动到第三方的选项......?

我对NDepend相当新鲜 - 理想情况下,我希望能够看到/定义以下域名:

  • 框架(即.net框架库)
  • ThirdParty(包括Microsoft。* libs)
  • 应用
    • JustMyCode

另外,我猜想我是否正在分析一个NDepend会认为所有nuget包都是ThirdParty的解决方案?

1 个答案:

答案 0 :(得分:1)

实际上,在定义NDepend项目时,您不需要引用所有(即应用程序+第三方)程序集。仅引用应用程序集就足够了,NDepend有一个启发式方法来确定从应用程序组件中消耗的自动第三方程序集。

此外,为了更容易匹配存储在文件夹层次结构中的应用程序集的范围,您可以使用在文件夹中添加.NET程序集 + 递归子文件夹 + 按名称过滤

NDepend filter application assemblies by name

使用应用程序程序集填充NDepend项目后,要获取应用程序集的子集的依赖关系矩阵或图形,您可以编写与此子集匹配的代码查询,并将匹配的程序集导出到图形或矩阵:

Export NDepend assemblies to graph or dependency matrix

我还假设我是否正在分析一个NDepend会认为所有nuget包都是ThirdParty的解决方案?

是的,因为第三方程序集将通过提到的启发式找到。