IntelliJ IDEA - Die bessere Java IDE I kommerzielle Java IDE seit 2001 I Aufteilung in Open Source Community Edition und kommerzielle Ultimate Edition in 2009 I Verschiedene spezialisierte Ableger (PhpStorm, WebStorm, PyCharm, ...) I AndroidStudio (Google’s neue Android IDE) basiert auf IDEA 1/9 IntelliJ Idea - Features Features I Language Support (Scala, Ruby, Python, Bash, PHP, ...) I Framework Support (JSF, Spring, AngularJS, Play, ...) I Database Tools (DB Editor, SQL Support) I VCS Integration für alle populären VCS Systeme I Sehr gute Dokumentation für die gesamte IDE I Keymaps (Eclipse, Visual Studio, Net Beans, ...) für die gewohnten Hotkeys 2/9 IntelliJ IDEA - Die bessere Java IDE Woher I An den Uni Rechnern installiert (starten mit idea) I Academic License über Herrn Schießl (R 125 IM) erhältlich Wo anfangen I IntelliJ IDEA Getting Started http://www.jetbrains.com/idea/documentation/ index.jsp I IntelliJ IDEA Q&A for Eclipse Users http://www.jetbrains.com/idea/documentation/ migration_faq.html 3/9 QAPlug I Plugin für IntelliJ IDEA zur Codeanalyse I Hilft Fehler / schlechten Code zur Entwicklungszeit zu finden I Fasst Meldungen von PMD, FindBugs, Checkstyle, Hammurapi zusammen* I Jedes Tool hat besondere Stärken und Schwächen I Aber ist kein Allheilmittel für schlechten Code 4/9 QAPlug Woher & Was I Beinhaltet folgende Komponenten I I I I PMD http://pmd.sourceforge.net/ - Findet primär ineffizienten/toten/doppelten Code FindBugs http://findbugs.sourceforge.net/ - Sucht nach bekannten Fehlermustern Checkstyle http://checkstyle.sourceforge.net/ Prüft Programmierstil Hammurapi http://www.hammurapi.biz - Identifiziert Probleme und übliche Fehler I Fazit: Sehr mächtiges Tool um Fehler zu finden I Für eclipse müssen die Tools einzeln installiert werden 5/9 PMD I I Basiert auf einem statischen Regelwerk Findet unter anderem folgende Probleme I I I I I Mögliche Bugs (z.B. leere Blöcke in try,catch, switch, ...) Toter Code (nicht genutzte Variablen) Schlechter Code (z.B. Stringkonkatenationen, statt Buffer) Verkomplizierter Code (for-Schleifen, die auch durch while könnten) Doppelter Code 6/9 FindBugs I Findet Probleme durch statische Codeanalyse im Bytecode I Fehlerklassen: scariest, scary, troubling, of concern Beispiele für gefundene Probleme I I I I I I Ungültiger Syntax in regulären Ausdrücken Assertion in run()-Methode wird von JUnit nicht erkannt Mögliche Nullpointer-Dereferenzierung Fehlerhafter Cast Lesen von Null aus nicht geschriebenen Variablen 7/9 Checkstyle I Bekannt aus ProgII I Manchmal nervig, aber dennoch notwendig Markiert den schlechten Umgang mit: I I I I I I JavaDoc Einhaltung von Metriken Codestil (Zeilenlänge, Nameingconventions) Verwendung von Imports Codekomplexität 8/9 Hammurapi I Analyse des Quelltextes I Idee: QA für Outsourcing-Projekte hebt unter anderem folgende Probleme hervor: I I I I I I Vergleich von Objekten mit == statt equals Exceptionketten (Exceptions werden umgelabelt) innere Klassen sollten private sein Unnötiger Verwendung eines cast oder instanceof Loggen von Fehlern mit System.out oder System.err 9/9