Frage

Ich habe eine ziemlich große Anzahl von Quelldateien, die ich brauche alle Stringliterale zu analysieren und extrahieren und sie als Spiel alte Java-Konstante in einer Datei speichern,.
Für exemple:

Label l = new Label("Cat");

Würde werden:

Label l = new Label(Constants.CAT);

Und in Constants.java hätte ich:

public final static String CAT = "Cat";

Ich will nicht die Saiten in einer Eigenschaft Textdatei externalisiert werden.
Ein Grund dafür ist die Konsistenz und die Lesbarkeit des Codes.
Die andere ist, dass unser Client-Code verwendet GWT, die nicht Java-Eigenschaft Textdatei Mechanismus unterstützt.

konnte ich eine Art Parser schreiben (mit Ant-Task ersetzen vielleicht)?
Aber ich fragte mich, ob ein IDE schon tut diese Art der Sache automatisch.

War es hilfreich?

Lösung

Peter Kelley Antwort abzuschließen, könnte man für Eclipse IDE betrachten die AST Lösung.

Sie könnten dann ein AST-Programm schreiben, das den Quellcode analysieren und das tut, was Sie wollen.

Ein vollständiges Beispiel ist in diesem Ecke eclipse Artikel , auch weitere Details in der eclipse Hilfe .
Und Sie können einige Beispiele in Listing 5 des Abschnitts „Die Umsetzung der in-place-Übersetzung "von Automatisieren der Einbettung von domänenspezifischen Sprachen in Eclipse JDT neben mehr Beispiele in GitHub Projekten .

Andere Tipps

Eklipse dies automatisch tut. Rechtsklick auf die Datei, wählen Sie „Quelle“, dann „Externalize strings“

Das ist genau das nicht tun, was Sie aufgefordert (die Saiten in einer Constants.java Datei als Strings mit), aber die Methode ist sehr mächtig in der Tat. Es verschiebt sie in eine Eigenschaftendatei, die dynamisch auf die je nach der Region geladen werden kann. sie in einer separaten Java-Quelldatei, wie Sie vorschlagen, bedeutet, dass Sie entweder alle Sprachen in Ihrer Anwendung auf einmal haben werden, oder Sie werden verschiedene Anwendungen versenden je nach Region.

Wir verwenden es für unsere Anwendungen, bei denen auch die grundlegenden Dinge in Englisch und Japanisch zu versenden haben - unser komplizierteren Anwendungen Schiff mit 12 Sprachen - wir nicht ein kleines Software-Entwicklungsunternehmen mit irgendwelchen Mitteln sind: -).

Wenn Sie tun will, dass sie in einer Java-Datei trotz der Mängel bereits erwähnt, ist es viel einfacher ist, ein Programm schreiben die Eigenschaften-Datei in eine Java-Quelldatei morphen, als es ist, zu versuchen und extrahieren Sie die Saiten von Freiform-Java-Quelle.

Alles, was Sie dann tun müssen, ist die Accessor-Klasse zu ändern, um die in-built-Strings zu verwenden (in der eigenen Klasse), anstatt sie zur Laufzeit geladen werden.

Es gibt einige gute Gründe, warum Sie würde nicht wollen, dies zu tun. Abgesehen von der Tatsache, dass eine solche erzeugte Datei (ich nicht über die Eclipse-Funktion wusste) nicht zwischen Strings zu unterscheiden gehen, die Sie einstellen, zum Beispiel als Konstruktor args in Testklassen und Dingen, die Sie wirklich haben, wie Konstanten, ist das größere Problem, dass alle Ihrer öffentlichen statischen Finale werden in den Klassen erstellt werden, und wenn Sie die Klassen Verhalten ändern mögen, müssen Sie nicht nur die Klasse ändern, müssen die Konstanten, aber alles halten, die es verweist.

ich voll bestätigen, was Pax Diablo sagte. Wir verwenden diese Funktion auch.

Wenn Sie auf eine Klassendatei angewendet wird die Funktion „Strings Externalize“ zwei Dateien erstellen wird, eine Klasse Messages.class und eine Eigenschaftendatei messages.properties. Dann wird es alle direkten Verwendungen von Stringliterale zu einem Aufruf an Messages.get (String key) umleiten und den Schlüssel verwenden Sie für die Zeichenfolge eingegeben im „Ext. String“ Assistenten.

BTW: Was ist Eigentum Dateien so schlecht ist? Wie er sagte, können Sie einfach die Eigenschaften Datei ändern und müssen nicht die Klasse ändern, wenn Sie den Text ändern.

Ein weiterer Vorteil ist diese: Die Art und Weise, die Zeichenfolgenliterale in eine Property-Datei zu extrahieren lassen Sie die Ausgangssprache in jeder gewünschten Sprache zu übersetzen, ohne Code zu modifizieren . Die Eigenschaften Datei-Loader lädt die Zielsprachdatei automatisch durch die entsprechende Datei mit der Sprache ISO-Code. So müssen Sie nicht über die Plattform Sorge Code läuft auf, wird es die entsprechende Sprache (fast) automatisch auswählen. Siehe Dokumentation der Klasse Resource wie dies im Detail funktioniert.

Sie können die Jackpot Quelle Transformations-Engine in NetBeans überprüfen, die Sie erlauben würden Skript Ihrer Quelle-Transformationen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top