代码之家  ›  专栏  ›  技术社区  ›  Jonny Cundall

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

  •  8
  • Jonny Cundall  · 技术社区  · 14 年前

    有时我会查看一些代码,搜索方法的用法(使用resharper),发现它只由测试调用。所以它实际上是多余的,我可以删除它和调用它的方法。

    显然,没有必要让未使用的代码到处乱放,从而减慢构建和测试运行的速度。我想要的是一个工具,它可以告诉我只有测试才能访问的生产代码的所有位在哪里。

    我有一个完整版本的Resharper,也有一个试用版的ndepend,但还没有找到如何使用其中任何一个来获得我想要的结果(不为此付费)。我怀疑使用完整版本的ndepend可能是可能的,但是人们是否知道其他工具?

    如果上下文有帮助,解决方案是和ASP.NET网站,其中大部分功能由WCF服务处理。因此,对于大部分代码来说,唯一有效的入口点是服务方法。这些测试是在各自独立的项目中进行的。

    我已经开始赏金了,因为我确信以前一定有人解决过这个问题!

    3 回复  |  直到 14 年前
        1
  •  4
  •   Noffls    14 年前

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

    我不确定您是否可以用试用版编写自己的cql查询。但是使用pro版本,您可以使用这样的查询:

    SELECT METHODS WHERE IsUsedBy "ASSEMBLY:NAME_OF_THE_UNIT_TEST_ASSEMBLY" 
    AND !(IsUsedBy "ASSEMBLY:NAME_OF_ANOTHER_ASSEMBLY" OR IsUsedBy "ASSEMBLY:ANOTHER_NAME")
    

    要使其工作,您必须创建一个了解所有程序集的独立项目。

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

        2
  •  2
  •   Iain Hoult    14 年前

    一种非技术性的方法是暂时从解决方案中删除测试项目,然后使用Visual Studio的代码分析(或FxCop)来定位任何其他方法都不会调用的方法。

        3
  •  0
  •   Alex Paven    14 年前

    您可以将ndepend用于一些自定义查询…这是我的头上,从来没有用过,但它应该工作。

    推荐文章