Code Vision und Inline Hints in PhpStorm sinnvoll konfigurieren
AI generated
IDE
{ }
PhpStorm - Editor - Team Workflow
Code Vision und Inline Hints: Nuetzliches Signal statt visuelles Rauschen
Wann Aufrufer-Anzahl, Test-Status und Parameter-Hints wirklich helfen und wann sie den Code nur ueberladen

Code Vision blendet direkt ueber jeder Methode an, wie oft sie aufgerufen wird und ob zugehoerige Tests zuletzt gruen waren, waehrend Inline Hints Parameter- und Typinformationen mitten im Code einblenden. Beide Funktionen koennen enorm hilfreich sein, um Zusammenhaenge auf einen Blick zu erfassen, aber genauso gut den Editor optisch ueberladen, wenn sie unreflektiert ueberall aktiv sind. Dieser Artikel zeigt, wie beide Funktionen gezielt konfiguriert werden und wie ein Team eine gemeinsame Konvention dafuer festlegt, statt dass jeder Entwickler eine andere Ansicht sieht.

12 Min. Lesezeit Code Vision Inline Hints Editor Konfiguration Team Konventionen

1. Was Code Vision und Inline Hints jeweils genau anzeigen

Code Vision blendet kleine, klickbare Hinweise direkt oberhalb von Klassen und Methoden ein, etwa die Anzahl der Aufrufer im Projekt oder den zuletzt bekannten Status zugehoeriger Tests. Ein Klick darauf oeffnet direkt die Liste der Fundstellen, ohne den Umweg ueber Find Usages als separaten Befehl.

Inline Hints dagegen erscheinen mitten im Code selbst, meist als grau hinterlegter Text vor einem Argument oder nach einer Methodensignatur, etwa der Name eines Parameters bei einem Funktionsaufruf mit mehreren gleichartigen Argumenten oder der inferierte Rueckgabetyp einer Methode ohne explizite Deklaration.

Beide Anzeigen lassen sich unabhaengig voneinander konfigurieren und muessen keineswegs gemeinsam aktiv sein: Ein Entwickler kann sich beispielsweise ausschliesslich fuer Code Vision entscheiden und Inline Hints komplett deaktivieren, wenn ihm die reine Aufrufer-Information genuegt und Parameterinformationen eher stoeren.

2. Code Vision aktivieren und die richtigen Provider auswaehlen

Unter Settings, Editor, Inlay Hints, Code Vision laesst sich die Funktion insgesamt aktivieren und dann einzeln festlegen, welche Provider tatsaechlich angezeigt werden sollen, etwa Usages fuer die Aufrufer-Anzahl oder Related Tests fuer den Test-Status direkt aus PHPUnit-Runs.

Fuer ein Magento-Projekt mit vielen Interfaces und Plugin-Klassen ist Usages besonders wertvoll, da sich damit auf einen Blick erkennen laesst, ob eine Methode noch produktiv genutzt wird, bevor sie geaendert oder entfernt wird. Related Tests lohnt sich vor allem dort, wo tatsaechlich eine belastbare Testabdeckung existiert.

Weniger relevant fuer die meisten Magento-Teams ist dagegen der Inheritors-Provider, der die Anzahl der Unterklassen anzeigt, da Vererbungstiefen in einem Interface-basierten Projekt meist ohnehin schon aus der Namensgebung ersichtlich sind.


<!-- Auszug aus editor.xml, exportiert ueber Settings Sync -->
<component name="CodeVisionSettings">
  <option name="providers">
    <list>
      <CodeVisionProviderSetting providerId="java.usages" enabled="true" />
      <CodeVisionProviderSetting providerId="testStatusVision" enabled="true" />
      <CodeVisionProviderSetting providerId="inheritors" enabled="false" />
    </list>
  </option>
</component>

3. Parameter-Hints: wann sie helfen und wann sie ablenken

Bei einem Funktionsaufruf mit mehreren aufeinanderfolgenden boolschen Argumenten ist es ohne Hint fast unmoeglich zu erkennen, welcher Wert fuer welchen Parameter gilt. Genau hier zeigen Parameter-Hints direkt vor dem Argument den zugehoerigen Parameternamen an und machen den Aufruf sofort lesbar.

Bei einem Aufruf mit nur einem einzigen, offensichtlichen Argument, etwa $repository->getById($productId), ist derselbe Hint dagegen reine Redundanz, die den Code unnoetig verbreitert. PhpStorm blendet Hints fuer eindeutige Faelle standardmaessig bereits automatisch aus, laesst sich aber zusaetzlich manuell feinjustieren.

Bei Aufrufen mit benannten Argumenten, wie sie PHP seit Version 8.0 unterstuetzt, werden Parameter-Hints ohnehin automatisch ueberfluessig, da der Parametername bereits explizit im Code steht und PhpStorm den redundanten Hinweis konsequent ausblendet.


// Ohne Parameter-Hint: unklar, was true/false jeweils bedeutet
$product->setData('status', true, false);

// Mit Parameter-Hint (Editor-Anzeige, kein echter Code):
$product->setData(
    key: 'status', /* $key */
    value: true,   /* $value */
    lockData: false /* $lockData */
);

4. Typ-Hints fuer PHP 8.4: Property Promotion und Rueckgabetypen

Bei Constructor Property Promotion, wie sie in modernen PHP-8.4-Klassen ueberall verwendet wird, zeigt PhpStorm inferierte Typen fuer readonly-Properties direkt inline an, sofern kein expliziter Typ im Code steht. Das hilft besonders beim schnellen Ueberfliegen fremder Klassen ohne staendiges Springen zur Definition.

Fuer Methoden ohne explizite Rueckgabetyp-Deklaration zeigt ein Inline Hint den von PhpStorm inferierten Typ direkt nach der schliessenden Klammer der Parameterliste. In einem Projekt, das ohnehin PHPStan auf Level 5 mit strikten Typen fordert, sind solche Faelle selten, machen die verbleibenden Ausnahmen aber sofort sichtbar.


final class ProductPriceCalculator
{
    public function __construct(
        private readonly float $basePrice, /* : float */
        private readonly float $taxRate,   /* : float */
    ) {
    }

    public function calculate() /* : float (inferiert) */
    {
        return $this->basePrice * (1 + $this->taxRate);
    }
}

5. Der Performance-Aspekt: viele Hints in grossen Dateien

In sehr grossen, generierten oder stark verschachtelten Dateien kann eine hohe Anzahl aktiver Inlay-Hint-Provider das Rendering des Editors spuerbar verlangsamen, da jede sichtbare Zeile zusaetzlich analysiert und beschriftet werden muss. Das faellt besonders bei Dateien mit mehreren tausend Zeilen auf.

Fuer solche Faelle bietet sich an, Hints projekt- oder dateispezifisch zu reduzieren, statt sie global fuer alle Dateitypen zu deaktivieren. Var/generated-Dateien etwa profitieren kaum von Hints, da sie ohnehin nicht von Hand bearbeitet werden, waehrend app/code von denselben Hints deutlich profitiert.

Ein einfacher Praxistest hilft bei der Einschaetzung: Wird das Scrollen in einer bestimmten Datei spuerbar ruckelig, lohnt sich ein kurzer Blick in die Hint-Einstellungen, bevor voreilig die Rechnerhardware oder die Projektgroesse als Ursache vermutet werden.

6. Gemeinsame Team-Konventionen fuer Hints festlegen

Da Inline-Hint-Einstellungen zur persoenlichen Kategorie gehoeren und ueber Settings Sync individuell pro Entwickler laufen, sieht ohne Absprache jeder eine andere Ansicht desselben Codes, was gerade bei Pair Programming oder Screen-Sharing fuer Verwirrung sorgt.

Ein kurzer Team-Konsens, etwa Usages und Related Tests fuer Code Vision an, Parameter-Hints nur fuer boolsche und numerische Literale an, alle anderen Hints eher zurueckhaltend, laesst sich als Empfehlung im README oder Onboarding-Dokument festhalten und als exportierte Settings-Datei bereitstellen.

7. Ein konkretes Konfigurationsbeispiel zum Nachbauen

Unter Settings, Editor, Inlay Hints, Parameter Names laesst sich festlegen, dass Hints nur bei Literalen wie true, false oder Zahlen erscheinen, nicht aber bei bereits sprechenden Variablennamen, was die Ablenkung deutlich reduziert, ohne den eigentlichen Nutzen zu verlieren.

Diese Feinkonfiguration laesst sich als Teil der persoenlichen Settings Sync Kategorie exportieren und als Empfehlung an neue Teammitglieder weitergeben, etwa als kurze Anleitung mit Screenshot im Onboarding-Dokument, damit niemand die Standardeinstellung unreflektiert uebernimmt.


<!-- Settings, Editor, Inlay Hints, Parameter Names -->
<option name="showForNonLiteralArguments" value="false" />
<option name="showForBooleanLiterals" value="true" />
<option name="showForNumericLiterals" value="true" />
<option name="showForSingleParameterMethods" value="false" />

8. Wann Hints besser komplett abgeschaltet werden

Bei Live-Demos, Pair-Programming-Sessions ueber Screen-Sharing oder Screenshots fuer Blogartikel und Dokumentation lenken Inline Hints oft ab, da sie fuer das Publikum keinen Mehrwert bieten, aber zusaetzliche visuelle Komplexitaet erzeugen. Ein schneller Toggle ueber View, Show Inlay Hints hilft in solchen Momenten.

Auch beim Arbeiten an sehr altem, unklar typisiertem Legacy-Code kann eine Flut inferierter Typ-Hints eher verunsichern als helfen, da PhpStorm dort haeufiger nur grobe Vermutungen anzeigen kann. In solchen Bereichen ist es oft ehrlicher, die Hints abzuschalten und stattdessen aktiv zu recherchieren.

9. Code Vision und Inline Hints im Vergleich zu reiner Navigation

Reine Navigation ueber Find Usages oder Go to Declaration liefert dieselbe Information wie Code Vision, erfordert aber einen bewussten zusaetzlichen Klick und einen Kontextwechsel weg vom aktuellen Code. Code Vision liefert dasselbe Signal passiv und dauerhaft sichtbar, ohne dass aktiv danach gesucht werden muss.

Fuer punktuelle, seltene Fragen bleibt klassische Navigation die ressourcenschonendere Wahl, da nichts dauerhaft berechnet und angezeigt werden muss. Fuer wiederkehrende Fragen wie Aufrufer-Anzahl bei API-Aenderungen lohnt sich dagegen die staendige Sichtbarkeit von Code Vision trotz des zusaetzlichen Rendering-Aufwands.

Letztlich ist die Wahl zwischen beiden Ansaetzen keine Entweder-oder-Entscheidung: Ein gut konfiguriertes Team nutzt Code Vision fuer haeufige, wiederkehrende Fragen und verlaesst sich fuer seltene Spezialfaelle bewusst auf die klassische, bewusst aktiv ausgeloeste Navigation.

Funktion Zeigt Nutzen bei grossen Dateien Empfehlung
Code Vision Usages Aufrufer-Anzahl Gering bei stark generiertem Code An fuer app/code, aus fuer generated
Code Vision Related Tests Letzter Test-Status Nur bei echter Testabdeckung sinnvoll An, wo Tests existieren
Parameter-Hints Parametername vor Literal Kann bei vielen Aufrufen stoeren Nur fuer bool und Zahlen aktivieren
Inferierte Typ-Hints Property- und Rueckgabetyp Kann Editor optisch ueberladen Gezielt fuer neuen Code, nicht global

Mironsoft

PhpStorm-Setup, Docker-Integration und Team-Produktivität

PhpStorm, das für Magento- und PHP-Projekte wirklich optimal läuft?

Wir prüfen bestehende PhpStorm-Setups auf langsame Indizierung, ungenutzte Docker-Integration und fehlende Team-Konventionen und richten eine Konfiguration ein, die von der ersten Sekunde an produktiv ist.

Setup-Review

Indexing, Interpreter und Speicher-Einstellungen für große Magento-Projekte optimieren.

Docker-Integration

Xdebug, PHPUnit und Datenbank-Tools sauber mit dem Docker-Setup verbinden.

Team-Konventionen

Inspection-Profile, Code-Style und Live-Templates projektweit vereinheitlichen.

10. Zusammenfassung

Code Vision und Inline Hints: Das Wichtigste auf einen Blick

Code Vision

Zeigt Aufrufer-Anzahl und Test-Status direkt ueber Methoden, spart den Umweg ueber separate Befehle.

Parameter-Hints

Am wertvollsten bei boolschen oder numerischen Argumenten, bei sprechenden Variablennamen eher unnoetig.

Performance

In grossen oder generierten Dateien lohnt sich eine gezielte Reduktion statt globaler Abschaltung.

Team

Eine dokumentierte, exportierte Konfiguration verhindert, dass jeder Entwickler eine andere Ansicht desselben Codes sieht.

11. FAQ: Code Vision und Inline Hints: Das Wichtigste auf einen Blick

1Wo aktiviere ich Code Vision in PhpStorm?
Unter Settings, Editor, Inlay Hints, Code Vision laesst sich die Funktion insgesamt einschalten und dort einzeln festlegen, welche Provider wie Usages oder Related Tests angezeigt werden.
2Kann ich Parameter-Hints nur fuer boolsche Argumente aktivieren?
Ja, unter Settings, Editor, Inlay Hints, Parameter Names lassen sich Hints gezielt auf boolsche und numerische Literale beschraenken, waehrend sie bei sprechenden Variablennamen unterdrueckt werden.
3Verlangsamen Inline Hints die IDE bei sehr grossen Dateien spuerbar?
Bei mehreren tausend Zeilen kann eine hohe Anzahl aktiver Hint-Provider das Rendering messbar verlangsamen, weshalb sich eine gezielte Reduktion fuer generierte oder besonders grosse Dateien anbietet.
4Werden Hint-Einstellungen automatisch mit dem Team geteilt?
Nein, Inline-Hint-Einstellungen gehoeren zur persoenlichen Settings-Kategorie und laufen ueber Settings Sync nur pro individuellem Account, ein Team-Sharing erfordert expliziten Export.
5Wie zeige ich Code Vision Related Tests fuer eine Methode an?
Sobald PHPUnit-Testlaeufe fuer die zugehoerige Klasse vorliegen, blendet Code Vision den letzten bekannten Status direkt oberhalb der Methode ein, klickbar zur Testdatei.
6Sollte ich Typ-Hints auch fuer Legacy-Code ohne Typdeklarationen aktivieren?
Nicht zwingend, da PhpStorm dort oft nur grobe Vermutungen anzeigen kann. Ein bewusstes Abschalten und aktives Nachrecherchieren ist in solchen Bereichen oft die ehrlichere Option.
7Wie schalte ich alle Inline Hints kurzfristig fuer eine Demo aus?
Ueber View, Show Inlay Hints laesst sich die Anzeige projektweit mit einem einzigen Klick vorruebergehend deaktivieren, ohne die zugrunde liegende Konfiguration dauerhaft zu aendern.
8Was ist der Unterschied zwischen Code Vision und einer klassischen Find Usages Abfrage?
Code Vision zeigt das Ergebnis passiv und dauerhaft direkt im Code an, waehrend Find Usages einen bewussten zusaetzlichen Befehl erfordert und das Ergebnis in einem separaten Fenster darstellt.
9Kann ich eine Team-Konfiguration fuer Hints als Datei weitergeben?
Ja, ueber Export der relevanten Einstellungskategorie als Konfigurationsdatei, die anschliessend im Team-Onboarding-Dokument verlinkt und importiert werden kann.
10Lohnt sich Related Tests in Code Vision, wenn die Testabdeckung noch luecklihaft ist?
Nur bedingt, da die Anzeige dann haeufig leer bleibt oder veraltete Ergebnisse zeigt. Sinnvoller ist es, diesen Provider erst zu aktivieren, sobald eine belastbare Testabdeckung existiert.