Beispielarbeiten · Code & Fehler
Code-Review: Fehler mit Zeile, Schwere und Korrektur, am Verhalten belegt
Ein kleines Demo-Modul mit den typischen Review-Funden: SQL aus Zeichenketten, veränderbarer Vorgabewert, nacktes except, offene Datei, eval, Passwort im Quelltext. Jeder Befund mit Zeile, Schwere und Vorschlag; die Korrektur wird ausgeführt und belegt.
Musterarbeit (Demo), kein Kundenauftrag. Gebaut als Probeaufgabe mit erfundenen Beispieldaten; die Prüfzahlen unten stammen aus dem automatischen Prüflauf und sind nicht geschönt.
Was gebaut wurde
- Befunde nach Schwere geordnet, jeder mit Zeile und Vorschlag
- Einschleusung gelingt in der Fehlerfassung und scheitert in der korrigierten
- Sauberer Code ohne Fehlalarm
- Modul und Betrieb erfunden
modul-vorher.py herunterladen modul-nachher.py herunterladen
Wie geprüft wurde
Automatischer Prüflauf vom 29.10.2026, aus dem Protokoll (Testdaten erfunden, Zahlen gemessen):
- Demo-Modul: 7 eingebaute Fehler in 7 Arten mit Zeile, Schwere und Vorschlag gefunden, korrigierte Fassung 0 Befunde
- Einschleusung gelingt vorher (2 Treffer) und scheitert nachher
- 11 Pruefungen
Alle Prüffälle (11 von 11 grün)
- ✓ findet alle sieben eingebauten fehlerarten
- ✓ korrigierte fassung ohne befund
- ✓ gegenprobe sauberer code ohne befund
- ✓ gegenprobe schlechter code faellt durch
- ✓ nach schwere geordnet mit zeile
- ✓ einschleusung in fehlerfassung gelingt korrigiert nicht
- ✓ vorgabewert fehler gemessen
- ✓ korrigiert vergleich und datei richtig
- ✓ keine ki floskeln
- ✓ kein versprechen
- ✓ demo gekennzeichnet
Grenzen
Was diese Probe nicht abdeckt, steht hier, damit niemand mehr erwartet:
- Statische Durchsicht: die Fachlogik des Kunden kennt sie nicht
- Ersetzt weder Tests noch eine Sicherheitspruefung der ganzen Anwendung
- Geprueft wird Python; andere Sprachen nur nach Absprache
Der Bericht
# Code-Review - Demo-Modul Kornblume (erfunden)
Musterarbeit von GL Tools, kein Kundenauftrag. Gegenstand ist ein Demo-Projekt des erfundenen Betriebs Kornblume, selbst geschrieben, ohne echte Schluessel oder Kundendaten.
## Befunde der Fehlerfassung (7), nach Schwere geordnet
- [hoch] Zeile 4: fest einprogrammiertes passwort. Vorschlag: Aus der Umgebung lesen, nie im Quelltext.
- [hoch] Zeile 8: sql aus zeichenketten. Vorschlag: Platzhalter ? mit Parametern verwenden (Einschleusung).
- [hoch] Zeile 25: eval auf eingabe. Vorschlag: ast.literal_eval oder eine feste Rechenfunktion.
- [mittel] Zeile 11: veraenderbarer vorgabewert. Vorschlag: Vorgabe None, in der Funktion anlegen.
- [mittel] Zeile 17: datei ohne with. Vorschlag: with open(...) schliesst auch im Fehlerfall.
- [mittel] Zeile 20: nacktes except. Vorschlag: Konkrete Ausnahme fangen (OSError), nie alles.
- [niedrig] Zeile 29: vergleich mit none per gleich. Vorschlag: x is None.
## Befunde der korrigierten Fassung: 0
## Gegenprobe am Verhalten
- Einschleusung "x' or '1'='1" liefert in der Fehlerfassung 2 Treffer, in der korrigierten Fassung 0 Treffer.
- Zweiter Aufruf von merke teilt die Liste in der Fehlerfassung: True; korrigiert: False.
- Fehlende Datei: korrigierte Fassung gibt None zurueck, ohne ein Dateihandle offen zu lassen.
## Was dieses Review nicht kann
Es liest den Quelltext statisch und kennt die Fachlogik des Kunden nicht. Ob eine Funktion das Richtige tut, zeigen nur Tests und Gespraech mit dem Inhaber; ein Review ersetzt weder Tests noch eine Sicherheitspruefung der ganzen Anwendung.So etwas für deinen Betrieb?
Beschreib kurz, was du brauchst. Du bekommst einen Festpreis, bevor ich anfange; ohne dein Ja passiert nichts.