Fix: Code-Qualität und Effizienz verbessern (v1.5.1)

- main.py: print() durch logging ersetzt, cleanup nach Logger-Init verschoben
- conf.py: funktionsloses global-Statement entfernt
- database.py: unerreichbaren zweiten Projekt-Check entfernt
- hash_calculation.py: deprecated _handle_xml_file_drop entfernt, nutzlosen
  _get_all_project_xml_files-Wrapper entfernt, seen_paths-Scope-Bug in
  rekursiver Traversierung behoben (O(N²) → O(N)), veraltete List[]-Syntax
  und ungenutzte Imports bereinigt
- transform.py: TOCTOU-Muster (exists+stat) durch direktes stat() mit
  FileNotFoundError ersetzt; fop_conf.exists() gecacht

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-04 17:02:24 +02:00
parent 3d2efe628b
commit b900455d69
10 changed files with 28 additions and 84 deletions
+6 -5
View File
@@ -163,12 +163,12 @@ class TransformationJob:
Returns:
bool: True wenn New-PDF existiert und aktueller ist als alle Inputs
"""
if not self.new_pdf.exists():
try:
output_mtime = self.new_pdf.stat().st_mtime
except FileNotFoundError:
logger.debug(f"New-PDF existiert nicht: {self.new_pdf}")
return False
output_mtime = self.new_pdf.stat().st_mtime
# Prüfe XML-Datei
xml_abs = self.project_dir / self.xml_file
if xml_abs.exists() and xml_abs.stat().st_mtime > output_mtime:
@@ -384,10 +384,11 @@ class TransformationJob:
# Fallback: Traditionelle subprocess-Methode (langsamer, aber robuster)
# Apache FOP Kommandozeile
fop_conf_exists = self.fop_conf.exists()
cmd_line = [
str(self.fop_cmd),
"-c",
str(self.fop_conf) if self.fop_conf.exists() else "",
str(self.fop_conf) if fop_conf_exists else "",
"-r",
"-fo",
str(self.temp_fo),
@@ -396,7 +397,7 @@ class TransformationJob:
]
# Entferne leere Config-Parameter wenn fop.xconf nicht existiert
if not self.fop_conf.exists():
if not fop_conf_exists:
cmd_line = [c for c in cmd_line if c not in ["-c", ""]]
logger.info(f"Starte Apache FOP PDF-Generierung: {self.xml_file.name}")