Crap4J - Wer hat Erfahrungen damit?

CurlyConny

Mitglied
Hallo!

Wer von euch hat denn schon Erfahrungen mit Crap4J und kann mir etwas über die Funktionsweise sagen. Wie und woran erkennt es "schlechten" Code und welche Lösungsmöglichkeiten gibt es, damit der Code nicht mehr als "schlecht "gefunden wird?

Vielen Dank und Grüße
Conny
 
Hallo,

schau mal hier:
http://it-republik.de/jaxenter/news/Crap4J-findet-schlechten-Code-038981.html

Im aktuellen Java Magazin 3/08 findet sich ein Artikel über Crap4J. Crap4J "bewertet" den Source Code anhand von Metriken. Diese Metriken sind u.a. durch ein Komplexitätsmaß (welches genau das ist muß man in der Doku nachschauen) beispielsweise McCabe Complexity / Cyclomatic Comlexity ( http://en.wikipedia.org/wiki/Cyclomatic_complexity ) oder Testabdeckung des Codes (Test Coverage). Aus diesen Metriken errechnet Crap4J eine Gesamtmetrik die dann als Maßzahl für die Codequalität gedacht ist.

"Verbessern" kann man die Maßzahl u.a. durch eine hohe Testcoverage (also fliessig (Unit/Integrations)Tests schreiben und Methoden einfach halten. Große komplexe Methoden vermeiden und gegebenenfalls in mehrere kleine einfache Methoden aufsplitten. Max 15 - 20 Zeilen pro Methode ist ein guter Richtwert. Das darf dann natürlich nicht in Klassen mit 1000+ Methoden aussarten. Hier muss man dann Vererbung und Polymorphismus geschickt ausnutzen.

Dann braucht man bei einem Codereview auch keine Angst vor Crap4J haben ;-)

Gruß Tom
 
Probiers doch einfach aus ;). Das Ding ist einfach nen Mashup aus JDepend und Emma, also Abhängigkeitsanalyse und Testcoverage. Das Grundprinzip ist folgendes:

Code wird auf Abhängigkeiten hin untersucht. Danach wird die Testabdeckung analysiert und ein Ranking erstellt. Dabei geht man davon aus, das Klassen die viele eingehende Dependencies haben vermehr getestet werden sollen, da diese sehr "stabil" (Definition aus Martin Metrics) sind und diese dadurch "wichtige Klassen" sind in denen potientielle Fehler sehr weitreichende Auswirkungen haben können. (Ich glaub, das sollte so oder ähnlich allerdings auch auf der Webseite stehen ;)

Was sagt uns das?

Nun, vorallem kann man das Tool als Guideline sehen wo man fehlendende Tests hinzufügt, worauf man den Fokus beim Testen legt. 100% Coverage ist Utopie. Desweiteren ist so eine Gewichtung auch immer ein Entdecker für Codesmells. Gibt es Klassen die von überall benutzt werden (Godclasses)? Bei sowas überdenkt man dann evtl das Design nochmal. Diesen Hint geben allerdings auch schon reine Dependencyanalyser.

Ich finds hilfreich, als Guideline. Man sollte sich jedoch nicht auf Gedeih und Verderb an solche Tools hängen.

Gruß
Ollie
 
Hallo!

Vielen Dank erstmal für die Antworten.
Nun würde ich gerne noch wissen, ob es auch ein Tool gibt, das die gefundenen Fehler (wie z.B. fehlende geschweifte Klammern bei if-Abfragen etc.) automatisch behebt?

Danke und Grüße
Conny
 
Zurück