微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用NDepend使用程序集列表的[过时]标记代码查找代码

如何解决使用NDepend使用程序集列表的[过时]标记代码查找代码

我当前正在尝试使用NDepend来识别(我们的)代码,该代码使用特定组引用程序集中的[过时]标记成员(在我的示例中以“ Microsoft.TeamFoundation。 *”开头) )和“我们的代码”,是指我们在上述参考程序集列表中调用/使用[过时]成员的成员。理想情况下,我会得到我们的Type及其成员的精确列表,但是如果我真正拥有这些类型中那些[过时]成员用法的实际计数,我也将很好用

该想法是一次性分析我们拥有的[过时]成员调用/使用的数量,然后将其集成到CI管道中,以跟踪随着时间的推移该数量的减少。

任何类似的指导或示例代码将受到高度赞赏。

解决方法

您可以尝试以下代码查询:

let obsoleteTMF = TypesAndMembers.Where(x => x.IsObsolete).ToHashSetEx()
from c in Application.Types.Concat<IUser>(Application.Methods).UsingAny(obsoleteTMF)
select new {
typeOrMethod = (ICodeElement)c,obsoleteUsed = c.IsType? 
   c.AsType.TypesUsed.Intersect(obsoleteTMF) :

   c.AsMethod.MethodsCalled
   .Concat<IMember>(c.AsMethod.FieldsUsed)
   .Intersect(obsoleteTMF)
}

由于对Concat()的调用,此查询可同时处理类型和方法。 .ToHashSetEx()用于加快对Intersect()的呼叫。

它是这样工作的:

NDepend code query to match obsolete typoe,methods and fields usage

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?