gpt4 book ai didi

c# - 通过 NDepend 查找仅在特殊类中使用的代码

转载 作者:太空宇宙 更新时间:2023-11-03 11:14:03 25 4
gpt4 key购买 nike

我正在尝试使用 NDepend 摆脱代码库中的无效代码。因为我们使用依赖注入(inject),所以我想找到仅在从注册表基派生的类中使用的接口(interface)(和实现):

public class PresenterRegistry : Registry
{
public PresenterRegistry()
{
For<IExamplePresenter>().Use<ExamplePresenter>();
}
}

有什么办法吗?

谢谢!

最佳答案

在尝试了一些之后,我创建了一个以我需要的方式工作的查询:

// <Name>Interfaces registered but potentially not used</Name>
warnif count > 0
from t in JustMyCode.Types
from i in JustMyCode.Types
where t.DeriveFrom("StructureMap.Configuration.DSL.Registry")
&& i.IsInterface
&& t.IsUsing(i)
&& i.NbTypesUsingMe < 3 // one using for implementation, one in registry
select i

没有我预期的那么多代码:-) 这个查询没有涵盖任何可能发生的情况,但它是一个好的开始。

尽管如此:帕特里克,感谢您的帮助!


不客气 Rico :) 顺便说一句,这个代码规则可以重写为在 O(N) 而不是 O(N^2) 中运行( N 是 JustMyCode.Types 的数量。多亏了魔法 UsedByAny() 实现了这种优化方法。此规则还提供了更详细的结果。

warnif count > 0 
let registryDerived = JustMyCode.Types.Where(t => t.DeriveFrom("StructureMap.Configuration.DSL.Registry"))
from i in JustMyCode.Types.UsedByAny(registryDerived)
where i.IsInterface &&
i.NbTypesUsingMe < 3 // one using for implementation, one in registry
select new { i,
registryDerivedUser = i.TypesUsingMe.Intersect(registryDerived),
i.TypesUsingMe }

关于c# - 通过 NDepend 查找仅在特殊类中使用的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13197482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com