Neuerungen in IntelliJ IDEA 2019.1

Designs

Individualisierung von Designs

Wir haben aufregende Neuigkeiten für Sie! IntelliJ IDEA 2019.1 bietet offizielle Unterstützung für benutzerdefinierte Designs! Jetzt können Sie ganz einfach Ihr eigenes Design erstellen! Mehr erfahren.

Wir haben ein paar brandneue Designs entworfen, um Ihnen den Einstieg zu erleichtern. Gestalten Sie Ihre IDE im Handumdrehen bunter, indem Sie eines der neuen Designs herunterladen und in den Appearance-Einstellungen auswählen! Mehr erfahren.

Java

Unterstützung für Switch-Ausdrücke in Java 12 (Preview)

IntelliJ IDEA 2019.1 unterstützt Switch-Ausdrücke gemäß JEP 325 in der Java 12 Preview.

Wir haben eine Reihe neuer Inspektionen und Quick-Fixes, um Ihnen den Einstieg zu erleichtern. Die IDE kann alle switch-Anweisungen erkennen, die durch eine erweiterte switch-Anweisung oder einen erweiterten switch-Ausdruck ersetzt werden können, und bietet einen Quick-Fix zum Konvertieren an. Die IDE erkennt außerdem duplizierte switch-Branches und bietet einen Quick-Fix an, um sie zusammenzuführen. Und das ist nur die Spitze des Eisbergs.

Weitere Informationen

Verbesserte Extract Variable-Refaktorierung

Die Refaktorierung "Extract Variable" wurde erheblich verbessert und bewahrt die Semantik jetzt noch besser als zuvor. Die IDE kann sogar aus dem Feldinitialisierer Variablen extrahieren, und die Refaktorierung zum Extrahieren von Variablen kann einen ternären Ausdruck automatisch in ein "if" konvertieren, wenn die Bedingung wichtig ist. Die Bedingung wird als wichtig angesehen, wenn sie eine Nullprüfung oder eine "instanceof"-Prüfung enthält.

Präzise Hervorhebung von Warnungen in ternären Ausdrücken

IntelliJ IDEA 2019.1 sorgt für eine genauere Hervorhebung von Warnungen für ternäre Ausdrücke. Es wird nur die Bedingung hervorgehoben, in der eine Nullability-Verletzung festgestellt wurde (in der Vorversion wurde der gesamte ternäre Ausdruck hervorgehoben, selbst wenn die Nullability-Verletzung nur einen einzelnen Branch betraf).

Dank dieser neuen Funktion wird die Hervorhebung auch in Switch-Ausdrücken präziser.

Verbesserte Analyse mathematischer Operationen

Die Datenflussanalyse kann das Ergebnis mathematischer Operationen verfolgen und verwendet diese Informationen, um Sie vor Bedingungen zu warnen, die immer wahr oder falsch sind. Wir haben die Analyse vieler mathematischer Operationen verbessert, einschließlich Multiplikation, Modulo und bitweise Operationen.

Inferenz der Konstruktor-Reinheit aus Quellen

IntelliJ IDEA 2019.1 verbessert die Unterstützung für @Contract-Annotationen. Es kann nun automatisch die Reinheit von Konstruktoren aus Quellen ableiten.

Navigation vom Java-Stack-Trace zur entsprechenden Position innerhalb einer Zeile

Wenn Sie auf den Java-Stack-Trace klicken, versucht die IDE, die genaue Position in der Zeile zu ermitteln, zu der der Cursor bewegt werden soll. Bisher gelangten Sie nur zur ersten Spalte der entsprechenden Zeile.

Erkennung von duplizierten Switch-Branches

Die IDE kann jetzt duplizierte Switch-Branches erkennen und bietet einen Quick-Fix zum Zusammenführen solcher Branches an.

Gradle

Das Delegieren von Build- und Run-Aktionen an Gradle kann für jedes Gradle-Projekt einzeln eingestellt werden

Es ist jetzt möglich, Build- und Run-Aktionen für jedes Projekt einzeln an Gradle zu delegieren. Konfigurieren Sie diese Option für jedes Gradle-Projekt einzeln, wenn Ihr IntelliJ IDEA-Projekt aus mehreren Gradle-Projekten besteht. Sie können sogar unterschiedliche Werte für den Test- und den Anwendungs-Runner in demselben Projekt festlegen.

In IntelliJ IDEA 2019.1 werden die Build- und Run-Aktionen für neue Gradle-Projekte standardmäßig an Gradle delegiert.

Korrekte Auswahl des Gradle-Test-Tasks beim Ausführen aus dem Editor

Mit IntelliJ IDEA 2019.1 haben wir die Unterstützung für Projekte mit mehreren Gradle-Source-Sets verbessert, bei denen die Testausführung an Gradle delegiert wird. Die IDE löst nun korrekt auf, welche Aufgabe ausgeführt werden soll, wenn ein bestimmter Test ausgeführt wurde. Bei mehreren Optionen bietet die IDE eine Liste aller Aufgaben an, die für den ausgewählten Test ausgeführt werden können.

HotSwap funktioniert, wenn Build-Aktionen an Gradle oder Maven delegiert werden

Wenn die Build-Aktionen an Gradle delegiert sind, wird HotSwap beim Debuggen ausgelöst und beim Erstellen eines Builds für ein Projekt werden die Klassen neu geladen.

HotSwap funktioniert auch, wenn Build-Aktionen an Maven delegiert werden.

Maven

Maven-Build-Ausgabe im Build-Toolfenster angezeigt

Der Einfachheit halber wird jetzt die gesamte Maven-Build-Ausgabe an einer einzigen Stelle angezeigt – im Build-Toolfenster. Es ist nicht mehr erforderlich, die Fenster Run oder Messages zu prüfen. Sie können die Ansicht auch umschalten und die Build-Ausgabe als Protokoll anzeigen.

Verbesserte Maven-Diagramme

Die Maven-Diagramme wurden verbessert und um neue Optionen erweitert. Sie können Konflikte und duplizierte Abhängigkeiten leicht finden, indem Sie "Show Conflicts/Duplicates" verwenden. Um alle Pfade zum Knoten anzuzeigen, klicken Sie auf "Show Paths: Root -> Selection".

Wenn Sie nur die Abhängigkeiten eines Knotens anzeigen möchten, wählen Sie "‘Show Neighbors of Selected Nodes" aus. Das Diagramm lässt sich jetzt auch in eine randlose Ansicht umschalten.

Versionsverwaltung

Fixup- und Squash-Aktionen zum VCS-Protokoll hinzugefügt

Rufen Sie im Kontextmenü der Registerkarte "VCS Log" die Aktionen "Fixup" und "Squash" auf, und diese Aktionen erstellen Commits mit den richtigen fixup! sind damit schnell erledigt.

Herauspicken bestimmter Dateien direkt aus dem VCS-Protokoll

Mit IntelliJ IDEA 2019.1 können Sie jetzt einzelne Dateien aus dem Commit auswählen, während Sie sich im VCS-Protokoll befinden. Rufen Sie einfach das Kontextmenü auf und wählen Sie die Option "Apply Selected Changes" aus.

Anzeige eingehender/ausgehender Commits

Im Popup „Branches“ kann jetzt optional die Verfügbarkeit von ein- und ausgehenden Commits für die einzelnen Codebranches angezeigt werden. Dazu müssen Sie unter "Preferences/Settings | Version Control | Git" die Option "‘Mark Branches that have incoming/outgoing commits in the Branches popup" aktivieren.

Gelöschte abgelegte Dateien können wiederhergestellt werden

Sie können jetzt alle kürzlich gelöschten Dateien anzeigen und nützliche abgelegte („shelved“) Dateien wiederherstellen. Verwenden Sie einfach auf der Registerkarte "Shelf" des VCS-Toolfensters den neuen Knoten "Recently Deleted".

Neues Kontrollkästchen "Uncheck all" für partielle Git-Commits

Zur Vereinfachung haben wir im Dialogfenster "Commit Changes" dem Bereich "Diff" ein neues Kontrollkästchen "Uncheck all" hinzugefügt, sodass Sie jetzt alle Codeabschnitte auf einmal deaktivieren können.

Modus zum Anzeigen der Initialen des Autors für VCS-Anmerkungen

Sie können jetzt die Initialen des Autors anstelle seines vollständigen Namens in den VCS-Anmerkungen anzeigen. Klicken Sie mit der rechten Maustaste auf die Annotation-Registerkarte und wählen Sie "View | Names | Initials" im Kontextmenü aus.

Differenz

Hinzufügen von Dateiinhalten zum leeren Diff-Fenster durch Ziehen und Ablegen

Es ist jetzt möglich, Text in ein leeres Diff-Fenster zu kopieren, indem Sie eine Datei darauf ziehen.

Seiten der verglichenen Dateien in der Diff-Ansicht vertauschen

Sie können jetzt die Seiten im Diff-Viewer tauschen, wenn der Viewer über "Compare two files", "Compare with clipboard" oder "Blank Diff" geöffnet wird. Zum Vertauschen von rechter und linker Datei wählen Sie einfach "Swap Sides".

Swap Sides ist auch beim Vergleich von Verzeichnissen verfügbar.

Zeichenbasierte Diff-Vorschau

Die Anzeige von Unterschieden kann jetzt auch nach Zeichen – und nicht wie früher nur nach Wörtern – erfolgen. Das kann sehr nützlich sein, wenn Ihr Quellcode Zeilen mit Zeichen aus verschiedenen Alphabeten enthält, z. B. Japanisch.

Popup für letzte Editorstellen

Lernen Sie das brandneue Navigations-Popup "Recent Locations" kennen, in dem alle kürzlich besuchten und geänderten Orte im Code angezeigt werden. Alle besuchten Orte sind in diesem Popup chronologisch angeordnet, wobei der zuletzt besuchte Ort oben und der älteste besuchte Ort unten angezeigt wird. Um das neue Popup "Recent Locations" aufzurufen, drücken Sie Cmd-Shift-E bzw. Strg+Umschalt+E.

JVM-Debugger

Unterstützung von "synchronized", "assert" und "switch" im Debugger-Evaluator

Der Debugger-Evaluator unterstützt jetzt synchronisierte Anweisungen, Assert-Ausdrücke und Switch-Anweisungen.

Prozedurschritt aus dem Codeblock im JVM-Debugger

Beim Debuggen eines Java-Projektes ist es jetzt möglich, mit einem Prozedurschritt aus dem aktuellen Block auszusteigen. Diese neue Aktion ist im Hauptmenü unter Run verfügbar.

Neue Mausbewegung "Run to mouse pointer"

Wenn Sie im Debug-Modus gern mit der Maus arbeiten, können Sie den Mauszeiger über eine Zeile bewegen, um die Zeile hervorzuheben. Wenn Sie dann auf eine Zeilennummer klicken, führt die IDE den Code bis zum Cursor aus.

Scala

Hervorhebung von for-Comprehensions

IntelliJ IDEA 2019.1 bietet erweiterte Unterstützung für for-Comprehensions, einschließlich Fehlerhervorhebung, implizite Hinweise sowie GoTo-, Kurzdefinition- und Kurzdokumentation-Aktionen.

Find Usages für implizite Definitionen

Find Usages kann jetzt für implizite Definitionen, Apply- und Unapply-Methoden, For-Comprehension-Methoden und Single Abstract Method-Typen (SAM) aufgerufen werden.

Nach Java dekompilieren

Sie können jetzt .class-Dateien in Scala nach Java dekompilieren, selbst wenn keine Quellen vorliegen.

Benutzerdefinierbare Scalafmt-Version

Mit IntelliJ IDEA v2018.2 haben wir Unterstützung für den Scalafmt-Formatierer hinzugefügt. In dieser Version haben wir diese Funktion erweitert. Mit IntelliJ IDEA können Sie nicht nur eine benutzerdefinierte Scalafmt-Version verwenden, sondern die IDE kann jetzt auch die erforderliche Version für Sie herunterladen.

Separates HOCON-Plugin

Wir haben die HOCON-Unterstützung in ein separates Repository und Plugin extrahiert, das Sie nach Bedarf installieren oder deinstallieren können.

Verbesserte Fehlerhervorhebung

In dieser Version haben wir die Fehlerhervorhebung in mehrerer Hinsicht erheblich verbessert, einschließlich:

  • Partielle Unifikation und Typvariablen-Unifikation im Allgemeinen.
  • Konstruktor-Hervorhebung, Aufrufe privater Konstruktoren.
  • Better-monadic-for-Compiler-Plugin: implicit0-Funktion.
  • Kind-projector: polymorphe Lambdas auf Wertebene.
  • Simulacrum: Typkonstruktoren mit höherer Parameteranzahl.

Groovy

Unterstützung für Lambda-Syntax im Java-Stil ab Groovy 3.0

IntelliJ IDEA 2019.1 unterstützt die Lambda-Syntax im Java-Stil – eine experimentelle Funktion von Groovy 3.0. Die IDE bietet Bearbeitungsunterstützung, einschließlich Code-Vervollständigung, Hervorhebung und Typinferenz. Die Groovy-Intentions und -Inspektionen funktionieren auch im Lambda-Code einwandfrei. Formatierung und Debugging sind für Lambdas im Java-Stil ebenfalls verfügbar.

Kotlin

Das mit der IDE mitgelieferte Kotlin-Plugin wurde auf Version 1.3.21 aktualisiert.

Live-Vorlage zum Generieren von "main" ohne Parameter

Ab Kotlin 1.3 kann die main-Funktion ohne Parameter verwendet werden. Dementsprechend können Sie mit dieser Version von IntelliJ IDEA eine main-Methode ohne Parameter mithilfe der Live-Vorlage "main" erstellen.

Beachten Sie bitte, dass mit der Standardabkürzung "main" jetzt die neue Version der main-Methode erstellt wird. Wenn Sie Argumente benötigen, verwenden Sie die Abkürzung "maina".

Verbesserungen bei der String-Konvertierung

Die Intention "Convert concatenation to template" kann jetzt die unnötigen Aufrufe von .toString() für jeden Parameter entfernen.

Neue Intention: SAM als Lambda in anonymes Objekt konvertieren

Wenn Sie ein Konstrukt, das Lambdas mit SAM verwendet, in ein anonymes Objekt konvertieren müssen, verwenden Sie diese praktische neue Intentionsaktion.

Intention-Aktion zum Verbessern von Coroutine-Code

Wenn Sie mit Coroutinen arbeiten, schlägt IntelliJ IDEA bei Funktionen, die "Deferred" zurückgeben, das Hinzufügen des Suffixes "Async" vor.

JavaScript & TypeScript

Neue Intentions für JavaScript-Destrukturierung

IntelliJ IDEA 2019.1 enthält eine Reihe neuer Refaktorierungen und Intentions, die Ihnen helfen, Destrukturierung in Ihrem JavaScript- oder TypeScript-Code zu verwenden.

Intention: Funktion mit Promise in async/await konvertieren

Sie können eine Funktion, die ein Promise zurückgibt und mit .then()- und .catch()-Aufrufen verwendet wird, automatisch in eine async-Funktion mit async/await-Syntax umwandeln. Um diesen Quick-Fix zu verwenden, drücken Sie einfach Alt+Enter auf dem Funktionsnamen und wählen Sie Convert to async function. Dies ist für TypeScript, JavaScript und Flow verfügbar.

Aktualisierte Dokumentation für CSS und HTML

Die Kurzdokumentation für CSS-Eigenschaften, HTML-Tags und -Attribute (F1 / Strg-Q) enthält jetzt eine Kurzbeschreibung aus dem MDN, einschließlich der Kompatibilität mit den gängigen Browsern.

Verbesserte JavaScript-Debugger-Konsole

Die interaktive Debugger-Konsole in den Debug-Toolfenstern für JavaScript und Node.js zeigt Objekte jetzt in einer Baumstruktur an und unterstützt das Formatieren von Protokollnachrichten mit CSS sowie das Gruppieren mit console.group() und console.groupEnd(). Außerdem können damit beliebige Arten von Protokollnachrichten herausgefiltert werden.

Docker

Debuggen im Docker-Container

Jetzt können Sie den Debugger an eine Java-Anwendung anhängen, die in einem Docker-Container ausgeführt wird. Die IDE ermöglicht jetzt das Debuggen in Containern, die aus einer Dockerfile oder mit Docker Compose erstellt wurden (docker-compose.yml).

Kubernetes

Unterstützung externer Ressourcen

IntelliJ IDEA 2019.1 unterstützt externe Ressourcen. Das bedeutet, dass Sie jetzt eine benutzerdefinierte Ressourcendefinitions-Spezifikation aus externen Quellen laden können. Dies ist derzeit nur aus lokalen Dateien möglich. Um die Spezifikationen hinzuzufügen, gehen Sie zu "Preferences/Settings | Languages & Frameworks | Kubernetes" und geben Sie den Pfad zur benutzerdefinierten Ressourcendefinitions-Spezifikation an.

Rename-Refaktorierung für Charts von Helm-Ressourcendateien

Jetzt ist es möglich, die Rename-Refaktorierung auf das Chart einer Helm-Ressourcenvorlagendatei anzuwenden. Bitte beachten Sie, dass Sie das Plugin Go template installieren müssen, um diese Unterstützung für Helm-Ressourcenvorlagendateien zu aktivieren.

Editor

JSON-Export Ihrer Codestil-Einstellungen

Es ist jetzt möglich, alle Ihre Codestil-Einstellungen in IntelliJ IDEA (auch solche, die mit den Standardeinstellungen übereinstimmen) im JSON-Format zu exportieren. Wechseln Sie zu "Preferences/Settings | Editor | Code Style" und wählen Sie die Option "Export | IntelliJ IDEA code style JSON" im Dropdown-Menü aus.

Soft-Wraps abhängig vom Dateityp aktivieren

Soft-Wraps können auf bestimmte Dateitypen begrenzt werden. Verwenden Sie dafür im Menü "Preferences/Settings | Editor | General" das Feld "Soft-wrap files".

Tastaturbelegungsdialog für die Tastenkombination Strg+Y unter Windows

Wenn Sie zum ersten Mal die Tastenkombination Strg+Y unter Windows verwenden, wird das Dialogfenster zur Konfiguration der Tastaturbelegung geöffnet, in dem Sie aufgefordert werden, der Kombination entweder "Delete Line" (Zeile löschen) oder "Redo" (Erneut ausführen) zuzuweisen.

Sublime-Text Keymap

Wir haben IntelliJ IDEA weitere vorkonfigurierte Tastaturbelegungen hinzugefügt. In Version 2019.1 ist die Sublime-Text-Tastaturbelegung hinzugekommen. Gehen Sie zu "Preferences /Settings | Keymap" und wählen Sie in der Dropdown-Liste "Keymap" die Option "Sublime Text" aus – das ist alles! Jetzt können Sie die Tastenkürzel von Sublime Text in IntelliJ IDEA verwenden.

Plugin für VS-Code-Tastaturbelegung

Sie können jetzt die vorkonfigurierte VS-Code-Tastaturbelegung verwenden, die wir als separates Plugin zur Verfügung gestellt haben! Installieren Sie dieses Plugin und wählen Sie unter "Preferences/Settings | Keymap" die VS Code Keymap aus.

Unterstützung für Lambda-Syntax im Java-Stil ab Groovy 3.0

IntelliJ IDEA 2019.1 unterstützt die Lambda-Syntax im Java-Stil – eine experimentelle Funktion von Groovy 3.0. Die IDE bietet Bearbeitungsunterstützung, einschließlich Code-Vervollständigung, Hervorhebung und Typinferenz. Die Groovy-Intentions und -Inspektionen funktionieren auch im Lambda-Code einwandfrei. Formatierung und Debugging sind für Lambdas im Java-Stil ebenfalls verfügbar.

Spring Cloud Stream

Unterstützung für die Bearbeitung von Spring Cloud Streams

IntelliJ IDEA bietet jetzt eine umfassende Unterstützung für die Bearbeitung von Spring Cloud Stream-Projekten, wie Syntaxhervorhebung, Inspektionen, Quick-Fixes und Code-Vervollständigung (einschließlich Vervollständigung des Binder-Namens für Werte und Verweise in den application.properties- oder application.yml-Dateien).

Navigation zwischen gebundenen Producers und Consumers

Mithilfe des Randleistensymbols können Sie nun zwischen den gebundenen konsumierenden oder produzierenden Nachrichtenhandlern navigieren. Beachten Sie, dass Consumer und Producer in application.properties- und application.yml-Dateien über den Konfigurationsschlüssel "spring.cloud.stream.bindings" gebunden sein sollten.

Thymeleaf

Verbesserte Thymeleaf-Unterstützung

Jetzt können Sie zu Vorlagenfragmenten navigieren, auf die in den Attributen "th: replace" und "th: include" verwiesen wird. Codevervollständigung und die Rename-Refaktorierung funktionieren jetzt auch für diese inkludierten und ersetzten Fragmente.

Datenbank-Tools

Unterstützung für Greenplum, Vertica und Apache Hive

IntelliJ IDEA unterstützt diese neuen Datenbanken:

  • Greenplum - eine auf PostgreSQL basierende Analysedatenbank.
  • Vertica - spaltenorientierter Speicher für große Datenmengen.
  • Apache Hive - ein auf Apache Hadoop aufgebautes Data Warehouse zur Bereitstellung von Datenabfragen und -analysen.

Verbesserter Verbindungsdialog

Wir haben das Aussehen des Verbindungsdialogs überarbeitet und mehrere wichtige Einstellungen hinzugefügt. Sie können jetzt im Feld "startup script" eine SQL-Abfrage hinzufügen, die bei jedem Verbindungsaufbau ausgeführt wird. Sie können auch ein Zeitlimit festlegen, nach dem die IDE die Verbindung automatisch trennt, oder ein Zeitintervall festlegen, um durch eine alle N Sekunden ausgeführte Abfrage die Verbindung aufrecht zu erhalten.