Refactoring von Zeichenketten unter IntelliJ IDEA unterbinden

Die Java-IDE IntelliJ IDEA verfügt über eine Reihe von Refactoring-Methoden. So können Variablen umbenannt, Methoden extrahiert und vieles mehr mit Hilfe der Refactoring-Werkzeuge bewerkstelligt werden. Manchmal schießt die IDE beim Refactoring über das Ziel hinaus. So kann es passieren, das bei der Umbenennung einer Variable nicht nur diese, sondern auch Zeichenketten mit dem gleichen Namen umbenannt werden.

Der Rename-Dialog der IDE

Verantwortlich hierfür ist eine optionale Funktionalität in der Rename-Funktionalität. Um diese zu deaktivieren muss der Rename-Dialog geöffnet werden. Dies geschieht indem die Tastenkombinationen Shift + F6 knapp eine habe Sekunde gedrückt wird, bis der entsprechende Dialog erscheint. In diesem Dialog muss nun die Checkbox mit der Beschreibung Search in comments and strings deaktiviert werden. Anschließend werden nur noch die gewünschten Strukturen im Quellcode umbenannt, ohne dass sich die Umbenennung auf weitere Zeichenketten auswirkt.

IntelliJ IDEA in den case-sensitiven Modus schalten

Bei einer normalen macOS-Installation ist das Dateisystem, egal ob HFS+ oder APFS case-insensitiv. Allerdings besteht bei beiden Dateisystemen die Möglichkeit sie case-sensitive zu betreiben. Das bedeutet das eine Datei mit dem Namen test.txt und eine Datei Test.txt zwei unterschiedliche Dateien sind. Bei case-insensitiven Dateisystemen wäre dies nicht der Fall. Bei einem Start der Java-IDE IntelliJ IDEA auf einem solchen case-sensitiven Dateisystem kommt es zu folgender Meldung:

Filesystem Case-Sensitivity Mismatch
The project seems to be located on a case-sensitive file system.
This does not match the IDE setting (controlled by property "idea.case.sensitive.fs")

Hintergrund ist das IntelliJ IDEA für die Betriebssysteme Windows und macOS annimmt das diese mit einem case-insensitiven Dateisystem betrieben werden.

Der entsprechende Eintrag befindet sich im Help-Menü

Über den Menüpunkt Help -> Edit Custom Properties… kann diese Verhalten korrigiert werden. Wenn dieser Punkt zum ersten Mal auswählt wird, erscheint eine Nachfrage ob die entsprechende Datei angelegt werden soll. Anschließend wird die Datei in IntelliJ IDEA geöffnet. Dort muss der Wert:

idea.case.sensitive.fs=true

hinzugefügt werden. Nach einem Neustart der IDE wird das neue Verhalten übernommen.

Aktuelle Datei im Projektbaum in IntelliJ IDEA lokalisieren

Bei der Nutzung einer IDE, in diesem Fall IntelliJ IDEA, hat man öfter das Problem, das man bei der Bearbeitung einer bestimmten Datei in das entsprechende Verzeichnis bzw. die Stelle in der Project View wechseln möchte.

Über das Select In kann die Projekt View aufgerufen werden

Dazu muss im Editor-Fenster die Tastenkombination Alt + F1 gedrückt werden. Damit öffnet sich das Select In. In diesem kann nun der erste Punkte mit dem Namen Project View mittels der Enter-Taste ausgewählt werden. Anschließend wird der aktuelle Ort der Datei in der Project View angezeigt.

java.util.List kann unter IntelliJ IDEA nicht importiert werden

In der IDE IntelliJ IDEA von JetBrains ist es möglich Imports über die Quick-Fix-Funktionalität vorzunehmen. Allerdings funktionierte dies nicht immer in allen Fällen. So führte folgende Quellcodezeile:

List lines = new ArrayList<>();

zu einem Problem. Das Interface List ist unter java.util.List zu finden, allerdings bot IntelliJ IDEA diesen Import nicht mehr an. Die Lösung für dieses Problem fand sich in den Einstellungen der IDE.

Die Auto Import Einstellungen von IntelliJ IDEA

Dort findet sich unter dem Punkt Editor -> General der Punkt Auto import. Unter diesem Punkt ist eine Liste der Pakete zu finden, welche nicht automatisch importiert werden sollen. Wenn java.util.List aus der Liste herausgenommen wurde, kann es wieder automatisch importiert werden.

10 Jahre alter Bug in JetBrains IDEs

Zur Entwicklung nutze ich in vielen Fällen die IDEs von JetBrains. Aus meiner Sicht sind die IDEs von JetBrains im Grunde großartig. Doch wo Licht ist, da fällt auch Schatten. Wenn man diese IDEs mit einer deutschen Tastaturbelegung nutzt, so wird man desöfteren mit Problemen konfrontiert sein. So ist es z.B. nicht möglich die Tastenkombination für die zeilenweise Auskommentierung zu nutzen. Es funktioniert mit einer deutschen Tastaturbelegung nicht. Manchmal kann man diese Probleme umgehen. Unter macOS würde die Nutzung des Numpads als Workarround in den meisten Fällen mangels Numpad scheitern.

Ein Beispiel für problematische Tastaturkürzel

Bei meiner Suche nach einer Lösung bin ich über einen entsprechenden Bug im Ticketsystem von JetBrains gestolpert: JRE-216. Dieser Bug vom 31. Oktober 2007 ist mittlerweile über 10 Jahre alt und noch immer ungelöst. Er verweist unter anderem auf das Ticket IDEA-165950. Auch in diesem Ticket geht es um die Unterstützung nationaler Tastaturbelegungen. Gelöst ist dieses Ticket nicht; auch wenn es mittlerweile Bestrebung gab, das Problem anzugehen. So heißt es weiter warten, auf eine endgültige Lösung; für ein Problem welches viele Entwickler Zeit, Ärger und Produktivität kostet.