c# - C#查找类的依赖关系

标签 c# visual-studio-2008 testing dependencies

我们有一个 c# 应用程序,它使用许多库(我们也编写了)。该应用程序依赖于不同的库,其中一些库依赖于其他一些库。

现在,在测试应用程序时,我们还需要确保所有库都正常工作。问题是该应用程序仅使用这些库的少量功能。我可以使用 NCover 之类的东西来查找实际使用了哪些库类,但我也很想知道这些类(跨应用程序和不同的库)是如何组织的——它们的依赖结构。

所以我的问题是: 我希望能够运行我的应用程序,然后获取使用的类列表,按依赖项组织(即调用/使用什么)。

有人知道有什么工具(免费或免费)可以让您这样做吗?代码全部在 VS2008 中以不同的库/应用程序组织为项目。

最佳答案

要在 NDepend 上完成 Gergely 的回答,此工具可以帮助以智能的方式完成此操作。 免责声明:我是该工具的开发者之一

为了达到你的要求,你需要写一个Code Query over LINQ (CQLinq) .例如,我们编写了这样的查询,一方面我们有 NDepend 程序集,它们正在调用 DevExpress 程序集。下面的 CQLinq 代码查询匹配 NDepend 使用的 DevExpress 公共(public)类型,而且迭代地匹配使用的内部 DevExpress 类型。

let devExpressTypes = Assemblies.WithNameLike("DevExpress").ChildTypes()
let ndependTypes = Assemblies.WithNameLike("NDepend").ChildTypes()
let publicDevExpressTypesUsed = devExpressTypes.UsedByAny(ndependTypes)
let devExpressTypesUsedRec = publicDevExpressTypesUsed .FillIterative(
  types=> devExpressTypes.UsedByAny(types))

from t in devExpressTypesUsedRec.DefinitionDomain
select new { t, 
   depth = devExpressTypesUsedRec[t], 
   ndependTypesUsingMe = t.TypesUsingMe.Intersect(ndependTypes) 
}

然后您可以将部分结果导出到 NDepend dependency graph :

(请注意 DevExpress 类型深度下方的屏幕截图。深度为零表示公共(public) DevExpress 类型直接由 NDepend 类型调用。对于此类 DevExpress 类型,列出了直接使用它的 NDepend 类型. 深度为1表示DevExpress类型被NDepend类型直接使用的类型使用,依此类推...)

Export matched types to the dependency graph

...并获取您要求的类型使用图:

Types usage graph

关于c# - C#查找类的依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1599387/

相关文章:

java - JUnit 在 Netbeans 上测试一个类

Django 测试没有运行特定的应用程序测试

c# - 发送时服务器保持挂起状态

c# - 关于 Task.StartNew(Action<Object>, Object) 方法

c# - 如何在 C# 中生成 UUID

visual-studio-2008 - 如何控制Visual Studio 2008中“应用程序文件...”对话框中显示的内容?

ios - 如何调试 EarlGrey 测试中的超时失败?

c# - 如何在隐藏时调用对象方法

c# - 我如何在winform中用位图替换光标

visual-studio-2008 - Visual Studio 中的有序单元测试有什么意义?