Code-Audit
Du führst ein Codequalitäts-Audit für die Speicher Analyse Tauri-App durch.
Argument
$ARGUMENTS = Dateipfad, Modulname ODER all für vollständiges Audit
Audit-Kategorien
1. Security (KRITISCH)
- •Command Injection (Rust): Werden User-Parameter in
format!()für PowerShell ohne.replace("'", "''")eingesetzt? - •XSS: Wird
innerHTMLmit unescapten Variablen (${variable}) verwendet? WirdescapeHtml()ausutils.jsimportiert? - •Path Traversal: Werden Dateipfade vom Frontend ohne Validierung an Dateioperationen (
remove_dir_all,write,read) weitergegeben? - •CSP: Ist
"csp"intauri.conf.jsonkorrekt konfiguriert (NICHTnull)? - •withGlobalTauri: Ist
withGlobalTauriauffalsegesetzt? - •Capabilities: Sind Tauri-Capabilities korrekt und minimal konfiguriert?
- •Parameter-Validierung: Werden IPC-Parameter (Strings, Pfade, IPs) vor der Verarbeitung validiert/escaped?
- •Escape-Duplikate: Gibt es mehrere verschiedene escapeHtml/esc/_esc Implementierungen statt einem zentralen Import?
2. Performance
- •Blockierende Operationen: Gibt es
std::fs::*(synchron) statttokio::fs::*(async) in Commands? - •Parallele PowerShell: Werden PS-Prozesse parallel gestartet? (müssen sequenziell sein)
- •Timeouts: Hat jeder
run_ps()Aufruf einentokio::time::timeout()Wrapper? - •Chart.js Animationen: Ist
animation: falsegesetzt? - •CSS Animationen: Gibt es
animation: infinitedie GPU/CPU verschwenden? - •Memory Leaks: Werden Timer (
setInterval), Event-Listener und Observer (ResizeObserver) korrekt aufgeräumt? - •Unnötige Re-Renders: Wird der DOM häufiger als nötig aktualisiert?
3. WCAG / Barrierefreiheit
WICHTIG: WCAG-Prüfung MUSS visuell über /visual-verify erfolgen.
- •Kontrastwerte: Text-auf-Hintergrund mindestens 4.5:1 Ratio
- •Akzentfarben:
--accent(#6c5ce7) NUR für Borders/Backgrounds, NICHT für Text - •Text-Farben:
--text-primaryfür Inhaltstext,--accent-text(#c4b5fd) für Labels - •ARIA-Attribute:
role,aria-label,aria-expandedfür interaktive Elemente - •PFLICHT: Bei WCAG-Audit IMMER
/visual-verifyfür jeden View aufrufen
4. Tauri Best Practices
- •Single Instance:
tauri-plugin-single-instanceaktiv? - •CSP konfiguriert:
tauri.conf.json→security.cspist NICHTnull? - •withGlobalTauri: Ist
falsegesetzt (verhindert direkten Zugriff aufwindow.__TAURI__)? - •Capabilities: Minimal-Prinzip — nur benötigte APIs freigegeben?
- •Command-Registrierung: Alle Commands in
lib.rs→generate_handler![]registriert? - •Stubs: Gibt es Commands die nur
Ok(json!({"success": true}))zurückgeben ohne echte Logik? - •Mutex-Handling: Werden
Mutex/RwLockkorrekt verwendet? Kann Mutex-Poisoning auftreten?
5. Projektkonventionen
- •Async: Rust-Commands sind
async? Blockierende Ops inspawn_blocking()? - •Error-Handling:
Result<Value, String>Rückgabetyp? Fehler korrekt propagiert? - •Deutsche UI-Texte: Korrekte Umlaute (ä, ö, ü, ß), keine ae/oe/ue?
- •PowerShell: Über
crate::ps::run_ps(), nie direktstd::process::Command::new("powershell.exe")? - •_loaded Flags: Werden sie bei Fehler zurückgesetzt?
- •Logging:
console.error('[<modul>]', err.message)Format? - •escapeHtml: Wird die zentrale Funktion aus
utils.jsverwendet (nicht eigene Varianten)? - •Lifecycle: Hat jede View ein
destroy()das Timer/Listener/Observer aufräumt?
6. Stub-Erkennung
- •Fake-Funktionen: Gibt es Commands die
success: truezurückgeben ohne echte Implementierung? - •Kritische Stubs: Privacy, Preferences, Session, Export — diese MÜSSEN als Stub markiert werden
- •Frontend-Warnung: Erkennt das Frontend Stub-Antworten und warnt den User?
Audit-Ablauf
Einzelne Datei (/audit-code src-tauri/src/commands.rs)
- •Lies die angegebene Datei vollständig
- •Prüfe alle 6 Kategorien
- •Erstelle den Audit-Bericht
Ganzes Modul (/audit-code privacy)
- •Lies
src-tauri/src/commands.rs— suche nach dem Modul-Bereich (z.B.// === Privacy ===) - •Lies
renderer/js/<modul>.js - •Prüfe den Bridge-Eintrag in
renderer/js/tauri-bridge.js - •Prüfe relevante HTML/CSS
- •Erstelle den Audit-Bericht
Vollständiges Audit (/audit-code all)
PFLICHT: ALLE Dateien vollständig lesen. NICHT nur greppen.
- •Rust-Backend: Lies
src-tauri/src/commands.rs,ps.rs,scan.rs,lib.rsvollständig - •Konfiguration: Lies
src-tauri/tauri.conf.json(CSP, Capabilities, withGlobalTauri) - •Frontend JS: Lies ALLE
renderer/js/*.jsDateien vollständig - •Bridge: Lies
renderer/js/tauri-bridge.jsvollständig - •HTML/CSS: Lies
renderer/index.htmlundrenderer/css/style.css - •Prüfe ALLE 6 Kategorien auf JEDE Datei
- •Erstelle den Gesamtbericht
VERBOTEN bei all:
- •"Fokussiere auf die häufigsten Problemkategorien" — ALLE Kategorien prüfen
- •Nur greppen statt Dateien zu lesen — Grep findet keine Kontext-Probleme
- •Dateien überspringen weil sie "wahrscheinlich OK" sind
Ausgabeformat
markdown
## Code-Audit: [Datei/Modul/Gesamt]
### Zusammenfassung
- Geprüfte Dateien: X
- Gefundene Probleme: X (Y kritisch, Z Hinweise)
### Kritische Probleme
| # | Kategorie | Datei:Zeile | Problem | Empfehlung |
|---|-----------|-------------|---------|------------|
| 1 | Security | commands.rs:42 | format!() ohne Escaping | .replace("'", "''") |
### Hinweise
| # | Kategorie | Datei:Zeile | Problem | Empfehlung |
|---|-----------|-------------|---------|------------|
| 1 | Konvention| view.js:10 | ... | ... |
### Stubs
| # | Command | Zeile | Kritikalität | Empfehlung |
|---|---------|-------|-------------|------------|
| 1 | apply_privacy_setting | 123 | HOCH | Echte Implementierung |
### Positiv
- Was gut umgesetzt ist
Wichtig
- •Keine automatischen Fixes — nur berichten, User entscheidet
- •Konkreter sein: Immer Datei:Zeile angeben
- •Priorisieren: Security > Performance > WCAG > Tauri > Konventionen
- •False Positives vermeiden: Im Zweifel den Kontext der Codestelle prüfen
- •Stubs explizit auflisten: Jede Funktion die nichts tut aber Erfolg meldet