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 (, 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