Неиспользуемые методы имеют предупреждение о неиспользовании и могут быть удалены, например. в затмении
The method myMethod() from the type MyClass is never used locally
Но иногда вы пишете код с его модульным тестом, и после этого код не используется (или удаляется) в производстве, но метод все еще используется (только) для модульного теста.
Как мы можем найти такие неиспользуемые методы, которые не используются в реальном коде (только тестовый код)
Например, метод 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);
}
Я знаю о инструменты статического анализа и проблема остановки, но все же есть ли решение для этого конкретного требования?
@buræquete Я могу рассмотреть это, но нет ли простого способа, когда поиск может игнорировать папки? (у меня несколько модулей)
Чтобы найти неиспользуемые методы все, вам всегда понадобится какой-то инструмент, будь то в Intellij или Eclipse, но ни один из этих инструментов не имеет такой функции игнорирования пакетов. Лучше всего просто использовать этот инструмент и удалить тестовые пакеты, чтобы найти все неиспользуемые методы В самом деле.
Может быть, вы можете просто увеличить уровень предупреждения вашего неиспользуемого кода в Настройки компилятора Java, чтобы после сборки вы могли получать неиспользуемые методы как ошибки или просто предупреждения? После того, как вы удалите свои тесты ofc. Лучше, чем получить какой-то глупый инструмент.
это может сработать, создав параллельный проект для тестов. Включите основной проект в тест, метод не будет использоваться в самом проекте, поэтому предупреждение будет видно
@AxelH Вы работаете с проектом для тестов?
Я никогда не использовал такой подход... если это ваш вопрос.




На мой взгляд, самое простое решение — сначала удалить или исключить тестовый пакет из вашего проекта, а затем либо использовать какой-то инструмент, который находит все неиспользуемые методы, либо обновить Настройки ошибок/предупреждений компилятора Java для неиспользуемого/ненужного кода, чтобы получить некоторые ошибки/предупреждения в результате для вас после сборки.
Я не смог найти ни одного инструмента поиск неиспользуемых методов, с помощью которого можно было бы исключить некоторые варианты использования из определенных пакетов. Если они есть, я бы по-прежнему рекомендовал описанные выше шаги с компилятором, поскольку я бы предпочел использовать меньше инструментов в своей IDE, если инструмент очень мало увеличивает производительность.
Я ищу что-то похожее на функцию Intellij, которая показывает, что неиспользуемые функции исчезают.
Я думаю, что более прямым ответом будет использование DeadCodeDetector, см.: https://github.com/evernat/dead-code-detector/wiki
Сначала запустите его, включая классы src/main и src/test, и выведите в журнал XML. Во-вторых, запустите его, включая ТОЛЬКО ваш src/main, и выведите его во второй журнал XML.
Разница между этими двумя будет заключаться в методах, которые вызываются только в тестах.
Это подход, который я использую при удалении довольно большой подсистемы, которая больше не нужна. Если после сокращения этой подсистемы есть новые неиспользуемые методы, то на них ссылается только эта подсистема, и их также можно удалить.
Почему бы просто временно не удалить все тестовые пакеты, а затем проверить неиспользуемые методы? Очень простое решение без каких-либо инструментов и т. д.