Skip to content

Wartung 2026-04-06: Architektur-Compliance und Verbesserungen #4

@stho32

Description

@stho32

Wartung 2026-04-06: Architektur-Compliance und Verbesserungen

Zusammenfassung

Wartungsanalyse des Repositories gegen die Architektur-Vorlage dotnet-library. Build erfolgreich (2 Warnungen), alle 3 Tests bestanden. Erhebliche Abweichungen von der Soll-Architektur festgestellt.

Build- und Test-Status

Metrik Ergebnis
Build Erfolgreich (2 Warnungen -- EOL-Framework net7.0)
Tests 3/3 bestanden
Warnungen NETSDK1138: net7.0 ist nicht mehr unterstuetzt

Architektur-Compliance: Soll vs. Ist

Kriterium Soll (dotnet-library) Ist Status
Target Framework net8.0+ net7.0 (EOL) FEHLT
CLAUDE.md Vorhanden mit Projekt-Info, Architektur, Befehlen, Regeln Nicht vorhanden FEHLT
Anforderungen-Verzeichnis Anforderungen/ im Projektstamm Nicht vorhanden FEHLT
build.ps1 Build-Script mit build/test/pack/clean Nicht vorhanden FEHLT
TreatWarningsAsErrors true in allen .csproj Fehlt in allen 5 .csproj-Dateien FEHLT
Nullable enable in allen Projekten Vorhanden in allen Projekten OK
ImplicitUsings enable Vorhanden in allen Projekten OK
NUnit.Analyzers Referenziert in Test-Projekten Fehlt FEHLT
coverlet.msbuild Referenziert in Test-Projekten fuer Coverage Fehlt FEHLT
IsPackable/IsTestProject false/true in Test-Projekten Fehlt im Test-Projekt FEHLT
CollectCoverage-Config Coverage-Properties in Test-.csproj Fehlt FEHLT
Global Using NUnit <Using Include="NUnit.Framework" /> Fehlt (manuelles using NUnit.Framework;) FEHLT
CI/CD Workflow Restore, Build, Test (matrix: ubuntu+windows) Build+Publish vorhanden, Test ist auskommentiert TEILWEISE
CI Actions-Versionen checkout@v6, setup-dotnet@v5 checkout@v2, setup-dotnet@v1 (veraltet) FEHLT
CI Trigger on: [push, pull_request] Nur on: push TEILWEISE
dependabot.yml NuGet + GitHub-Actions weekly Updates Nicht vorhanden FEHLT
CodeQL SAST Workflow .github/workflows/codeql.yml Nicht vorhanden FEHLT
Result Pattern Vorhanden in Shared-Namespace Vorhanden (aber im falschen Namespace LittelScriptBuddy) TEILWEISE
File-scoped Namespaces namespace X; in allen Dateien Gemischt -- einige file-scoped, die meisten block-scoped TEILWEISE
Namespace-Konvention Matching mit Ordnerstruktur Typo im Namespace: LittelScriptBuddy statt LittleScriptBuddy FEHLT
Solution-Struktur Domain + Tests (+ optional Utility) Domain, Tests, Console, CommandLineArguments, Persistence (leer) TEILWEISE
Test-Coverage >80% Ziel, alle public Methoden Nur 3 Tests fuer CommentWithCommandRetriever -- viele Klassen ohne Tests FEHLT
NuGet-Paket-Versionen Microsoft.NET.Test.Sdk 18.3.0, NUnit 4.5.1, NUnit3TestAdapter 4.5.0 Microsoft.NET.Test.Sdk 17.4.1, NUnit 3.13.3, NUnit3TestAdapter 4.3.1 FEHLT
.gitignore (Root) Umfassend fuer .NET Nur 1 Zeile: /Source/LittleScriptBuddy/.idea/ FEHLT
README Projektbeschreibung mit Badges Vorhanden mit Badge, aber Titel sagt "LittleScriptBrother" (Typo) TEILWEISE

Kritische Befunde

1. Namespace-Typo: LittelScriptBuddy statt LittleScriptBuddy

Alle Domain-Dateien verwenden den falsch geschriebenen Namespace LittelScriptBuddy (Buchstabendreher "el" statt "le"). Betroffen:

  • LittelScriptBuddy.Domain
  • LittelScriptBuddy.Domain.FilesWatcher
  • LittelScriptBuddy.Domain.ScriptExecution
  • LittelScriptBuddy.Domain.Tests
  • LittelScriptBuddy.Persistence

2. Persistence-Projekt: Typo im Dateinamen und leer

  • Dateiname: LittelScriptBuddy.Persistence.csproj (Typo)
  • Enthaelt nur eine leere Class1.cs -- Platzhalter
  • Ist nicht in der Solution referenziert (nicht im .sln)

3. Tests auskommentiert in CI

Der CI-Workflow build.yml hat den Test-Schritt auskommentiert:

# - name: Test + Cover
#   run: ./update-coverage.sh

4. Shell-Skripte verweisen auf falsches Projekt

run.sh und update-coverage.sh referenzieren Source/spamfilter statt Source/LittleScriptBuddy -- offensichtlich Ueberreste eines anderen Projekts.

5. Prepared Workflows sind Vorlagen eines anderen Projekts

Die Dateien unter Documentation/prepared-workflows/ referenzieren .NET 6.0, spamfilter.sln und P021-Console-Linux-CSharp-001 -- nicht zugehoerig zu diesem Projekt.

6. Fehlende Windows-Pfad-Pruefung im FileChangeWatcher

Die Methode BelongsToTheFilesWeWant prueft /.git/, /.vs/, /.idea/ nur mit Forward-Slashes. Auf Windows werden Backslashes verwendet (\.git\), die nicht gefiltert werden.

Verbesserungsvorschlaege nach Prioritaet

Prioritaet 1 -- Kritisch (Funktionalitaet/Sicherheit)

# Verbesserung Aufwand
1.1 Framework-Upgrade net7.0 -> net8.0: net7.0 ist EOL und erhaelt keine Sicherheitsupdates mehr. Alle 5 .csproj-Dateien aktualisieren. Klein
1.2 Namespace-Typo korrigieren: LittelScriptBuddy -> LittleScriptBuddy in allen .cs-Dateien des Domain-Projekts und der Tests Klein
1.3 Tests in CI aktivieren: Test-Schritt im Workflow build.yml einkommentieren und auf dotnet test umstellen Klein
1.4 TreatWarningsAsErrors aktivieren: In allen .csproj-Dateien hinzufuegen Klein

Prioritaet 2 -- Wichtig (Qualitaet/Wartbarkeit)

# Verbesserung Aufwand
2.1 NuGet-Pakete aktualisieren: NUnit 3.13.3 -> 4.5.1, NUnit3TestAdapter 4.3.1 -> 4.5.0, Microsoft.NET.Test.Sdk 17.4.1 -> 18.3.0 Klein
2.2 CI-Workflow modernisieren: checkout@v2 -> v6, setup-dotnet@v1 -> v5, pull_request-Trigger hinzufuegen Klein
2.3 Test-Coverage ausbauen: Tests fuer Result, FilesProcessor, ConsoleCommandLineParser, TolerantFileReader, FileChangeWatcher, ScriptExecutor hinzufuegen. Aktuell nur 3 Tests. Mittel
2.4 coverlet.msbuild und NUnit.Analyzers in Test-.csproj ergaenzen, Coverage-Messung einrichten Klein
2.5 Test-Projekt-Metadaten ergaenzen: IsPackable=false, IsTestProject=true, Using Include="NUnit.Framework" Klein
2.6 Root-.gitignore erweitern: Aktuell nur 1 Zeile, sollte vollstaendige .NET-Ignores enthalten (die umfassende .gitignore liegt unter Source/) Klein
2.7 FileChangeWatcher: Windows-Pfade filtern: Backslash-Varianten \.git\, \.vs\, \.idea\ hinzufuegen Klein

Prioritaet 3 -- Empfohlen (Best Practices)

# Verbesserung Aufwand
3.1 CLAUDE.md erstellen: Projekt-Beschreibung, Architektur, Build/Test-Befehle, Regeln Klein
3.2 Anforderungen-Verzeichnis anlegen und bestehende Documentation/requirements.md (aktuell nur Platzhalter) dorthin migrieren Klein
3.3 build.ps1 erstellen: Zentrales Build-Script mit build/test/pack/clean Klein
3.4 dependabot.yml erstellen: Automatische Updates fuer NuGet und GitHub Actions Klein
3.5 CodeQL-Workflow hinzufuegen: SAST fuer C#-Code Klein
3.6 File-scoped Namespaces konsequent in allen Dateien verwenden Klein
3.7 Leeres Persistence-Projekt entfernen oder mit Inhalt fuellen -- aktuell toter Code mit Typo im Dateinamen Klein
3.8 Shell-Skripte korrigieren oder entfernen: run.sh und update-coverage.sh referenzieren ein falsches Projekt (spamfilter), ebenso die prepared-workflows Klein
3.9 README-Titel korrigieren: "LittleScriptBrother" -> "LittleScriptBuddy" Klein
3.10 Unused Import entfernen: System.Dynamic in CommentWithCommandRetriever.cs, System.Reflection.Metadata.Ecma335 in FileChangeWatcher.cs Klein

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions