Abhaengigkeiten auf Klassenebene entfernen..?

sirbender

Top Contributor
Hallo,

es gibt ja unzaehlige Dependency Remover im Web. Da erzeugt man eine main-Methode mit Code und alle noetigen Codeabhaengigkeiten (.class Dateien) werden in ein bestimmtes Verzeichnis kopiert.

Ich habe jetzt ein paar Tage recherchiert aber nicht gefunden was ich suche. Deswegen wollte ich fragen ob ich was uebersehen habe und ihr vielleicht ein Tool kennt, dass kann was ich will?

Ich will am liebsten auf .java Datei-Ebene bzw. von mir aus auch auf .class Ebene nicht nur Klassen entfernen sondern sogar innerhalb von Klassen Code entfernen.

Nicht benoetigte statische und Member-Methoden, Konstanten, Felder, Importe, usw.

Wenn sowas moeglich waere, waeren die Einsparungen wirklich sehr viel hoeher. Im Moment wird naemlich wenn eine Klasse gebraucht wird, alle Klassen die diese wiederum importiert auch wieder behalten. Auch wenn diese Klassen eigentlich gar nicht direkt aufgerufen werden. Oder taeusche ich mich da?
 
Also wenn ich dich richtig verstehe, würde sowas irgendwann zwangsläufig nach hinten losgehen. Was ist wenn du Code später erweitern willst, andere damit arbeiten etc. Auf einmal tauchen Abhängigkeiten auf die nicht mehr implementierbar sind. Aber vielleicht verstehe ich dich auch falsch?
 
Nein. Du verstehst mich richtig.

Fuer mich hat das rein wissenschaftliche Gruende. Um jetzt jedes Detail genau zu erklaeren muesste ich extrem weit ausholen.
 
Du kannst natürlich den Code der externen Abhängigkeiten 1:1 kopieren und nach Belieben abspecken. Du musst nur aufpassen, wie die Lizenzbestimmungen aussehen, falls du deine Ergebnisse veröffentlichst.
 
Ich will das automatisch machen. Nicht per Hand 🙂

Und wie gesagt will ich auch Klasseninterna die nicht gebraucht werden rauswerfen!

Am liebsten auf Source-Code-Ebene. Klassen-Ebene zur Not.
 
Idee: Du kannst nach dem Kopieren des Third-Party-Codes auf diesen ein automatisches Entfernen von unbenutztem Code loslassen. Wichtig ist, dass dieses Entfernen alles inklusive der Public-API erfassen muss, egal ob Methoden oder Attribute, und nicht nur private/protected-Zeug.

Für konkrete Tools einfach mal googeln, z.B. refactoring - How to find unused/dead code in java projects - Stack Overflow -- da scheint es wohl einiges zu geben. Selbst kann ich dir keine Tools empfehlen, da ich das bis jetzt noch nie gebraucht habe.
 
Ja, dependency analyzer/remover auf .class Ebene habe ich auch zu hauf gefunden mit Google. Es handelt sich uebrigens nicht um Third-Party code. Hatte ich das gesagt?

Mir geht es wie oben darum, dass:

1. auch Teile (Methoden, Konstanten, Importe, usw.) von Klassen entfernt werden. All die Tools die ich gefunden habe entfernen ganze Klassen. Die Klasse selbst wird nicht entmuellt.

2. das Sahnehaeubchen falls es geht: das Tool sollte auf Source-Code Ebene arbeiten. Alle Tools die ich gefunden habe arbeiten auf .class Ebene. Allerdings wuerde ich mich damit auch zufrieden geben wenn Punkt 1 wenigstens erfuellt wuerde.
 
Keine Ahnung ob wir von den gleichen Tools reden. Alles was ich an Refactorings, CleanUp-Actions und Analysetools kenne arbeitet auf dem Source und Bestandteilen einer Klasse und macht nicht irgendwelche Bytecode-Manipulationen oder kann nur Klassen löschen. Auch die verlinkten Tools bilden da keine Ausnahme.
 

Zurück
Oben