KI-gestützte Code-Qualität: Typfehler automatisch erkennen mit Claude

Image Description
Christopher Zechendorf
27.03.2026
Share:

Wie wir ein KI-gestütztes Tool gebaut haben, das Typ-Mismatches in TYPO3-Extensions automatisch erkennt und behebt — dort, wo statische Analyse an ihre Grenzen stößt.

KI-gestützte Code-Qualität: Typfehler automatisch erkennen mit Claude

Von manueller Fehlersuche zur automatischen Erkennung

Die Herausforderung

Im vorangegangenen Beitrag haben wir gezeigt, welche Typfehler beim PHP 8.4-Upgrade in TYPO3-Extensions auftreten. Die manuelle Suche nach diesen Mustern ist zeitaufwändig: findByUid() wird in einem typischen Projekt hunderte Male aufgerufen, und nicht jeder Aufruf ist problematisch. Klassische statische Analyse-Tools wie PHPStan stoßen hier an Grenzen — besonders bei dynamischen Framework-Konstrukten wie TypoScript-Settings, Extbase-Argumenten oder $GLOBALS-Zugriffen.

Die Frage war: Können wir die Erkennung dieser Muster automatisieren?

Unsere Lösung

Wir haben unser bestehendes /techdebt-Kommando in Claude Code um eine neue Prüfkategorie erweitert: Call-Site Type Mismatch Detection. Das Tool scannt TYPO3-Extensions gezielt nach den Mustern, die wir in der Praxis als häufigste Fehlerquellen identifiziert haben.

Was das Tool erkennt

Die Erkennung konzentriert sich auf vier Kategorien, die in der Praxis die meisten TypeError-Crashes verursachen:

1. String-Argumente an findByUid()

Das Tool identifiziert Aufrufe, bei denen der übergebene Wert aus einer String-Quelle stammt — etwa $GLOBALS-Arrays, getArgument(), TypoScript-Settings, explode() oder String-Literale wie '1':

⚠ EventController.php:1028 — findByUid('1') receives string literal
  Fix: Replace '1' with 1

⚠ EventController.php:415 — findByUid($uid) where $uid comes from getArgument()
  Fix: Add (int) cast

2. date('U') für int-Spalten

date('U') gibt einen String zurück. Wird er in ein Datenbankfeld vom Typ int geschrieben, schlägt das unter strict_types fehl:

⚠ EventController.php:892 — date('U') assigned to int column 'tstamp'
  Fix: Replace with time()

3. Falsche Cast-Typen bei Settern

Setter mit bool-Signatur erhalten (int)-Casts, oder umgekehrt:

⚠ EventController.php:340 — setDataForwarding((int)$value) but parameter expects bool
  Fix: Change cast to (bool)

4. Doctrine DBAL Result-Objekte

Seit TYPO3 12 gibt execute() ein Result-Objekt zurück. Das Tool erkennt, wenn dieses Objekt ohne fetchAllAssociative() weitergegeben wird.

Automatische Korrektur

Neben der Erkennung bietet das Tool auch Auto-Fix-Regeln. Für jedes gefundene Muster wird ein konkreter Fix vorgeschlagen und auf Wunsch direkt angewendet:

  • findByUid('1')findByUid(1)
  • findByUid($stringVar)findByUid((int)$stringVar)
  • date('U')time()
  • (int)$value bei Bool-Setter → (bool)$value

Das Ergebnis

Beim ersten Durchlauf auf dem betroffenen Projekt fand das Tool alle 15 Typ-Mismatches, die wir zuvor manuell identifiziert hatten — plus drei weitere, die noch nicht zu Crashes geführt hatten, aber es unter bestimmten Bedingungen getan hätten.

Der entscheidende Vorteil: Das Tool läuft jetzt als Teil unseres regulären Code-Quality-Checks. Neue Typfehler werden erkannt, bevor sie in die Produktion gelangen — nicht erst, wenn ein Nutzer auf den betroffenen Code-Pfad trifft.

Fazit

Statische Analyse-Tools sind unverzichtbar, aber sie decken nicht alles ab — besonders nicht in Framework-Code mit dynamischen Werten. KI-gestützte Tools wie Claude Code schließen diese Lücke, weil sie Muster kontextbezogen erkennen können, nicht nur syntaktisch.

Für uns ist das ein Baustein in einer größeren Entwicklung: KI nicht als Ersatz für Entwickler, sondern als Werkzeug, das die Code-Qualität systematisch verbessert und Fehler abfängt, bevor sie Schaden anrichten.


Sie möchten KI-gestützte Workflows in Ihre Entwicklungsprozesse integrieren? Kontaktieren Sie uns — wir teilen gerne unsere Erfahrungen.

Interesse geweckt? Top-Stories direkt in Ihre Mailbox:

Share:

Über den Autor

Christopher Zechendorf

Christopher Zechendorf

Christopher Zechendorf leitet die ext.dev GmbH und bringt über 25 Jahre Erfahrung in Webentwicklung, CMS-Systemen und Infrastruktur mit.