Anonymous hat gesagt.:http://www.eclemma.org
Funktioniert auch einwandfrei mit Ganymede.
Code der nicht referenziert wird ist nicht unbedingt ungenutzt, man denke an Reflection und DI.http://www.ucdetector.org/ dagegen findet Code, der nicht referenziert wird.
Limitations
The problems found by UCDetector, are only suggestions.
Before deleting or changing your code you should really know what you are doing!
If UCDetector tells you, that there are no references of your class, method or field your code still may be used by:
Reflection
Declaration in no java files like property files, xml files...
Third party code, which is using your code
Jars in your workspace
To be continued...
Change visibility to private or protected may have side effects to inheritance, reflection...
Man nimmt eben EMMA oder Cobertura, um die Coverage von Tests zu ermitteln, eben dass was wirklich aufgerufen/durchlaufen wird.Murray hat gesagt.:Und wie sollte man auch anders nach unbenutztem Code suchen können? Wenn man davon ausgehen muss, dass es noch (Fremd-)Code gibt, den man bei der Analyse nicht berücksichtigen kann oder wenn man damit rechnen muss, dass per Reflection auf den Code zugegriffen wird, dann kann es da wohl keine sichere Lösung geben.
wie auch immer diese Tools funktionieren: entweder arbeiten sie durch Analyse der Sourcen, oder sie protokollieren irgendwie mit, welche Code-Teile in einem echten Programmlauf aufgerufen werden. Ersteres funktioniert nicht, wo andere Referenzen als direkte Aufrufe verwendet werden (Reflection) oder wo Fremdcode nicht analysiert werden kann, letzteres setzt voraus, dass der Programmablauf, der protokolliert wird, eben alles umfasst, was in der Praxis vorkommt - und um das zu garantieren, müsste man also schon wissen, was der "dead code" ist.maki hat gesagt.:Man nimmt eben EMMA oder Cobertura, um die Coverage von Tests zu ermitteln, eben dass was wirklich aufgerufen/durchlaufen wird.
Es soll Wege geben diese Tools auf nicht-Tests laufen zu lassen, waren mir aber zu Komplex.
Für das hier beschriebene Szenario scheint mir UCDetector das Richtige zu sein, da der Programmierer seinen Code kennt. Das heisst, er weiss wahrscheinlich:Sniper hat gesagt.:ICH habe ein großes Projekt in Eclipse entwickelt.