{"id":50864817,"url":"https://github.com/ralfhuesing/ainetlinter","last_synced_at":"2026-06-27T00:01:04.059Z","repository":{"id":364009116,"uuid":"1265958816","full_name":"RalfHuesing/AiNetLinter","owner":"RalfHuesing","description":"A Roslyn-based static analysis linter designed to optimize C# (.NET 10) codebases for AI agents (Cursor, Claude Code) and reduce cognitive load for humans.","archived":false,"fork":false,"pushed_at":"2026-06-22T22:09:31.000Z","size":1515,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-23T00:08:45.055Z","etag":null,"topics":["agentic-workflows","ai-assisted-development","ai-readability","claude-code","clean-code","code-quality","csharp","cursor-ide","dotnet","dotnet-tools","dotnet10","linter","roslyn","roslyn-analyzer","static-analysis","static-code-analysis"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RalfHuesing.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"Docs/ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-11T08:02:51.000Z","updated_at":"2026-06-22T22:09:35.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/RalfHuesing/AiNetLinter","commit_stats":null,"previous_names":["ralfhuesing/ainetlinter"],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/RalfHuesing/AiNetLinter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RalfHuesing%2FAiNetLinter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RalfHuesing%2FAiNetLinter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RalfHuesing%2FAiNetLinter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RalfHuesing%2FAiNetLinter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RalfHuesing","download_url":"https://codeload.github.com/RalfHuesing/AiNetLinter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RalfHuesing%2FAiNetLinter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34835785,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-26T02:00:06.560Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agentic-workflows","ai-assisted-development","ai-readability","claude-code","clean-code","code-quality","csharp","cursor-ide","dotnet","dotnet-tools","dotnet10","linter","roslyn","roslyn-analyzer","static-analysis","static-code-analysis"],"created_at":"2026-06-15T00:03:28.326Z","updated_at":"2026-06-27T00:01:04.054Z","avatar_url":"https://github.com/RalfHuesing.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AiNetLinter — .NET C# Linter für agentischen Entwicklungsworkflow\n\n`AiNetLinter` ist ein .NET 10 CLI-Tool, das C#-Code per Roslyn-Syntaxanalyse gegen konfigurierbare Qualitätsregeln prüft. Die Regeln sind auf den agentischen Entwicklungsworkflow mit AI-Tools wie Cursor, Claude Code oder GitHub Copilot ausgelegt — mit dem Ziel, die Fehlerrate autonomer Agenten beim Bearbeiten von C#-Code zu senken.\n\nDie wissenschaftlichen Grundlagen der Regelauswahl sind in der [Design-Rationale](Docs/rationale.md) dokumentiert.\n\n---\n\n## Wann einsetzen?\n\nAiNetLinter ist **kein Ersatz für Compiler oder Tests** — es setzt dort an, wo Build und Tests bereits grün sind:\n\n```\ndotnet build  ✓\ndotnet test   ✓\nainetlinter   ← hier\n```\n\nDer Linter prüft keine Syntaxfehler oder Laufzeitverhalten, sondern Designqualität: Komplexität, KI-taugliche Codestruktur, Architektur-Constraints. Er macht den Code besser analysierbar — für Menschen und für AI-Agenten.\n\n---\n\n## Schnellstart\n\n```bash\nainetlinter --config rules.json --path ./src/MeinProjekt.slnx\n```\n\nDer Linter gibt einen Markdown-Report auf stdout aus und beendet sich mit Exit-Code `0` (keine neuen Verstöße) oder `1` (Verstöße gefunden — CI-tauglich).\n\n---\n\n## Agentische Integration\n\nAiNetLinter ist selbst-erklärend: Die eingebauten Discovery-Commands ermöglichen einem KI-Agenten, das Tool explorativ zu verstehen und eigenständig in ein Projekt zu integrieren — ohne Vorab-Konfiguration durch den Entwickler.\n\n```bash\n# Tool erkunden (kein --path nötig):\nainetlinter --list-rules\nainetlinter --list-evals\nainetlinter --describe-rule EnforceSealedClasses\nainetlinter --docs configuration\n\n# Eval-Audit-Prompts assemblieren (inkl. frischer Evidenz und Spezifikation):\nainetlinter --eval naming-drift --path ./src/ --spec README.md \u003e prompt.md\n\n# Lint-Lauf:\nainetlinter --config rules.json --path ./src/MeinProjekt.slnx\n\n# Auto-Fix für triviale Verstöße (sealed, nullable, PascalCase):\nainetlinter --config rules.json --path ./src/ --fix --dry-run\nainetlinter --config rules.json --path ./src/ --fix\n```\n\n**Typischer Einstieg:** `AiNetLinter` in ein eigenes Verzeichnis außerhalb des Projekts installieren (z. B. `C:\\Tools\\AiNetLinter\\`). Das Tool bringt mehrere Dateien mit, lässt sich so von mehreren Projekten gleichzeitig nutzen, und Updates sind an einer einzigen Stelle erledigt. Den Pfad zur Exe einem Agenten im Projektkontext übergeben — dieser exploriert das Tool über die Discovery-Commands und integriert es eigenständig, z. B. als Schritt in einem Test- oder CI-Skript.\n\nVollständige Agent-API-Referenz (alle Flags, Workflows, Error-Format): [Docs/agent-api.md](Docs/agent-api.md)\n\n---\n\n## Ausgewählte Regeln — aus ca. 35 konfigurierbaren Einstellungen\n\n| Regel | Warum relevant |\n| :--- | :--- |\n| **Codebase-Landkarten \u0026 Evals** (`--map`, `--eval`) | Generiert strukturierte Markdown-Übersichten (vocabulary, structure, hotspots, skeleton) oder vollständig assemblierte LLM-Audit-Prompts mit frischer Evidenz für Drift-Audits. |\n| **Baseline / Ratchet** (`--baseline`) | Friert bestehende Verstöße per SHA-256 ein — nur geänderte Dateien werden geprüft. Macht den Linter in Legacy-Projekten mit tausenden Altlasten sofort einsetzbar. |\n| **AI-Context-Footprint** (`MaxAIContextFootprint`) | Misst die transitiven Codezeilen, die ein KI-Modell für eine Klasse laden müsste. Direkte Metrik für Kontextbudget-Verbrauch im agentischen Workflow. |\n| **Phantom-Dependency-Ban** (`DetectAndBanPhantomDependencies`) | Verbietet nicht auflösbare Namespaces und Reflection-Lade-APIs — verhindert die häufigste Halluzinations-Fehlerquelle in KI-generiertem Code. |\n| **Komplexitätsgrenzen** (`MaxCyclomaticComplexity`, `MaxCognitiveComplexity`) | Jahrzehntelange Forschung (McCabe 1976, SonarSource) belegt Komplexität als stärksten Einzel-Prädiktor für Fehlerdichte und schlechte Analysierbarkeit durch KI. |\n| **Project Overrides** (`ProjectOverrides`) | Projektscharfe Regelanpassungen (z. B. `*.Tests` mit lockeren Limits) ermöglichen praxistaugliche Konfigurationen ohne eine Einheitslösung für alle Projekttypen. |\n| **Compound-Suppressions** (`CompoundSuppressions`) | Ermöglicht kontextabhängige Regelunterdrückung und unterstützt `SeverityOverride: \"warning\"` — Verstöße in Szenario A (Bedingungen erfüllt, RelaxedLimit überschritten) können auf Warning herabgestuft werden, ohne den Build zu blockieren. |\n| **LINQ-Kettenlänge** (`MaxLinqChainLength`) | Begrenzt die Anzahl verketteter LINQ-Methoden pro Ausdruckskette, um kognitive Last zu reduzieren. Durch eine konfigurierbare Whitelist werden Builder-Ketten ignoriert. |\n| **Globales Scope-Filtering** (`--project`, `--namespace`) | Ermöglicht die gezielte Eingrenzung der Analyse auf bestimmte Projekte oder C#-Namespaces (inkl. Wildcard-Unterstützung und Ausschluss-Shortcut für Test-Projekte). |\n| **Web-Asset-Linting** (CSS, JS, Razor) | Web-Asset-Analyse fuer CSS (ExCSS), JS (Esprima) und Razor. Begrenzt Dateigroessen, erzwingt ES6-Module, verbietet globale Zuweisungen an 'window', limitiert HTML-Verschachtelungstiefe, komplexe Inline-Lambdas, Control-Flow-Bloecke, verschachtelte Foreach-Schleifen, Komponenten-Parameter und Ternaries in HTML-Attributen — da diese Faktoren die Fehlerrate autonomer Agenten bei Web-Edits massiv erhoehen. Opt-in ueber `Web.IsEnabled = true`. |\n\n---\n\n## Dokumentation\n\n| Dokument | Inhalt |\n| :--- | :--- |\n| [Docs/agent-api.md](Docs/agent-api.md) | Agent-API: alle CLI-Flags, Workflows, Error-Format, Discovery-Commands |\n| [Docs/configuration.md](Docs/configuration.md) | Vollständige Konfigurationsreferenz, CLI-Parameter, Workflows |\n| [Docs/rationale.md](Docs/rationale.md) | Design-Entscheidungen \u0026 wissenschaftliche Grundlagen |\n\n---\n\n\u003e [AiNetLinter](https://github.com/RalfHuesing/AiNetLinter) — Quellcode, Changelog und Issues auf GitHub.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fralfhuesing%2Fainetlinter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fralfhuesing%2Fainetlinter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fralfhuesing%2Fainetlinter/lists"}