IntelliJ IDEA 2018.1 erweitert die integrierte Codeanalyse

Die Entwicklungsumgebung erkennt unter anderem potenzielle Programmierfehler in Schleifen und Bedingungen. Außerdem gibt es Erweiterungen im Umgang mit dem Stacktrace des Debuggers und für Unit-Tests mit JUnit 5.

 –  14 Kommentare
IntelliJ IDEA 2018.1 bringt zahlreiche Hilfen

Der tschechische Toolhersteller JetBrains hat im Zuge der Aktualisierungen der Entwicklungsumgebungen kurz nach WebStorm nun auch das Flaggschiffprodukt IntelliJ IDEA in der Version 2018.1 herausgegeben. Die wie üblich zahlreichen Neuerungen konzentrieren sich vor allem auf Hilfen bei der Analyse und der Eingabe von Code.

Die Datenflussanalyse bezieht nun auch Ausdrücke mit < und > ein, um zu erkennen, ob Bedingungen mit entsprechenden Vergleichen in allen Durchläufen entweder true oder false ergeben. Außerdem erkennt der Editor nun unendliche Streams und warnt beim Versuch, Änderungen in immutable Collections beispielsweise mit add zum Hinzufügen von Elementen vorzunehmen. Für Streams hat das Team die Autovervollständigung verbessert, die nun auch Typecasts berücksichtigt.

In dem Codeausschnitt ergibt die Bedingung aufgrund der Schleife immer true, (Bild: JetBrains)

Für beispielsweise mit while (true) gestartete und somit eigentlich endlose Schleifen, die einen break-Befehl enthalten, schlägt der Editor vor, die dort angegebene Abbruchbedingungen in den Schleifenkopf zu übernehmen. Auch idempotente Schleifenkörper, die bei jedem Durchlauf dasselbe Ergebnis liefern, erkennt IntelliJ als potenzielle Fehlerquelle.

Einige Hilfen beziehen sich speziell auf Java 9. So erkennt die IDE, wenn eine über den ServiceLoader geladene Klasse nicht in module-info.java angegeben ist und fügt den Eintrag auf Wunsch ein. Außerdem kann der Editor Klassen erstellen, die in der module-info.java angegeben sind, aber nicht existieren.

Im Zusammenspiel mit dem Unit-Testwerkzeug JUnit 5 berücksichtigt IntelliJ IDEA nun die @Tag-Annotation, sodass Tester die entsprechend annotierten Klassen und Methoden in den Test-Scope einbeziehen können. Im Debugger können Entwickler nun über Run | Throw Exception manuell eine Exception auslösen.

Außerdem bietet der Debugger die Möglichkeit, den Stacktrace an Breakpoints auf die Konsole auszugeben. Entwickler können den Stacktrace zudem neuerdings kopieren. Neu sind die Annotationen @Async.Schedule und @Async.Execute für asynchrone Stacktraces.

Exceptions lassen sich manuell werfen. (Bild: JetBrains)

Der Editor hilft nun beim Auffinden von Fehlern oder Warnungen in ausgeblendeten (folded) Codeblöcken, indem er die entsprechenden Regionen hervorhebt. Dasselbe gilt für das Anzeigen von Suchergebnissen, die sich in Folded Code befinden.

Android-Entwickler finden nun alle Änderungen von Android Studio 3.0, das wiederum auf IntellliJ IDEA basiert. Die Version 3.0 ist zwar nicht mehr ganz aktuell, da nahezu zeitgleich mit dem aktuellen Release von IntelliJ IDEA Android Studio 3.1 erschienen ist, aber Letzteres enthält weniger relevante Ergänzungen als die jüngste Hauptversion. Interessante Neuerungen im Android-Bereich sind unter anderem der verbesserte Layout-Editor und die Möglichkeit, Instant Apps zu erstellen.

Für Kotlin ist nun die Anfang März veröffentlichte Version 1.2.30 der JVM-Sprache enthalten. Außerdem lässt sich nun Kotlin-Code im Project Tool Windows direkt in Pakete einfügen, und die IDE erstellt dabei die benötigte Kotlin-Datei. Scala-Entwickler finden eine verbesserte Structure View, die unter anderem die Zugriffsmodifikatoren sowie als final und abstract bezeichnete Elemente einbezieht.

Die Structure View für Scala ist nun übersichtlicher und bezieht Zugriffsmodifikatoren ein. (Bild: JetBrains)

Weitere Neuerungen wie die Ergänzungen in den Docker- und Kubernetes-Plug-ins lassen sich dem JetBrains-Blog entnehmen. Die offizielle Ankündigungsseite enthält eine umfassende Übersicht der Funktionen von IntelliJ IDEA 2018.1. Sowohl die kostenlose Community- als auch die kommerzielle Ultimate-Edition der Entwicklungsumgebung stehen zum Herunterladen bereit. Die Community-Edition bietet weniger Funktionen, lässt sich aber zum Entwickeln von Code in Kotlin, Groovy und Scala ebenso verwenden wie für Java. Die Java-EE- und Spring-Funktionen, Hilfen beim Editieren von JavaScript- und TypeScript-Code sowie die Datenbankwerkzeuge sind Nutzern der Ultimate-Version vorbehalten. (rme)