IntelliJ Toolbox Teil I

26.03.2020 Raffael Schneider
Tech IntelliJ IDE Toolbox Good-to-know Hands-on

Wir bei b-nova nutzen täglich JetBrains IntelliJ als unsere bevorzugte IDE. Es liegt nicht nur an uns, das Programmieren wieder Spass macht, sondern auch die Features welche IntelliJ bereitstellt. Über die Zeit hinweg wurde das Editor-Ökosystem enorm vergrössert. Man denke nur an Atom.io, VS Code oder die x-te Imitation von vi. Dabei ist der Umfang mittlerweile so gross, das die meisten -uns bei b-nova eingeschlossen- nicht mehr wissen, was es überhaupt alles gibt. Von daher haben wir uns gedacht, dass wir Ihnen eine Liste mit nützlichen Tipps und Tricks zusammenstellen, aus denen Sie auswählen können, um Ihren Alltag zu vereinfachen.

Find Action

Bevor wir uns verschiedenste Tools genauer anschauen, starten wir zunächst mit einem sehr praktischen Shortcut. Wenn Sie zuvor noch nie von Find Action gehört haben oder sich darüber Gedanken gemacht haben was dies macht, dann wollen Sie anschliessend auf jeden Fall nicht mehr darauf verzichten.

Mithilfe der Tastenkombination Shift + Command + A können Sie jegliche Features direkt von der Prompt finden, egal wie verborgen. Sie möchten zum Beispiel Save Actions finden, dann öffnen Sie das Find Action-Fenster und suchen Sie danach. Schon finden Sie die Einstellungen, ohne auch nur ein Menü oder eine Maus/Touchpad zu berühren. Nützlich, nicht wahr? Es funktioniert quasi mit allem.

Ab der MacOS Version 10.14.4. öffnet der Shortcut das Terminal. Hierfür gibt es jedoch bereits einen Offiziellen Blog Post der dieses Problem behebt.

Regex checker

Kennen Sie das Bedürfnis sicher zugehen, dass Ihre Regex-Expression die richtigen Elemente erkennt? Bestimmt haben Sie meist einen Online-Service verwendet, um diese zu überprüfen. Wie Sie sich bereits denken können, bietet auch IntelliJ solch einen Service von Haus aus an. Dieser wird Regex Check genannt.

Um diesen zu verwenden, bewegen Sie Ihre Maus über die Regex-Expression und drücken dabei Option + Enter. Anschliessend wählen Sie innerhalb des Tooltips Check RegExp. Dadurch öffnet sich ein weiteres kleines Fenster, in dem Sie Ihre Expression prüfen oder anpassen können, um das gewünschte Ergebnis zu erhalten.

Scratch files

Eine weit verbreitete Angewohnheit ist es, eine Art Code-Clipboard zu verwenden, um beispielsweise einen Code-Teil anzupassen, ihn mit Copy/Paste irgendwo einzufügen oder einfach um etwas auszuprobieren ohne gleich ein Commit innerhalb Ihres Projekt-Workspaces machen zu müssen. Meistens nutzt man hierfür einen weiteren Editor, doch IntelliJ bietet ein weiteres praktischen Feature an, welches dies überflüssig macht. Dieses Feature nennt sich Scratch Files.

Dabei sind Scratch-Files eigentlich temporäre Entwurfsdateien, welche nicht Ihr Projekt beeinflussen und auch nicht in Ihr SCM mit einbezogen wird. Dabei sind die Dateien in vollem Umfang funktionsfähig, sprich sie haben Syntax-Highlighting und sind auch ausführbar und/oder können im Debug Modus verwendet werden. Um solch eine Datei zu erstellen, wählen innerhalb des Kontextmenüs New > Scratch File oder nutzen einfach den Shortcut Shift + Command + N. Dabei sind die Dateien, wie bereits erwähnt, in Ihrem Projekt verfügbar, jedoch nicht in Ihrem Workspace. Sobald Sie diese nicht mehr benötigen, können sie entfernt werden.

REST client

Direkt nach den Scratch-Files kommt schon das nächste Feature: ein voll integrierter Support für einen HTTP-Client direkt innerhalb Ihrer IDE, welcher mit Scratch-Files verwendet werden kann. Dabei gibt es einige Third-Party-Tools, wie Postman, welcher grundsätzlich dieselbe Funktionalität anbietet. Jedoch die Möglichkeit zu haben, solch ein Tool direkt in IntelliJ zu verwenden, macht es umso komfortabler Ihren Web Service zu testen. IntelliJs eigener HTTP-Client ist sehr mächtig, deshalb sollten Sie unbedingt JetBrains offizielle Dokumentation einmal genauer anschauen.

Für die Verwendung müssen Sie lediglich ein neues Scratch-File mit dem Shortcut Shift + Command + N erstellen. Dabei müssen Sie nun den Datei-Typ auf .http (oder alternativ auf .rest) ändern. Innerhalb dieser Datei können Sie nun REST-Statements erstellen und sobald Sie fertig sind diese auch direkt testen.

Hierfür einfach ein Statement wie GET http://www.b-nova.com schreiben und anschliessend den grünen Start-Button auf der linken Seite Ihres Fensters klicken. Dadurch wird der HTTP-Client einen GET-Aufruf auf die angegebene Adresse machen und die zugehörige Antwort liefern. Nun können Sie so viele Parameter und Werte hinzufügen, um das gewünschte Ergebnis zu erreichen.

GET http://www.b-nova.com
Connection: keep-alive Accept: text/html Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q=0.8

Ausserdem, gibt es eine cURL konvertierungs Möglichkeit von IntelliJ, die Ihnen erlaubt, ein cURL Statement in ein gültiges .http-Statement zu verwandeln. Auch dies können Sie über das Kontextmenü erreichen Tools > HTTP Client > Convert cURL to HTTP Request. Dort können Sie die cURL Expression eingeben.

$ curl 'http://www.b-nova.com' -H 'Connection: keep-alive' -H 'Accept: text/html'

Dadurch wir ein HTTP-Body, wie oben bereits veranschaulicht, erstellt

Dependency Structure Matrix

Zu guter Letzt zeigen wir Ihnen noch ein Feature, welches sich komplizierter anhört als es eigentlich ist, nämlich Dependency Structure Matrix. Obwohl es auf den ersten Blick abschreckend wirkt, ist dies ein sehr leicht zu bedienendes Tool, welches die gesamte Architektur Ihrer Anwendung verbessern kann. Kurz gesagt werden dadurch Beziehungen zwischen Modulen, Datei und/oder Klassen visuell auf einem Matrix Graphen dargestellt. Die DSP, kurz für Dependency Structure Matrix, ist erst seit einigen Monaten erhältlich und ist unserer Meinung nach auf jeden Fall die Zeit wert sich dies einmal genauer anzuschauen.

Wenn Sie noch mehr nützliche Dinge über IntelliJ erfahren möchten, schauen Sie sich auf jeden Fall mal die beiden offiziellen Seiten genauer an:

Jetbrains IDEA Pro Tips

Jetbrains IDEA Tips&Tricks blog (regurarly updated)

Raffael Schneider – Crafter, Disruptor, Freigeist. Als begeisteter GitOps-Enthusiast schreibt Raffael gerne über Programmiersprachen, Themen rund um DevOps und hat ein Faible für die neusten IT-Hypes aller Art.