| Datei | Klasse | Zeilen | Methoden |
|---|---|---|---|
src/modules/builder/kompilator.py |
BuildConfig |
20-61 | 1 (__post_init__) |
src/modules/builder/kompilator.py |
BuildResult |
63-79 | 1 (__post_init__) |
src/modules/builder/kompilator.py |
Kompilator |
81-430 | 9 |
src/gui/dialogs/build_dialog.py |
BuildWorker |
18-41 | 1 (run) |
src/gui/dialogs/build_dialog.py |
BuildDialog |
43-476 | 15 |
Kompilator (kompilator.py):
- Gut strukturiert, klare Verantwortlichkeiten
build()Methode mit ~80 Zeilen ist die groesste, aber noch vertretbar_build_command()und_clean_build()sind sauber extrahiertcreate_spec_file()ist eigenstaendig und koennte ausgelagert werden
BuildDialog (build_dialog.py):
_setup_ui()delegiert bereits an_create_basic_tab(),_create_advanced_tab(),_create_files_tab()- UI-Code ist durch Tabs natuerlich aufgeteilt
_start_build()sammelt Config und startet Worker - angemessene Komplexitaet- StyleSheet (50+ Zeilen) ist inline im
_setup_ui()
Aufwand: Gering Risiko: Kein
Das StyleSheet in BuildDialog._setup_ui() (Zeilen 73-122) sollte in eine Klassenvariable oder separate Methode:
class BuildDialog(QDialog):
STYLESHEET = """
QDialog { background-color: #1e1e1e; ... }
...
"""Aufwand: Gering Risiko: Kein
Kompilator.create_spec_file() (Zeilen 334-430) in eigene Klasse SpecFileGenerator:
class SpecFileGenerator:
"""Erstellt .spec Dateien fuer PyInstaller"""
@staticmethod
def generate(config: BuildConfig, output_path: str = None) -> str:
...Aufwand: Gering Risiko: Kein
BuildConfig hat keine Validierung. Vorschlag:
@dataclass
class BuildConfig:
...
def validate(self) -> List[str]:
"""Prueft ob Config gueltig ist. Gibt Liste von Fehlern zurueck."""
errors = []
if not os.path.exists(self.script_path):
errors.append(f"Script nicht gefunden: {self.script_path}")
if self.icon and not os.path.exists(self.icon):
errors.append(f"Icon nicht gefunden: {self.icon}")
return errorsAufwand: Mittel Risiko: Gering
Die Fortschritts-Erkennung in Kompilator.build() (Zeilen 204-217) ist inline:
class BuildOutputParser:
"""Parst PyInstaller-Ausgabe fuer Fortschrittsanzeige"""
def parse_line(self, line: str) -> tuple[int, list[str]]:
"""Returns (progress_delta, warnings)"""- MainWindow aufteilen: Die MainWindow-Klasse (940 Zeilen) ist zwar gross, aber typisch fuer ein Hauptfenster einer IDE. Ein Refactoring wuerde viele Dateien betreffen und ist kein Builder-spezifisches Thema.
- BuildDialog in mehrere Dialoge: Die Tab-Struktur ist bereits eine natuerliche Aufteilung. Separate Dialoge wuerden die UX verschlechtern.
| Vorschlag | Aufwand | Risiko | Empfehlung |
|---|---|---|---|
| StyleSheet extrahieren | Gering | Kein | Umsetzen |
| SpecFile-Generator extrahieren | Gering | Kein | Umsetzen |
| BuildConfig-Validierung | Gering | Kein | Umsetzen |
| Build-Output Parser | Mittel | Gering | Optional |
Fazit: Der Builder-Code ist bereits gut strukturiert. Die vorgeschlagenen Aenderungen sind inkrementelle Verbesserungen, kein grundlegendes Refactoring noetig. Die drei empfohlenen Aenderungen koennen sicher und unabhaengig voneinander umgesetzt werden.