# Internationalisierung Metrik



## Scion (14. Okt 2011)

Grüße!

Ich internationalisiere grad eine Software für deutsch und englisch.
Es gibt also keine "hardcoded Strings" mehr im Quelltext sondern nur noch die Verweise auf die Properties, welche dann den deutschen oder englischen String an der jeweiligen Stelle ausgeben.

Da es mehrere Entwickler gibt die an der Software arbeiten, wird das ganze über ein SVN Repository zusammengefügt. Soweit, so gut...

Jedenfalls möchte ich gern eine Metrik entwickeln, die beim zurückspielen ins SVN die jenige Zeile im Quelltext anmeckert an der ein fester String eingebunden ist und nicht der Verweis auf die Propertyfiles, damit man nicht später wieder alle "setText("x")" suchen darf. Ich möchte also, dass jeder neue String aus den Sprachproperties kommt und wenn nicht soll diejenige Zeile markiert und angemeckert werden!

Kann mir dazu jemand ein Plugin (Eclipse) oder ähnliches empfehlen, mit den ich das realiseren kann?
Habe schon Metrics und Google AnalytixPro ausprobiert, allerding hab ich da keine Möglichkeit gefunden, selber Metriken zu schreiben.

Vielleicht kennt sich ja jemand aus und kann mir helfen


----------



## nillehammer (14. Okt 2011)

Dafür würde ich Checkstyle empfehlen. Das hat schon in der Default Einstellung Style-Regeln für magic numbers/strings (also solche, die einfach so als Konstanten im Quelltext auftauchen). Die einzige Schwierigkeit, die ich da noch sehe ist die, dass die Keys für die Properties ja auch Strings sind. Wie diese von den anderen unterschieden werden sollen, hab ich jetzt noch keine Idee.

Checkstyle gibt's als plugin für Eclipse und für Maven. Das wären die Stellen, wo man es normalerweise einbauen würde. Als Commit-Hook für SVN hab ich das noch nicht gesehen.


----------



## Scion (14. Okt 2011)

Danke schonmal!

Vielleicht könnte man sie an der Methode unterscheiden. Die festen Strings werden ja mit setText gebildet und die aus der Property mit getString.

Ich werd mir dieses Checkstyle demnächst mal anschauen!


----------



## Wildcard (15. Okt 2011)

Die einfachste Variante ist in Eclipse die 'Non-externalized Strings' Warning einzuschalten.


----------



## Scion (17. Okt 2011)

@Wildcard:
Danke, aber es hilft mir leider nicht weiter, wenn alles markiert wird, was zwischen 2 Anführungszeichen steht, da diese an manchen stellen stehen müssen.

@nillehammer: 
Checkstyle könnte eine gute Lösung sein, habe jetzt ein bisschen dran rumprobiert jedoch noch keine Konfiguration gefunden die mir wirklich hilft. Immerhin soetwas, dass beide (US-DE) Propertys verglichen werden und gesagt wird welche Übersetzungen noch helfen. Schonmal hilfreich aber hast du noch ein Tip welche Konfiguration(oder Modul) für mein eigentliches Anliegen hilft? Vordefiniert ist es jedenfalls nicht, hab den "Descendent Token Check" gefunden, allerdings komm ich auf den Einstellungen nicht ganz klar.


----------



## Wildcard (17. Okt 2011)

> @Wildcard:
> Danke, aber es hilft mir leider nicht weiter, wenn alles markiert wird, was zwischen 2 Anführungszeichen steht, da diese an manchen stellen stehen müssen.


Doch das hilft dir weiter. Alles was ein String, aber kein externalisierbarer String ist, wird mit NON-NLS Markern versehen und dann gibt es auch keine Warnings. Der Eclipse Externalisierungswizard macht das automatisch,


----------



## Scion (19. Okt 2011)

@Wildcard: Ok, seh ich ein. Bin trotzdem eher für die Umsetzung mit Checkstyle.


Bin jetzt ein Schritt weiter bzgl. Checkstyle. Kann mir jemand sagen wo ich an die einzelnen Tests als Java Klassen rankomme? Installiert sind bis jetzt nur xml Schemas und Propertiefiles dazu. Beides ziemlich undurchsichtig, was denn nun eigentlich passiert und wenn ich die Tests nach meinen Ansprüchen verändern will bringen mir die XML Datein wahrscheinlich auch nicht viel. Oder etwa doch ?


----------



## Scion (24. Okt 2011)

Die Lösung ist übrigens eine RegularExpression in Checkstyle, für die Leute die später noch auf diesen Thread stoßen werden  Die muss dann nur noch auf den eigenen Quelltext angepasst werden, was jeder hinkriegen sollte. Dann werden die betroffenen Zeilen als Error/Warning im Eclipse angezeigt. Checkstyle kann man dann auch als Ant-Task einbinden.


----------

