Was macht sql-code-review?
Universeller SQL-Code-Review-Assistent, der umfassende Sicherheits-, Wartbarkeits- und Codequalitätsanalysen in allen SQL-Datenbanken (MySQL, PostgreSQL, SQL Server, Oracle) durchführt. Schwerpunkt auf SQL-Injection-Prävention, Zugriffskontrolle, Codestandards und Anti-Pattern-Erkennung. Ergänzt den SQL-Optimierungs-Prompt für vollständige Entwicklungsabdeckung.
Überblick
Dieser Skill bietet eine automatisierte Überprüfung von SQL-Code auf häufige Fehler, Sicherheitslücken und Verstöße gegen Best Practices. Er ist für den Einsatz in CI/CD-Pipelines, Code-Reviews und als Teil von KI-gesteuerten Entwicklungswerkzeugen konzipiert.
Unterstützte Datenbanken
- MySQL
- PostgreSQL
- SQL Server
- Oracle
Hauptfunktionen
- Sicherheitsanalyse: Erkennung von SQL-Injection-Risiken, fehlerhaften Berechtigungen, unsicheren gespeicherten Prozeduren und anderen Sicherheitslücken.
- Codequalität: Überprüfung auf komplexe Abfragen, fehlende Indizes, übermäßige Verwendung von
SELECT *, nicht optimierte JOINs und andere Anti-Pattern. - Wartbarkeit: Bewertung der Lesbarkeit und Wartbarkeit des Codes, z.B. durch konsistente Formatierung, klare Benennung und Vermeidung von toten Code.
- Zugriffskontrolle: Analyse von GRANT/REVOKE-Anweisungen, Rollen und Berechtigungen, um das Prinzip der geringsten Privilegien sicherzustellen.
- Compliance: Überprüfung auf Einhaltung von unternehmensspezifischen oder branchenüblichen Codestandards.
Verwendung
Eingabe
Der Skill erwartet SQL-Code als Eingabe, entweder als String oder als Datei. Optional können Konfigurationsparameter wie der Datenbanktyp oder zu ignorierende Regeln angegeben werden.
Ausgabe
Eine strukturierte Liste mit Problemen, die jeweils eine Beschreibung, eine Kategorie (z.B. „Sicherheit“, „Performance“), eine Schweregrad-Einstufung (z.B. „Hoch“, „Mittel“, „Niedrig“) und ggf. einen Vorschlag zur Behebung enthalten.
Beispiele
Beispiel 1: SQL-Injection erkennen
Eingabe:
SELECT * FROM users WHERE username = '" + userInput + "';
Ausgabe:
- ⚠️ Sicherheitsproblem (Schweregrad: Hoch): SQL-Injection-Risiko erkannt. Verwenden Sie parametrisierte Abfragen oder Prepared Statements.
Vorschlag: `SELECT * FROM users WHERE username = ?;`
Beispiel 2: Fehlender Index auf JOIN-Spalte
Eingabe:
SELECT o.id, o.total, c.name
FROM orders o
JOIN customers c ON o.customer_id = c.id
WHERE o.status = 'pending';
Ausgabe:
- ⚠️ Performance-Problem (Schweregrad: Mittel): Fehlender Index auf Spalte `orders.customer_id` kann zu langsamen JOINs führen.
Vorschlag: `CREATE INDEX idx_orders_customer_id ON orders(customer_id);`
Konfiguration
| Parameter | Beschreibung | Standardwert |
|---|---|---|
databaseType | Der Typ der Zieldatenbank (mysql, postgresql, sqlserver, oracle). | mysql |
ignoredRules | Eine Liste von Regeln, die übersprungen werden sollen. | [] |
severityThreshold | Nur Probleme ab diesem Schweregrad anzeigen (low, medium, high). | low |
Verwandte Skills
- github/sql-optimization – Fokussiert auf Abfrageoptimierung und Performance-Tuning.