如何在NDepend中忽略.NET程序集?

5

背景

随着时间的推移,我发现自己越来越多地依赖于NDepend来了解遗留应用程序的设计/实现。

问题

除了将JustMyCode添加到CQL查询中,是否有一种方法可以永久性地配置NDepend(在项目级别上)以简单地忽略.NET Framework?我可能错了,但我相当确定NDepend v3支持此功能。

示例

  1. 在Visual Studio中打开您的解决方案并单击“重新生成”
  2. 基于解决方案文件(*.sln)创建一个NDepend项目
  3. 运行分析
  4. 打开交互式(非HTML)依赖关系图
  5. 点击左上角的重置箭头(提示:回收站图标)
  6. 点击仅重置应用程序程序集
  7. 观察
    • 您将不再看到对.NET Framework的引用(注意:蓝色文字已消失)
  8. 右键单击其中一个程序集:选择类型
  9. 点击我直接使用的
  10. 以下CQL将出现在查询窗口中:
    • from t in Types where t.IsUsedBy ("MyCompany.MyProduct.MyAssemblyName") select new { t, t.NbILInstructions }
  11. 观察
    • 很可能您现在会在查询结果窗口中看到.NET Framework引用(注意:蓝色文字已恢复)
    • 将JustMyCode添加到CQL查询中,.NET引用再次消失:from t in JustMyCode.Types where t.IsUsedBy ("MyCompany.MyProduct.MyAssemblyName") select new { t, t.NbILInstructions }

上下文

  • 应用程序:NDepend版本4.1.0.6871
  • 视图:依赖关系图
1个回答

1

忽略.NET程序集的唯一两种方法是:

  • 像您所写的那样使用notmycode/JustMyCode
  • 项目属性 > 要分析的代码面板中删除程序集。

感谢您的反馈。在NDepend v4中,似乎无法从“要分析的代码”=>“第三方程序集”列表中删除程序集(其中包括像System.Data这样的.NET引用)。这是正确的吗? - Pressacco
哎呀,我没明白你只关心第三方程序集。实际上,第三方程序集是从应用程序集中自动推断出来的。在v5中,我们增加了获取仅应用程序集(或应用程序命名空间)的图形或矩阵的可能性。在v4中,这也是可能的,但您必须编写一个查询代码(消除第三方程序集),然后将结果导出到图形或矩阵中。 - Patrick from NDepend team
澄清一下:我只关心应用程序集。这就是为什么我正在寻找一种永久性忽略微软的.NET Framework的方法。我现在看到,我要么必须在CQL中使用JustMyCode,要么升级到NDepend 5。感谢您的帮助Patrick。 - Pressacco
1
抱歉,对于新手来说,这个答案太糟糕了。你把“notmycode/JustMyCode”代码放在哪里?在某个规则中吗?在通用规则中?正如@Pressacco在NDepend 6中所说的那样,你不能“删除程序集”。我只想分析我的代码,而不是所有第三方程序集。 - Jack
我猜你是通过链接访问了notmycode/JustMyCode http://www.ndepend.com/docs/cqlinq-syntax#NotMyCode,那里有什么不清楚的地方吗?所有被notmycode前缀匹配的代码元素都将从JustMyCode(类型为ICodeBaseView)中丢弃。因此,您可以轻松地使用notmycode查询消除一些程序集,这些程序集将不再由JustMyCode代码库视图枚举。清楚了吗?如果没有,请提出具体问题。 - Patrick from NDepend team

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接