AiNetLinter analysiert C#-Code in .sln- und .slnx-Solutions mit Roslyn
gegen die in rules.json konfigurierte Regelmenge. Es kann als CLI-Batch-Tool
oder als MCP-Server betrieben werden; beide
Modi verwenden dieselbe Analyse-Engine.
| Modus | Schnittstelle | Aufgabe |
|---|---|---|
| CLI-Batch-Modus | ainetlinter --config … --path … |
Führt einen Lint-Lauf aus, schreibt einen Markdown-Report nach stdout und setzt einen Exit-Code. |
| MCP-Server-Modus | ainetlinter --mcp-server |
Stellt die Analyse als einzeln abfragbare Tools für einen laufenden Coding-Agenten bereit. |
Compilerfehler und Laufzeitverhalten sind nicht Gegenstand der Analyse. Build und Tests bleiben eigenständige Prüfungen.
Die MCP-Tools stellen dem Agenten Informationen zu einzelnen Symbolen, Zusammenhängen und dem aktuellen Regelstand bereit.
| Arbeitsphase | Abfragen | Gelieferte Informationen |
|---|---|---|
| Orientierung vor einem Edit | get_feature_context, find_symbol, get_file_skeleton, get_symbol_body |
Deklarationen, Member-Struktur, Metriken, direkte Aufrufer, statische Test-Zuordnung und aktuelle Regelverstöße. |
| Abhängigkeiten untersuchen | find_references, get_call_tree, get_type_hierarchy, dependency_graph |
Aufrufstellen, Aufrufer-/Aufgerufene-Bäume, Vererbung und semantische Typreferenzen. |
| Externe APIs untersuchen | inspect_assembly, find_assembly_extensions |
Öffentliche API und klassische Extension-Methoden einer exakt angegebenen lokalen DLL metadata-only über Roslyn; optional gegen eine Consumer-Solution. |
| Änderung und Tests einordnen | get_impact, get_test_context |
Betroffene Call-Sites; für Diff-Kontext auch geänderte Symbole, statische Test-Zuordnungen und ausführbare Testfilter. |
| Nach einem Edit prüfen | get_violations, metrics_lookup, safeguard |
Aktuelle Verstöße für einen Scope, Symbolmetriken mit Schwellwert-Abgleich sowie Score, Pass/Fail und deterministische Top-Befunde mit Gesamt-/Trunkierungsmetadaten. |
| Repository-Audit | metrics_tree, pattern_detect, find_duplicates, find_dead_code, find_magic_values |
Aggregierte Strukturmetriken und Kandidaten für konfigurierbare Pattern, Duplikate, unreferenzierten Code und Magic Values. |
Für Textmuster, Konfiguration und Nicht-C#-Dateien stehen search_pattern und
bei lokaler Datei-/Zeilenarbeit auch rg zur Verfügung. Symbol-, Referenz- und
Impact-Fragen werden über die Roslyn-basierten MCP-Tools beantwortet.
ainetlinter --config rules.json --path .\src\MeinProjekt.slnxDer Lauf liefert Exit-Code 0 ohne neue Verstöße und 1, wenn Verstöße
gefunden wurden. Weitere CLI-Funktionen sind unter anderem:
--fixfür die Anwendung einfacher Roslyn-basierter Fixes;--create-baselineund--baselinefür inkrementelle Einführung in bestehenden Code;--sync-agent-rulesund--sync-agent-rules-onlyfür aus der Konfiguration erzeugte Agenten-Regeln;--list-rules,--describe-ruleund--docszur Discovery ohne Lint-Lauf.
Parameter, Exit-Codes und vollständige Workflows: Docs/agent-api.md.
Registrierung in einem MCP-Host:
{
"mcpServers": {
"ainetlinter": {
"command": "ainetlinter",
"args": ["--mcp-server"]
}
}
}Für eine getrennte Daemon-Instanz kann die Registrierung eine sichere ID angeben:
{
"mcpServers": {
"ainetlinter-beta": {
"command": "ainetlinter",
"args": ["--mcp-server", "--daemon-instance", "beta"]
}
}
}Die ID beginnt mit einem ASCII-Buchstaben, enthält danach nur ASCII-
Buchstaben, Ziffern sowie ., _ oder - und ist maximal 32 Zeichen lang.
Die ID wird invariant in Kleinbuchstaben normalisiert; BETA und beta
verwenden deshalb denselben Named-Pipe-Endpunkt. Ohne ID bleibt der bisherige
Named-Pipe-Endpunkt unverändert.
Jeder projektbezogene Tool-Aufruf erhält einen absoluten projectRoot. Im
Projektroot liegt die Definition der Solution und Regeldatei:
{
"solution": "src/MeinProjekt.slnx",
"rules": "rules.json"
}Diese Datei heißt ainetlinter.project.json; ihre Pfade werden relativ zu ihr
aufgelöst. Im MCP-Modus gehören --path und --config nicht in die
Registrierung. ainetlinter://agent-guide stellt den einmaligen Bootstrap-
Leitfaden samt dauerhafter Agentenregel bereit; tools/list liefert die
aktuellen Tool- und Parameterschemas. Die Resource
ainetlinter://rules?projectRoot=<url-encoded> liefert pro adressiertem
Projekt-Key die frisch generierte effektive Regelkonfiguration mit Herkunft,
aktiven Regeln und Metrik-Schwellwerten.
Die Tools liefern außerdem fachliche MCP-Annotations: Analyse- und Health-Abfragen
sind read-only, reload_config ist idempotent, und
report_observability_feedback ist nicht idempotent. Diese Werte sind Hinweise für
Hosts und keine Sicherheitsgarantie; Berechtigungs- und Pfadprüfungen bleiben davon
unabhängig.
Die dauerhafte MCP-Regel wird nur für die bevorzugte Werkzeugwahl geladen. Der
vollständige Bootstrap ist bei einer neuen Integration einmalig über
ainetlinter://agent-guide oder offline mit ainetlinter --docs mcp-bootstrap
abzurufen.
Die laufenden Bootstrap-Ausgaben ergänzen einen dynamischen
Registrierungsblock mit dem tatsächlichen Pfad des aktuellen AiNetLinter-
Prozesses. Verwende diesen absoluten command-Pfad, wenn der MCP-Host
ainetlinter nicht über PATH auflösen kann.
Registrierung, Projektvertrag und Tool-vs.-Textsuche: Docs/integration.md.
Für externe lokale DLLs stehen inspect_assembly und find_assembly_extensions bereit. Beide
akzeptieren einen absoluten assemblyPath und führen die Assembly nicht aus. projectRoot
ist optional; mit receiverType prüft die Extension-Suche die tatsächliche Roslyn-
Anwendbarkeit im geladenen Consumer-Projekt. Unaufgelöste Abhängigkeiten werden als
partial gekennzeichnet.
rules.json definiert Regeln und Grenzwerte. Dazu gehören unter anderem
Komplexitäts- und Strukturmetriken, der AI-Context-Footprint, projekt- und
pfadspezifische Overrides, Baselines sowie Suppressions. Die Web-Analyse für
CSS, JavaScript und Razor wird über Web.IsEnabled aktiviert.
Die vollständige Konfigurationsreferenz enthält alle Regel-IDs, Felder und Standardwerte: Docs/configuration.md.
Die Dokumente sind in die Binary eingebettet und können ohne Netzzugriff über
ainetlinter --docs <name> ausgegeben werden.
| Dokument | Inhalt |
|---|---|
| Docs/agent-api.md | Alle CLI-Flags, MCP-Tools, Parameter, Output- und Fehlerverträge. |
| Docs/integration.md | Integration in ein bestehendes Projekt, Baseline und MCP-Registrierung. |
| Docs/mcp-bootstrap.md | Einmaliger Bootstrap für die MCP-Integration eines Projekts. |
| Docs/configuration.md | rules.json-Schema, Regeln, Defaults und Deployment-Hinweise. |
| Docs/rationale.md | Design-Entscheidungen und Quellen zur Regelauswahl. |
| Docs/ROADMAP.md | Entwicklungshistorie und abgeschlossene Vorhaben. |
AiNetLinter — Quellcode, Changelog und Issues auf GitHub.