Java-查找仅在测试中使用的方法(在源代码中未使用)

Java-查找仅在测试中使用的方法(在源代码中未使用),java,eclipse,static-analysis,unused-functions,Java,Eclipse,Static Analysis,Unused Functions,未使用的方法有未使用的警告,可以删除,例如在Eclipse中 MyClass类型中的方法myMethod()从未在本地使用 但有时您编写带有单元测试的代码,之后代码不会在生产中使用(或删除),但方法仍然(仅)用于单元测试 我们如何才能找到在实际代码(仅测试代码)中未使用的方法 我的测试在tests文件夹下,代码在src文件夹下 例如,DAO方法: public interface TransactionDao { public boolean updateTrasaction(int

未使用的方法有未使用的警告,可以删除,例如在Eclipse中

MyClass类型中的方法myMethod()从未在本地使用

但有时您编写带有单元测试的代码,之后代码不会在生产中使用(或删除),但方法仍然(仅)用于单元测试

我们如何才能找到在实际代码(仅测试代码)中未使用的方法

  • 我的测试在tests文件夹下,代码在src文件夹下
例如,DAO方法:

public interface TransactionDao {

   public boolean updateTrasaction(int id);
}

@Repository
public class TransactionDaoImpl implements TransactionDao {

    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Override
    public boolean updateTrasaction(int id) {
        return (jdbcTemplate.update(... )>0);
    }
}
仅用于测试:

@Test   
public void testUpdateTrasaction() {
    Assert.assertEquals(transactionDao.updateTrasaction(1234), true);
}

我知道,但仍然有解决这个特定需求的方案吗?

在我看来,最简单的解决方案是首先从项目中删除或排除测试包,然后利用它查找所有未使用的方法,或者在生成后更新以获得一些错误/警告


我找不到任何未使用的方法查找工具,您可以从某些包中排除某些用法。如果有的话,我仍然建议使用编译器执行上述步骤,因为如果工具对生产率的提高很小,我宁愿在IDE上使用较少的工具。

我认为更直接的答案是使用DeadCodeDetector,请参见:

首先,运行它,包括src/main和src/test类,并输出到XML日志。 其次,只运行src/main,并输出到第二个XML日志

这两种方法之间的区别在于只在测试中调用的方法


这就是我正在采取的方法,删除一个不再需要的相当大的子系统。如果在删减该子系统后有新的未使用的方法,那么它们只被该子系统引用,也可以被删除。

为什么不暂时删除所有测试包,然后检查未使用的方法?非常简单的解决方案没有任何工具等@ @伯尔QueTe我可以考虑它,但不是有一种简单的方式,因为搜索可以忽略文件夹?(我有多个模块)要查找所有未使用的方法,您总是需要一些工具,不管它是在Intellij还是Eclipse中完成的,但是这些工具都没有类似的包忽略功能afaics。最好的方法是只使用该工具并删除测试包来查找所有真正未使用的方法。也许您可以在中增加未使用代码的警告级别,以便在生成后,您可以将未使用的方法作为错误,或者只是警告?删除测试ofc后。比得到一些愚蠢的工具要好。它可以通过为测试创建一个并行项目来工作。将主项目包括在测试中,该方法将不会在项目本身中使用,因此警告将可见