PatternTesting Check (patterntesting-check) ist ein Framework, dass die automatische Überprüfung von Architektur- und Design-Empfehlungen ermöglicht. Es erkennt eine Reihe bekannter Anti-Patterns (wie z.B. die Verwendung von System.out für's Logging), unterstützt aber auch das Testen.
2002 war PatternTesting Check der Ausgangspunkt der gesamten PatternTesting-Komponenten. Es war (und ist) einer der ersten AspectJ-Bibliotheken, das einige bekannte Anti-Patterns für Java erkennt. Einige der Prüfungen wie die System.out- oder System.err-Erkennung finden während der Compilierung statt, andere Überprüfungen wie die Aufdeckung von Null-Übergabe von Argumenten finden während der Laufzeit (Runtime) statt.
Seit 2009 wurde PatternTesting Check aufgeteilt in:
Gründe für die Aufteilungen waren vor allem Performance-Probleme mit Eclipse 3.3. Die inkrementelle Compilierung dieser Version ist über 30 Mal langsamer als in Eclipse 3.4. Daher wurde der statische Teil (Check.CT) als eigene Komponente herausgezogen. Der interessantere Teil ist allerdings der Runtime-Teil. Nun kann man wählen, ob man nur den Runtime-Teil verwenden will oder beide.
Verwende mindestens Eclipse 3.4 - es ist um Längen schneller als Eclipse 3.3 (siehe Performance Boost with Eclise 3.4 / AJDT 1.6.3).
Einige der statischen Überprüfungen kann auch von anderen
Tools wie
FindBugs oder
PMD
durchgeführt werden.
Der Vorteil von PatternTesting Check.CT ist hier, dass es Teil des
Compilier-Vorganges ist - der Benutzer sieht also die Warnung unmittelbar.
Nachteil: der Compile-Prozess wird dadurch etwas langsamer.
Ein einfaches Hello-World-Beispiel (noch mit PatternTesting 0.6) findet sich in Oli's Blog.
Ein aktuelles Hello-World-Beispiel für PatternTesting ist im PatternTesting Wiki dokumentiert.
Weitere Beispiele finden sich in PatternTesting-Samples.