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 fur¨ alle popul¨aren VCS Systeme
I Sehr gute Dokumentation fur¨ die gesamte IDE
I Keymaps (Eclipse, Visual Studio, Net Beans, ...) fur¨ die gewohnten Hotkeys
2/9 IntelliJ IDEA - Die bessere Java IDE
Woher
I An den Uni Rechnern installiert (starten mit idea)
I Academic License uber¨ Herrn Schießl (R 125 IM) erh¨altlich
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 fur¨ 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¨arken und Schw¨achen
I Aber ist kein Allheilmittel fur¨ schlechten Code
4/9 QAPlug
Woher & Was I Beinhaltet folgende Komponenten
I PMD http://pmd.sourceforge.net/ - Findet prim¨ar ineffizienten/toten/doppelten Code I FindBugs http://findbugs.sourceforge.net/ - Sucht nach bekannten Fehlermustern I Checkstyle http://checkstyle.sourceforge.net/ - Pruft¨ Programmierstil I Hammurapi http://www.hammurapi.biz - Identifiziert Probleme und ubliche¨ Fehler
I Fazit: Sehr m¨achtiges Tool um Fehler zu finden
I Fur¨ eclipse mussen¨ die Tools einzeln installiert werden
5/9 PMD
I Basiert auf einem statischen Regelwerk I Findet unter anderem folgende Probleme
I M¨ogliche Bugs (z.B. leere Bl¨ocke in try,catch, switch, ...) I Toter Code (nicht genutzte Variablen) I Schlechter Code (z.B. Stringkonkatenationen, statt Buffer) I Verkomplizierter Code (for-Schleifen, die auch durch while k¨onnten) I Doppelter Code
6/9 FindBugs
I Findet Probleme durch statische Codeanalyse im Bytecode
I Fehlerklassen: scariest, scary, troubling, of concern I Beispiele fur¨ gefundene Probleme
I Ungultiger¨ Syntax in regul¨aren Ausdrucken¨ I Assertion in run()-Methode wird von JUnit nicht erkannt I M¨ogliche Nullpointer-Dereferenzierung I Fehlerhafter Cast I Lesen von Null aus nicht geschriebenen Variablen
7/9 Checkstyle
I Bekannt aus ProgII
I Manchmal nervig, aber dennoch notwendig I Markiert den schlechten Umgang mit:
I JavaDoc I Einhaltung von Metriken I Codestil (Zeilenl¨ange, Nameingconventions) I Verwendung von Imports I Codekomplexit¨at
8/9 Hammurapi
I Analyse des Quelltextes
I Idee: QA fur¨ Outsourcing-Projekte I hebt unter anderem folgende Probleme hervor:
I Vergleich von Objekten mit == statt equals I Exceptionketten (Exceptions werden umgelabelt) I innere Klassen sollten private sein I Unn¨otiger Verwendung eines cast oder instanceof I Loggen von Fehlern mit System.out oder System.err
9/9