如何查找仅通过测试调用的代码

Jon*_*all 8 c# ndepend visual-studio-2008 resharper-5.0

偶尔我会看一些代码,我搜索一个方法的用法(使用resharper)并发现它只是通过测试调用.所以它实际上是多余的,我可以删除它和调用它的方法.

显然,在这个地方放置未使用的代码是没有意义的,这会降低构建速度和测试运行速度.我想要的是一个工具,可以告诉我生产代码的所有部分只能通过测试访问.

我有一个完整版的resharper,还有NDepend的试用版,但还没有找到如何使用其中任何一个来获得我想要的结果(不用付钱).我怀疑NDepend的完整版本可能是可能的,但还有其他人知道的工具吗?

如果上下文有帮助,解决方案是ASP.net网站,其功能大部分由WCF服务处理.因此,大部分代码的唯一有效入口点是服务方法.测试在他们自己的单独项目中.

我已经开始赏金了,因为我确信其他人必须拥有并解决过这个问题!

Nof*_*fls 4

使用 NDepend 手动查找应该可以与Dependency Matrix. 在那里您可以看到哪些方法仅由单元测试程序集使用。

我不确定您是否可以使用试用版编写自己的 CQL 查询。但在专业版中,您可以使用如下查询:

SELECT METHODS WHERE IsUsedBy "ASSEMBLY:NAME_OF_THE_UNIT_TEST_ASSEMBLY" 
AND !(IsUsedBy "ASSEMBLY:NAME_OF_ANOTHER_ASSEMBLY" OR IsUsedBy "ASSEMBLY:ANOTHER_NAME")
Run Code Online (Sandbox Code Playgroud)

为此,您必须创建一个了解所有程序集的 NDepend 项目。

因为NAME_OF_THE_UNIT_TEST_ASSEMBLY您必须插入单元测试程序集,并且在第二部分中您必须使用 IsUsedBy 指定生产代码程序集并用 OR 分隔。