Praxis-Guide für PHP- und Magento-Teams
PhpStorm bringt mit AI Assistant und Junie zwei unterschiedlich weit gehende KI-Werkzeuge mit: eines, das im Editor assistiert, und eines, das Aufgaben eigenständig übernimmt. Wer beide für Code-Reviews und Refactoring-Vorschläge einsetzen will, sollte ihre Grenzen bei Kontext-Umfang und Code-Vertraulichkeit kennen, bevor produktiver PHP-Code hindurchgereicht wird.
Inhaltsverzeichnis
- 1. AI Assistant und Junie: zwei unterschiedliche Werkzeuge
- 2. Installation und Aktivierung im Projekt
- 3. AI Assistant im Code-Review-Alltag
- 4. Junie für autonome Refactoring-Aufgaben
- 5. Grenzen beim Kontext-Umfang
- 6. Vertraulichkeit von Code und Kundendaten
- 7. Sinnvolle Anwendungsfälle im Alltag
- 8. Riskante Anwendungsfälle und Fallstricke
- 9. Integration in den Team-Workflow
- 10. Zusammenfassung
- 11. FAQ
1. AI Assistant und Junie: zwei unterschiedliche Werkzeuge
AI Assistant ist in PhpStorm als assistierendes Werkzeug angelegt: Es beantwortet Fragen zu markiertem Code im Chat-Fenster, schlägt Commit-Nachrichten vor, erklärt fremde Methoden und liefert auf Zuruf Refactoring-Vorschläge, die der Entwickler Zeile für Zeile prüft und einzeln annimmt oder ablehnt. Jede Änderung bleibt ein Vorschlag, keine automatische Ausführung, und der Mensch behält an jeder Stelle die Kontrolle über das, was tatsächlich in den Code wandert.
Junie geht einen entscheidenden Schritt weiter und agiert als autonomer Coding-Agent: Man formuliert eine Aufgabe in natürlicher Sprache, etwa einen fehlenden Unit-Test ergänzen oder eine veraltete API-Nutzung austauschen, und Junie plant selbstständig die nötigen Schritte, liest relevante Dateien, ändert mehrere Dateien gleichzeitig und präsentiert am Ende einen fertigen Änderungsblock zur Freigabe. Der Unterschied liegt also im Autonomiegrad: assistierend versus eigenständig planend und ausführend.
2. Installation und Aktivierung im Projekt
Beide Werkzeuge sind ab PhpStorm 2024.1 als Plugin AI Assistant vorinstalliert oder über Settings, Plugins, Marketplace nachrüstbar. Aktiviert werden sie über ein JetBrains-AI-Konto, das entweder im kostenlosen Kontingent mit begrenzten Anfragen pro Monat läuft oder als kostenpflichtiges AI-Pro-Abonnement mehr Anfragen und den Zugriff auf Junie freischaltet. Die Anmeldung erfolgt über Settings, Tools, AI Assistant, dort lässt sich auch das bevorzugte Sprachmodell für Chat-Anfragen auswählen.
Für den produktiven Einsatz in einem Team lohnt sich vor der ersten Anfrage ein Blick in die Projektwurzel: Eine .aiignore-Datei, analog zur .gitignore, schließt Verzeichnisse und Dateien explizit von jeder KI-Anfrage aus. In einem Magento-Projekt gehören dort typischerweise app/etc/env.php, alle .env-Dateien und Verzeichnisse mit Kundendaten-Fixtures hinein, damit versehentlich niemals Zugangsdaten oder Testkunden-PII an ein Sprachmodell übertragen werden.
# .aiignore im Projekt-Root anlegen (analog zu .gitignore)
cat > .aiignore <<'EOF'
app/etc/env.php
*.env
var/log/
var/report/
pub/media/customer/
dev/tests/**/fixtures/*customer*
EOF
# AI Assistant Status pruefen (Settings -> Tools -> AI Assistant)
# JetBrains-Konto muss verbunden und Abonnement aktiv sein
3. AI Assistant im Code-Review-Alltag
Im praktischen Review-Alltag markiert man einen Diff oder eine einzelne Methode und öffnet über das Kontextmenü Explain Code oder Find Problems, um eine erste automatisierte Einschätzung zu bekommen: potenzielle Null-Pointer-Zugriffe, unklare Namensgebung, fehlende Typdeklarationen oder überflüssige Komplexität. Das ersetzt kein menschliches Review, liefert aber innerhalb weniger Sekunden eine zweite Meinung, die gerade bei größeren Pull-Requests hilft, offensichtliche Probleme vorab zu filtern, bevor ein Kollege Zeit investiert.
Besonders wertvoll ist der Chat für gezielte Rückfragen zu unbekanntem Code, etwa einer über Jahre gewachsenen Magento-Observer-Klasse ohne Kommentare: Eine Frage wie welche Nebenwirkungen hat diese Methode auf den Warenkorb liefert eine nachvollziehbare Zusammenfassung, die als Ausgangspunkt für die eigentliche fachliche Prüfung dient. Wichtig bleibt, jede Antwort als Hypothese zu behandeln und stichprobenartig im Code selbst zu verifizieren, statt sie ungeprüft in ein Review-Kommentar zu kopieren.
4. Junie für autonome Refactoring-Aufgaben
Junie eignet sich besonders für klar umrissene, mechanische Aufgaben mit überprüfbarem Ergebnis: eine veraltete Methode durch ihr Nachfolgeräquivalent ersetzen, fehlende PHPDoc-Blöcke gemäß Projektkonvention ergänzen oder einen Satz ähnlicher Repository-Klassen um eine neue Methode erweitern. Man beschreibt die Aufgabe im Junie-Panel, der Agent liest die betroffenen Dateien, erstellt einen Plan, führt die Änderungen aus und zeigt am Ende einen vollständigen Diff über alle berührten Dateien hinweg zur Freigabe an.
Nach Abschluss lässt Junie sich anweisen, die vorhandene Testsuite laufen zu lassen und bei Fehlschlägen selbstständig nachzubessern, was die Iterationsgeschwindigkeit deutlich erhöht. In einem Magento-Modul mit mehreren Plugin-Klassen, die alle dieselbe veraltete Konstruktor-Signatur nutzen, kann eine einzige Junie-Aufgabe schneller ans Ziel führen als ein manuelles Suchen-und-Ersetzen über zehn Dateien, sofern das Ergebnis anschließend durch PHPStan und ein menschliches Review abgesichert wird.
Beispiel-Prompt fuer Junie in einem Magento-Modul:
"Ergaenze in allen Klassen unter app/code/Mironsoft/SeoSuite/Plugin/
fehlende PHPDoc-Bloecke fuer jede public und protected Methode.
Nutze Constructor Property Promotion, wo noch nicht vorhanden.
Fuehre anschliessend 'bin/analyse app/code/Mironsoft/SeoSuite --level=5'
aus und behebe verbleibende Fehler."
Junie liest die Dateien, plant die Aenderungen, fuehrt sie aus
und zeigt einen zusammenhaengenden Diff zur Freigabe an.
5. Grenzen beim Kontext-Umfang
Sowohl AI Assistant als auch Junie arbeiten mit einem begrenzten Kontextfenster: Nur ein Ausschnitt des Projekts, meist die aktuell geöffnete Datei plus automatisch ermittelte verwandte Klassen, fließt in eine Anfrage ein. Bei einem gewachsenen Magento-Monolithen mit hunderten Modulen und tief verschachtelter Vererbung über Plugins, Preferences und Events kennt das Modell die vollständige Aufrufkette selten vollständig, selbst wenn die Antwort selbstbewusst klingt.
Praktisch bedeutet das: Bei Fragen zu Auswirkungen einer Änderung auf entfernte Teile des Systems, etwa ob ein geändertes Event auch von einem Drittanbieter-Modul im vendor-Verzeichnis konsumiert wird, sollte man die relevanten Dateien explizit in den Chat-Kontext aufnehmen oder die Antwort durch eine eigene Suche mit Find Usages verifizieren. Ein Modell, das den Kontext nicht kennt, halluziniert im Zweifel eine plausible, aber falsche Antwort, statt ehrlich Unwissenheit einzugestehen.
6. Vertraulichkeit von Code und Kundendaten
Jede Anfrage an AI Assistant oder Junie verlässt die lokale Maschine und wird an das konfigurierte Sprachmodell in der Cloud übertragen, auch wenn JetBrains vertraglich zusichert, Kundendaten nicht für das Training eigener Modelle zu verwenden. Für Projekte mit strengen Vertraulichkeitsklauseln, etwa bei Kunden aus dem Finanz- oder Gesundheitssektor, ist diese Datenübertragung selbst ein Compliance-Thema, das vor dem Einsatz mit dem Kunden und der eigenen Rechtsabteilung geklärt werden sollte.
Die bereits erwähnte .aiignore-Datei ist der wichtigste technische Hebel, um das Risiko zu begrenzen, ersetzt aber keine organisatorische Regel: Zugangsdaten, API-Keys, Kundendaten-Exports und Payment-Provider-Konfigurationen gehören grundsätzlich nicht in eine KI-Anfrage, selbst wenn die Datei aus Versehen nicht auf der Ignore-Liste steht. Ein kurzer Blick auf den markierten Code vor dem Absenden einer Anfrage ist eine einfache Gewohnheit, die viele unnötige Datenabflüsse verhindert.
7. Sinnvolle Anwendungsfälle im Alltag
Am zuverlässigsten sind AI Assistant und Junie bei Aufgaben mit klar prüfbarem Ergebnis und geringem Blast-Radius: PHPDoc-Blöcke ergänzen, Unit-Tests für bestehende, reine Funktionen generieren, stilistische Reviews gegen den PSR-12-Codestandard, Übersetzung von Fehlermeldungen oder das Erklären unbekannter Legacy-Methoden vor einem größeren Umbau. Auch das Formulieren einer verständlichen Commit-Message aus einem bereits fertigen Diff ist ein Fall, bei dem das Ergebnis leicht zu verifizieren ist.
Ebenfalls gut geeignet ist die erste Sichtung eines großen Pull-Requests: AI Assistant markiert ungewöhnliche Muster, doppelten Code oder fehlende Fehlerbehandlung, bevor ein menschlicher Reviewer sich durch hunderte Zeilen Diff arbeitet. So bleibt die menschliche Prüfzeit für die eigentlich schwierigen Fragen reserviert, etwa ob eine fachliche Regel korrekt umgesetzt wurde, statt sie mit dem Aufspüren von Tippfehlern und Formatierungsproblemen zu verbrauchen.
8. Riskante Anwendungsfälle und Fallstricke
Riskant wird es, sobald Vorschläge ungeprüft in sicherheitskritischen Code übernommen werden: Zahlungsabwicklung, Authentifizierung, Preisberechnung oder Rabattlogik sind Bereiche, in denen ein plausibel klingender, aber subtil falscher Vorschlag teuer werden kann, etwa eine falsch gerundete Steuerberechnung, die erst Wochen später im Reporting auffällt. Solche Bereiche sollten KI-Vorschläge höchstens als Diskussionsgrundlage nutzen, niemals als Ersatz für ein reguläres Review durch einen erfahrenen Entwickler.
Auch Junies Autonomie birgt ein eigenes Risiko: Ein zu weit gefasster Auftrag wie räume das Modul auf kann Änderungen an Dateien vornehmen, die außerhalb der eigentlichen Absicht liegen, etwa das versehentliche Entfernen einer scheinbar toten, tatsächlich aber von einem Cronjob genutzten Methode. Enge, klar abgegrenzte Aufgabenstellungen mit anschließender Testsuite und PHPStan-Lauf reduzieren dieses Risiko deutlich, ein pauschaler Auftrag ohne Leitplanken erhöht es dagegen.
9. Integration in den Team-Workflow
Für ein Team empfiehlt sich eine schriftliche Konvention, wann AI Assistant und Junie zum Einsatz kommen dürfen: etwa als Erstsichtung vor jedem Pull-Request, aber nie als alleiniger Freigabe-Reviewer, und mit der klaren Regel, dass jeder von Junie erzeugte Commit im Pull-Request-Titel als KI-unterstützt gekennzeichnet wird. Das schafft Transparenz gegenüber Reviewern, die dann wissen, dass sie besonders genau auf fachliche Korrektheit statt auf Stil achten sollten.
In der Praxis funktioniert eine dreistufige Kette gut: Junie erledigt mechanische Vorarbeit, AI Assistant liefert eine automatisierte Erstsichtung des resultierenden Diffs, und ein menschlicher Reviewer trifft die fachliche Freigabe-Entscheidung. Die folgende Tabelle fasst zusammen, wo die drei Ansätze im Vergleich stehen, gemessen an Autonomiegrad, typischem Einsatzbereich, nötiger Kontrolle und Risiko bei blindem Vertrauen in das Ergebnis.
| Werkzeug | Autonomiegrad | Typischer Einsatz | Nötige Kontrolle |
|---|---|---|---|
AI Assistant |
Assistierend, Vorschlag pro Zeile | Erklärungen, Reviews, PHPDoc | Jeden Vorschlag einzeln prüfen |
Junie |
Autonom, mehrstufiger Plan | Mechanische Refactorings, Tests | Diff komplett gegenlesen |
| Manuelles Review | Kein KI-Anteil | Fachliche Freigabe, Security | Vollständig, wie gewohnt |
| Kombination | Gestuft: Junie → AI Assistant → Mensch | Große Pull-Requests | Menschliche Endfreigabe zwingend |
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
AI Assistant und Junie: Das Wichtigste auf einen Blick
AI Assistant
Assistierender Chat und Vorschläge im Editor, jede Änderung wird einzeln bestätigt.
Junie
Autonomer Agent für mehrstufige, mechanische Aufgaben mit abschließendem Freigabe-Diff.
Kontext-Grenze
Begrenztes Kontextfenster, entfernte Aufrufketten kennt das Modell oft nicht vollständig.
Vertraulichkeit
.aiignore für sensible Pfade nutzen, Zugangsdaten nie in eine KI-Anfrage geben.