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 |
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
Architektur-Compliance: Soll vs. Ist
Anforderungen/im Projektstammtruein allen .csprojenablein allen Projektenenablefalse/truein Test-Projekten<Using Include="NUnit.Framework" />using NUnit.Framework;)on: [push, pull_request]on: push.github/workflows/codeql.ymlLittelScriptBuddy)namespace X;in allen DateienLittelScriptBuddystattLittleScriptBuddy/Source/LittleScriptBuddy/.idea/Kritische Befunde
1. Namespace-Typo:
LittelScriptBuddystattLittleScriptBuddyAlle Domain-Dateien verwenden den falsch geschriebenen Namespace
LittelScriptBuddy(Buchstabendreher "el" statt "le"). Betroffen:LittelScriptBuddy.DomainLittelScriptBuddy.Domain.FilesWatcherLittelScriptBuddy.Domain.ScriptExecutionLittelScriptBuddy.Domain.TestsLittelScriptBuddy.Persistence2. Persistence-Projekt: Typo im Dateinamen und leer
LittelScriptBuddy.Persistence.csproj(Typo)Class1.cs-- Platzhalter.sln)3. Tests auskommentiert in CI
Der CI-Workflow
build.ymlhat den Test-Schritt auskommentiert:4. Shell-Skripte verweisen auf falsches Projekt
run.shundupdate-coverage.shreferenzierenSource/spamfilterstattSource/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.slnundP021-Console-Linux-CSharp-001-- nicht zugehoerig zu diesem Projekt.6. Fehlende Windows-Pfad-Pruefung im FileChangeWatcher
Die Methode
BelongsToTheFilesWeWantprueft/.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)
LittelScriptBuddy->LittleScriptBuddyin allen .cs-Dateien des Domain-Projekts und der Testsbuild.ymleinkommentieren und aufdotnet testumstellenPrioritaet 2 -- Wichtig (Qualitaet/Wartbarkeit)
IsPackable=false,IsTestProject=true,Using Include="NUnit.Framework"\.git\,\.vs\,\.idea\hinzufuegenPrioritaet 3 -- Empfohlen (Best Practices)
Documentation/requirements.md(aktuell nur Platzhalter) dorthin migrierenrun.shundupdate-coverage.shreferenzieren ein falsches Projekt (spamfilter), ebenso die prepared-workflowsSystem.Dynamicin CommentWithCommandRetriever.cs,System.Reflection.Metadata.Ecma335in FileChangeWatcher.cs