Наиболее часто используемый способ определить, используется ли метод, - построить граф вызовов. Если метод не вызывается, его можно удалить. Однако графы вызовов не всегда правильны из-за использования рефлексии, небезопасности и полиморфизма. Поэтому, если вы хотите удалить метод, вы должны быть уверены, что этот метод не используется отражением или другими категориями несостоятельности.
Чтобы удалить классы, вы должны не только убедиться, что методы не используются, но и поля классов. Поэтому вам необходимо определить все методы, которые могут ссылаться на поле.
Все описанные анализы, к которым вы можете обратиться, используя инструменты Soot, WALA, Javassist или OPAL.