RalfHuesing/AiNetLinter

GitHub: RalfHuesing/AiNetLinter

一款基于 Roslyn 的 C# 静态分析 linter,专为 AI 代理开发工作流设计,通过可配置的质量规则降低自主编辑代码时的错误率。

Stars: 0 | Forks: 0

# AiNetLinter — 面向代理式开发工作流的 .NET C# Linter `AiNetLinter` 是一款 .NET 10 CLI 工具,它通过 Roslyn 语法分析来检查 C# 代码是否符合可配置的质量规则。这些规则专为使用 Cursor、Claude Code 或 GitHub Copilot 等 AI 工具的代理式开发工作流而设计——旨在降低自主代理在编辑 C# 代码时的错误率。 规则选择的科学依据已在[设计原理](Docs/rationale.md)中记录。 ## 快速开始 ``` ainetlinter --config rules.json --path ./MeinProjekt.slnx ``` 对于 AI 代理 —— 输出到 stdout 的完整文档: ``` ainetlinter --readme ``` ## 文档 | 文档 | 内容 | | :--- | :--- | | [Docs/configuration.md](Docs/configuration.md) | 完整的配置参考、CLI 参数、工作流 | | [Docs/rationale.md](Docs/rationale.md) | 设计决策与科学依据 | ## 前 5 名 — 约 35 项可配置设置 | 功能 | 简介 | | :--- | :--- | | **Baseline / Ratchet** (`--baseline`) | 通过 SHA-256 冻结现有的违规项 —— 仅检查已更改的文件。这使得 linter 能够在包含成千上万历史遗留问题的遗留项目中立即投入使用。 | | **AI-Context-Footprint** (`MaxAIContextFootprint`) | 衡量 AI 模型为一个类所需加载的传递性代码行数。这是代理式工作流中上下文预算消耗的直接指标。 | | **Phantom-Dependency-Ban** (`DetectAndBanPhantomDependencies`) | 禁止无法解析的 namespace 和反射加载 API —— 可防止 AI 生成代码中最常见的幻觉错误源。 | | **复杂度限制** (`MaxCyclomaticComplexity`, `MaxCognitiveComplexity`) | 数十年的研究(McCabe 1976, SonarSource)证明,复杂度是预测错误密度和 AI 可分析性差的最强单一预测因子。 | | **Project Overrides** (`ProjectOverrides`) | 针对项目的精细规则调整(例如对 `*.Tests` 放宽限制),无需对所有项目类型采用一刀切的方案,即可实现贴合实际的配置。 | ## 功能 - **基于 Roslyn 的语义分析** — 真正的语义,而非基于文本的启发式 grep - **细粒度的规则系统** — 类设计、复杂度、不可变性、命名规范 - **UI 分离规则** — Blazor CSS 隔离与强制 Code-Behind,WPF 最小化 Code-Behind (MVVM) - **自动修复工具 (`--fix`)** — 自动修正 `sealed`, `readonly`, `#nullable enable` - **Baseline/Ratchet (`--baseline`)** — 现有代码库的增量迁移 - **Playbook 生成器 (`--playbook`)** — 将仓库概述作为 AI 代理的上下文 - **Cursor 规则同步 (`--sync-cursor-rules`)** — 从 `rules.json` 生成 `.cursor/rules/AiNetLinter.mdc` - **影响分析 (`--impact`)** — 确定签名更改时受影响的 Call-Sites - **SARIF 导出 (`--format sarif`)** — 用于 CI/CD 集成 - **分析缓存** — 为 Agentic Loop 提供增量运行时优化
标签:AI辅助开发, Linter, pptx, Roslyn, 云安全监控, 文档结构分析, 静态分析