概述
安装
内容详情
替代品
什么是 DotNetAnalyzer?
DotNetAnalyzer 是一个 .NET 全局工具,它通过 MCP (Model Context Protocol) 协议将微软 Roslyn 编译器的强大代码分析能力集成到 Claude Code 中。它不仅仅提供语法高亮,而是能够深度理解代码的语义结构、类型关系、调用链等,让 AI 助手能够像专业开发者一样分析和理解 .NET 代码。如何使用 DotNetAnalyzer?
使用非常简单:首先通过 dotnet tool install 命令安装工具,然后在项目目录中创建 .mcp.json 配置文件,Claude Code 就会自动连接到 DotNetAnalyzer 服务器。之后,你可以像与普通开发者对话一样询问代码相关问题,Claude 会自动调用相应的分析工具来回答。适用场景
DotNetAnalyzer 特别适合以下场景: 1. 代码审查和重构 - 自动分析代码质量,找出潜在问题 2. 理解复杂代码库 - 快速了解项目结构和依赖关系 3. 调试和问题排查 - 分析调用链和引用关系 4. 代码生成和自动化 - 基于现有代码生成新的实现 5. 团队协作 - 统一代码标准和规范检查主要功能
如何使用
使用案例
常见问题
相关资源
安装
{
"mcpServers": {
"dotnet-analyzer": {
"command": "dotnet-analyzer",
"args": [
"mcp",
"serve"
],
"env": {
"DOTNET_ENVIRONMENT": "Production",
"DOTNET_ANALYZER_LOG_LEVEL": "Information"
}
}
}
}🚀 DotNetAnalyzer
DotNetAnalyzer 是一个强大的 MCP(Model Context Protocol)服务器工具,它将 Roslyn 的代码分析能力引入 Claude Code,能帮助开发者更高效地进行 .NET 代码开发,提供语义级代码分析、智能代码导航等多种实用功能。
🚀 快速开始
前置要求
- .NET 8.0 SDK 或更高版本
- Claude Code (支持 MCP 协议)
- 一个 .NET 解决方案或项目
安装
方式一:从 NuGet 安装(推荐)✨
DotNetAnalyzer 已发布到 NuGet.org!
# 全局安装 DotNetAnalyzer 工具
dotnet tool install --global DotNetAnalyzer
# 验证安装
dotnet-analyzer --version
# 查看工具位置
dotnet-tool list --global
NuGet 包信息:
- 📦 包名:
DotNetAnalyzer - 🏷️ 版本:
0.8.0 - 🔗 链接: https://www.nuget.org/packages/DotNetAnalyzer
- .NET 8.0 或更高版本
方式二:从源码构建
# 克隆仓库
git clone https://github.com/CartapenaBark/DotNetAnalyzer.git
cd DotNetAnalyzer
# 还原依赖
dotnet restore
# 构建并打包为本地工具
dotnet pack -c Release
# 从本地 NuGet 包安装
dotnet tool install --global DotNetAnalyzer --add-source ./nupkg
更新
# 更新到最新版本
dotnet tool update --global DotNetAnalyzer
卸载
# 卸载工具
dotnet tool uninstall --global DotNetAnalyzer
配置 Claude Code
在项目目录中创建 .mcp.json 文件来配置 MCP 服务器:
配置文件位置:
- 项目级配置(推荐):
.mcp.json- 放在项目根目录 - 用户级配置:
~/.claude/settings.json- 适用于所有项目
创建 .mcp.json 文件:
{
"mcpServers": {
"dotnet-analyzer": {
"command": "dotnet-analyzer",
"args": [
"mcp",
"serve"
],
"env": {
"DOTNET_ENVIRONMENT": "Production",
"DOTNET_ANALYZER_LOG_LEVEL": "Information"
}
}
}
}
或者使用项目级 settings.json:
在项目根目录创建 .claude/settings.json:
{
"enabledMcpjsonServers": ["dotnet-analyzer"]
}
然后在项目根目录创建 .mcp.json 文件(同上)。
配置优先级:
- 企业管理策略(最高)
- 命令行参数
.claude/settings.local.json(本地项目).claude/settings.json(共享项目)~/.claude/settings.json(用户级,最低)
支持的解决方案格式
DotNetAnalyzer 完全支持以下 Visual Studio 解决方案格式:
| 格式 | 扩展名 | 状态 | 说明 |
|---|---|---|---|
| 传统格式 | .sln |
✅ 完全支持 | 文本格式,Visual Studio 2010 - 2019 |
| 新一代格式 | .slnx |
✅ 完全支持 | XML 格式,Visual Studio 2022 17.8+ |
使用示例:
# 使用 .sln 格式
dotnet-analyzer mcp serve --solution MyProject.sln
# 使用 .slnx 格式
dotnet-analyzer mcp serve --solution MyProject.slnx
.slnx 优势:
- 🎯 人类可读的 XML 结构
- 📦 更简洁的语法
- 🚀 .NET CLI 9.0.200+ 默认格式
- ✅ 完全向后兼容 .sln
使用示例
配置完成后,你可以在 Claude Code 中自然地使用这些功能:
你: "分析这个项目的所有诊断信息"
Claude: [调用 get_diagnostics] ...
"发现了 3 个错误和 15 个警告..."
你: "这个方法的调用者有哪些?"
Claude: [调用 get_caller_info] ...
"这个方法被 5 个位置调用..."
你: "帮我提取这部分代码为一个方法"
Claude: [调用 extract_method] ...
"已成功提取为新方法 CalculateTotal..."
✨ 主要特性
引入 DotNetAnalyzer 的原因
Claude Code 是一个强大的 AI 编程助手,但对于 .NET 代码的理解存在局限。DotNetAnalyzer 通过 MCP 协议桥接了这一鸿沟,提供:
- ✅ 语义级代码分析 - 不仅仅是语法高亮,而是真正的类型和符号理解
- ✅ 智能代码导航 - 跳转到定义、查找引用、理解继承层次
- ✅ 项目管理 - 解决方案分析、依赖关系、构建顺序
- ✅ 深度洞察 - 调用图分析、代码度量、复杂度评估
- ✅ 性能优化 - LRU 缓存、增量分析、快速响应
作为 .NET 工具的优势
- 🚀 一键安装 - 通过
dotnet tool install快速安装 - 📦 自动更新 - 支持
dotnet tool update自动更新 - 🔧 跨平台 - 支持 Windows、macOS、Linux
- 🎯 零配置 - 开箱即用,无需手动构建
核心功能
当前版本 (v0.9.0) 提供 74 个 MCP 工具,支持强命名:
✨ v0.9.0 新特性 (即将发布)
代码质量分析和可视化增强:
- ✅ 测试覆盖率分析 - 项目级别测试覆盖率统计和分析
- ✅ 死代码检测 - 自动识别未使用的类型和方法
- ✅ 性能瓶颈分析 - 圈复杂度、方法长度、深度嵌套检测
- ✅ 文档生成器 - 从 XML 注释自动生成项目文档
- ✅ 调用图可视化 - 支持 SVG、JSON、Mermaid 格式导出
- ✅ 错误消息本地化 - 支持中英文错误消息
支持框架:
- .NET 8.0 (C# 12)
- .NET 9.0 (C# 13)
- .NET 10.0 (C# 14)
✨ v0.8.0 新特性
框架扩展和依赖优化:
- ✅ .NET 10.0 支持 - 新增 C# 14 语言版本支持
- ✅ Roslyn 统一 - 所有框架统一使用 Roslyn 5.0.0
- ✅ 项目简化 - 移除条件编译,统一依赖版本
- ✅ 0 警告 0 错误 - 完全消除编译警告和错误
- ✅ 测试通过 - 所有框架测试全部通过 (190/190)
- ✅ 依赖清理 - 移除未使用的包,解决版本冲突
支持框架:
- .NET 8.0 (C# 12)
- .NET 9.0 (C# 13)
- .NET 10.0 (C# 14)
✨ v0.7.0 新特性
功能扩展(Phase 3/4/5 完成):
- ✅ 代码重构工具 - 14 个重构器完全实现(提取方法、重命名、字段封装、接口提取等)
- ✅ 代码生成工具 - 11 个生成器(接口实现、构造函数、属性生成、导入管理等)
- ✅ 高级分析工具 - 7 个分析器(调用图、调用者/被调用者分析、语法树比较等)
- ✅ 代码操作工具 - 完整的代码修复和快速修复支持
- ✅ 完善文档 - 所有工具包含 XML 文档注释
✨ v0.6.0/v0.6.1 新特性
架构优化和 CI/CD:
- 统一输出目录 - 所有构建产物集中到 Bin 目录
- 路径验证和安全 - PathValidator 防止路径遍历攻击
- 接口抽象层 - IWorkspaceManager 和依赖注入支持
- 结构化日志 - ILogger 集成,支持可配置日志级别
- 并发和性能 - LRU 缓存、内存监控、System.Text.Json 优化
- CI/CD 优化 - 多平台构建、NuGet 包缓存加速
✨ v0.5.0 特性
- .slnx 解决方案格式支持 - 完全支持 Visual Studio 2022 的 XML 格式解决方案文件
- Roslyn 5.0 升级 - 升级到最新的 Roslyn 版本,提升稳定性和性能
- 并发测试优化 - 改进测试并发支持,提升 CI/CD 效率
- 性能基准测试 - 新增完整的性能测试套件,确保持续高性能
✅ 已实现的工具
代码诊断:
get_diagnostics- 获取 C# 代码的编译器诊断信息(错误、警告、信息)- 支持项目级别诊断
- 支持单个文件诊断
- 提供错误位置和修复建议
项目管理 (✨ v0.5.0 增强):
list_projects- 列出解决方案中的所有项目- 项目名称、路径、程序集名称
- 项目类型和文档数量
- ✨ 依赖关系分析 - 自动分析项目依赖
- ✨ 循环依赖检测 - 识别循环引用
- ✅ .slnx 支持 - 完全支持新一代 XML 格式解决方案
get_project_info- 获取项目的详细信息- 项目配置信息
- 项目引用和包引用
- 编译诊断统计
- ✨ 源文件列表 - 完整的源文件路径
get_solution_info- 获取解决方案的详细信息- 解决方案配置
- 项目列表和总数
- ✨ 构建顺序 - 拓扑排序计算最优构建序列
- ✨ 启动项目 - 自动识别可执行入口点
- ✅ .slnx 支持 - 加载和解析 .slnx XML 格式
代码分析 (✨ 完整实现):
analyze_code- 分析代码的语法和语义结构- ✅ 语法树解析和层次结构
- ✅ 命名空间、类型、方法提取
- ✅ 类型信息分析(基类、接口、可访问性)
- ✅ Using 指令和依赖关系
- ✅ 语义模型集成
符号查询 (✨ 完整实现):
find_references- 查找符号的所有引用- ✅ 跨文件引用查找
- ✅ 区分声明和引用位置
- ✅ 提取引用上下文
find_declarations- 查找符号的声明位置- ✅ 重写方法的基类声明
- ✅ 接口实现的声明
- ✅ 扩展方法识别
get_symbol_info- 获取符号的详细信息- ✅ 符号元数据(名称、类型、可访问性)
- ✅ 方法签名和参数
- ✅ XML 文档注释提取
- ✅ 特性(Attributes)信息
代码重构 (✅ 完整实现 - Phase 3):
extract_method- 提取方法- ✅ 智能参数推断
- ✅ 预览和应用模式
- ✅ 完整验证和依赖分析
rename_symbol- 重命名符号- ✅ 跨文件重命名
- ✅ 注释和字符串中重命名
- ✅ 预览模式
introduce_variable- 引入局部变量- ✅ 自动命名建议
- ✅ 表达式提取
encapsulate_field- 字段封装- ✅ 自动生成属性
- ✅ 引用点更新
extract_interface- 提取接口- ✅ 成员选择
- ✅ 接口命名
change_signature- 修改签名- ✅ 添加/删除/重排序参数
add_parameter- 添加参数inline_temporary- 内联临时变量safely_remove_as- 安全移除 as 转换remove_unnecessary_code- 移除不必要代码convert_for_to_foreach- for 转 foreachconvert_foreach_to_for- foreach 转 forconvert_if_to_switch- if 转 switchreverse_for_statement- 反转 for 循环list_refactorers- 列出所有可用重构器
代码生成 (✅ 完整实现 - Phase 4):
generate_interface_impl- 生成接口实现generate_constructor- 生成构造函数generate_property- 生成属性generate_deconstructor- 生成解构函数generate_from_usage- 从使用处生成remove_unused_usings- 移除未使用的 usingsort_usings- 排序 using 指令add_missing_imports- 添加缺失的导入organize_imports- 组织导入(移除未使用 + 排序)format_document- 格式化文档format_selection- 格式化选定范围
高级分析 (✅ 完整实现 - Phase 5/6):
get_caller_info- 获取调用者信息- ✅ 调用位置分析
- ✅ 调用类型识别
- ✅ 调用上下文提取
get_callee_info- 获取被调用者信息- ✅ 递归深度分析
- ✅ 方法调用链
get_call_graph- 生成调用图- ✅ DOT 格式导出
- ✅ ✨ SVG 可视化 - 矢量图形输出
- ✅ ✨ JSON 格式 - 结构化数据
- ✅ ✨ Mermaid 格式 - Markdown 集成
- ✅ 节点和边分析
- ✅ 复杂度度量
compare_syntax_trees- 比较语法树- ✅ 结构化差异
- ✅ 统计信息
get_code_diff- 生成代码差异- ✅ Unified diff 格式
apply_code_change- 应用代码修改- ✅ 可选格式化
- ✅ 诊断信息返回
代码质量分析 (✨ 新增 - Phase 6):
get_test_coverage- 获取测试覆盖率- ✅ 项目级别覆盖率统计
- ✅ 文件级别覆盖率分析
- ✅ 行覆盖率、分支覆盖率、方法覆盖率
find_dead_code- 查找死代码- ✅ 未使用的类型检测
- ✅ 未使用的方法检测
- ✅ 删除建议
analyze_performance- 分析性能瓶颈- ✅ 圈复杂度分析
- ✅ 方法长度检测
- ✅ 深度嵌套检测
- ✅ 优化建议
generate_documentation- 生成项目文档- ✅ 从 XML 注释生成文档
- ✅ 支持 Markdown 格式
- ✅ 类和成员文档提取
代码操作 (✅ 完整实现):
get_code_actions- 获取代码操作get_refactorings- 获取重构操作get_completion_list- 获取补全列表- 诊断修复和快速修复支持
✅ 已完成的功能
Phase 1: MCP Server Foundation (✅ 100% 完成)
22 个基础工具 - 代码诊断、项目管理、符号查询、代码分析
Phase 2: Navigation Enhancement (✅ 100% 完成)
7 个导航工具 - 跳转定义、类型层次、成员层次、语义模型、语法树、代码度量
Phase 3: Code Refactoring (✅ 100% 完成)
15 个重构工具 - 完整的重构框架和 14 个具体重构器
Phase 4: Code Generation and Fixing (✅ 100% 完成)
11 个代码生成工具 - 接口实现、构造函数、导入管理、格式化等
Phase 5: Advanced Features (✅ 100% 完成)
7 个高级分析工具 - 调用分析、语法树比较、代码差异
Code Actions and Completion (✅ 100% 完成)
3 个代码操作工具 - 代码操作、重构建议、补全列表
Advanced Query Tools (✅ 100% 完成)
5 个高级查询工具 - 符号解析、定义和引用、文档列表
Phase 6: Code Quality and Visualization (✅ 100% 完成)
4 个新工具 + 可视化增强 - 测试覆盖率、死代码检测、性能分析、文档生成、调用图可视化
🏗️ 架构
系统架构图
graph TB
subgraph "用户层"
A[Claude Code]
end
subgraph "MCP 协议层"
B[MCP Protocol<br/>stdio]
C[dotnet-analyzer<br/>.NET 全局工具]
end
subgraph "DotNetAnalyzer 内部"
D[MCP 服务器]
E[JSON-RPC 消息路由]
F[工具注册与调用]
G[Roslyn 集成层]
end
subgraph "代码分析层"
H[Roslyn APIs<br/>编译器平台]
I[MSBuildWorkspace<br/>工作区管理]
J[CompilationCache<br/>编译缓存]
end
subgraph "项目层"
K[.NET 解决方案/项目]
L[.sln / .slnx<br/>/ .csproj]
end
A -->|MCP 请求| B
B --> C
C --> D
D --> E
E --> F
F --> G
G --> H
H --> I
I --> J
J --> K
K --> L
style A fill:#e1f5ff
style C fill:#c8e6c9
style D fill:#fff9c4
style H fill:#ffccbc
style K fill:#f3e5f5
核心组件关系图
classDiagram
class IWorkspaceManager {
<<interface>>
+GetProjectAsync(path)
+GetCurrentSolutionAsync()
+Dispose()
}
class WorkspaceManager {
-LRUCache~string, Project~ _cache
-SemaphoreSlim _semaphore
-ILogger _logger
+GetProjectAsync(path)
+GetCurrentSolutionAsync()
-LoadProjectAsync(path)
}
class ICompilationCache {
<<interface>>
+GetOrAddAsync(key, factory)
+InvalidateAsync(key)
+ClearAsync()
}
class CompilationCache {
-ConcurrentDictionary _cache
-ILogger _logger
+GetOrAddAsync(key, factory)
+InvalidateAsync(key)
}
class IMcpServer {
<<interface>>
+StartAsync(token)
+StopAsync()
}
class McpServer {
-IWorkspaceManager _workspaceManager
-ToolRegistry _registry
+StartAsync(token)
-InitializeToolsAsync()
}
class ToolRegistry {
-Dictionary~string, ToolDelegate~ _tools
+RegisterTool(name, handler)
+GetTool(name)
+ListTools()
}
class RoslynAnalyzer {
+AnalyzeCode(project, file)
+FindReferences(symbol)
+GetDiagnostics(project)
}
IWorkspaceManager <|.. WorkspaceManager : implements
ICompilationCache <|.. CompilationCache : implements
IMcpServer <|.. McpServer : implements
WorkspaceManager --> ICompilationCache : uses
WorkspaceManager --> CompilationCache : creates
McpServer --> IWorkspaceManager : uses
McpServer --> ToolRegistry : owns
ToolRegistry --> RoslynAnalyzer : invokes
项目结构
graph TB
subgraph "DotNetAnalyzer 项目"
A[src/]
subgraph "DotNetAnalyzer.Cli - CLI 工具"
B[Program.cs<br/>主程序入口]
C[Tools/<br/>MCP 工具实现]
D[appsettings.json<br/>配置文件]
end
subgraph "DotNetAnalyzer.Core - 核心库"
E[McpServer/<br/>MCP 服务器]
F[Abstractions/<br/>接口抽象层]
G[Roslyn/<br/>Roslyn 集成]
H[Refactoring/<br/>重构框架]
I[Models/<br/>数据模型]
J[Configuration/<br/>配置管理]
K[Security/<br/>安全验证]
end
subgraph "Roslyn 集成层"
L[WorkspaceManager<br/>工作区管理]
M[CompilationCache<br/>编译缓存]
N[Refactoring/<br/>重构器]
O[CodeGeneration/<br/>代码生成]
P[CallAnalysis/<br/>调用分析]
Q[Navigation/<br/>导航工具]
end
A --> B
A --> E
B --> C
B --> D
E --> F
E --> G
E --> H
E --> I
E --> J
E --> K
G --> L
G --> M
G --> N
G --> O
G --> P
G --> Q
style B fill:#c8e6c9
style E fill:#fff9c4
style G fill:#ffccbc
end
MCP 工具分类层次图
graph TB
subgraph "DotNetAnalyzer MCP 工具集 (74 个工具)"
A[代码诊断<br/>1 个工具]
B[项目管理<br/>3 个工具]
C[代码分析<br/>1 个工具]
D[符号查询<br/>3 个工具]
E[导航工具<br/>7 个工具]
F[重构工具<br/>15 个工具]
G[代码生成<br/>11 个工具]
H[高级分析<br/>7 个工具]
I[代码质量<br/>4 个工具]
J[代码操作<br/>3 个工具]
K[高级查询<br/>5 个工具]
A1[get_diagnostics]
B1[list_projects]
B2[get_project_info]
B3[get_solution_info]
C1[analyze_code]
D1[find_references]
D2[find_declarations]
D3[get_symbol_info]
E1[go_to_definition]
E2[get_type_hierarchy]
E3[get_member_hierarchy]
E4[get_semantic_model]
E5[get_syntax_tree]
E6[get_code_metrics]
E7[get_document_list]
F1[extract_method]
F2[rename_symbol]
F3[introduce_variable]
F4[encapsulate_field]
F5[extract_interface]
F6[change_signature]
F7[add_parameter]
F8[inline_temporary]
F9[safely_remove_as]
F10[remove_unnecessary_code]
F11[convert_for_to_foreach]
F12[convert_foreach_to_for]
F13[convert_if_to_switch]
F14[reverse_for_statement]
F15[list_refactorers]
G1[generate_interface_impl]
G2[generate_constructor]
G3[generate_property]
G4[generate_deconstructor]
G5[generate_from_usage]
G6[remove_unused_usings]
G7[sort_usings]
G8[add_missing_imports]
G9[organize_imports]
G10[format_document]
G11[format_selection]
H1[get_caller_info]
H2[get_callee_info]
H3[get_call_graph]
H4[compare_syntax_trees]
H5[get_code_diff]
H6[apply_code_change]
H7[resolve_symbol]
I1[get_test_coverage]
I2[find_dead_code]
I3[analyze_performance]
I4[generate_documentation]
J1[get_code_actions]
J2[get_refactorings]
J3[get_completion_list]
K1[get_definition_and_references]
K2[resolve_symbol]
K3[get_document_list]
K4[get_completion_list]
K5[get_refactorings]
A --> A1
B --> B1
B --> B2
B --> B3
C --> C1
D --> D1
D --> D2
D --> D3
E --> E1
E --> E2
E --> E3
E --> E4
E --> E5
E --> E6
E --> E7
F --> F1
F --> F2
F --> F3
F --> F4
F --> F5
F --> F6
F --> F7
F --> F8
F --> F9
F --> F10
F --> F11
F --> F12
F --> F13
F --> F14
F --> F15
G --> G1
G --> G2
G --> G3
G --> G4
G --> G5
G --> G6
G --> G7
G --> G8
G --> G9
G --> G10
G --> G11
H --> H1
H --> H2
H --> H3
H --> H4
H --> H5
H --> H6
H --> H7
I --> I1
I --> I2
I --> I3
I --> I4
J --> J1
J --> J2
J --> J3
K --> K1
K --> K2
K --> K3
K --> K4
K --> K5
style A fill:#ffcdd2
style B fill:#f8bbd0
style C fill:#e1bee7
style D fill:#d1c4e9
style E fill:#c5cae9
style F fill:#bbdefb
style G fill:#b3e5fc
style H fill:#b2ebf2
style I fill:#b2dfdb
style J fill:#c8e6c9
style K fill:#dcedc8
end
🔧 技术细节
核心技术
- .NET 8.0 - 现代化的跨平台开发框架
- .NET CLI Tools - 全局工具框架
- MCP SDK - Model Context Protocol 官方实现
- Roslyn - 微软官方 C# 编译器平台
主要依赖
<!-- MCP 协议 -->
<PackageReference Include="ModelContextProtocol" Version="*" />
<!-- Roslyn 分析 -->
<PackageReference Include="Microsoft.CodeAnalysis" Version="5.*" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="5.*" />
<PackageReference Include="Microsoft.CodeAnalysis.Workspaces.MSBuild" Version="5.*" />
<!-- CLI 框架 -->
<PackageReference Include="System.CommandLine" Version="2.*" />
<!-- 测试 -->
<PackageReference Include="xUnit" Version="2.*" />
<PackageReference Include="Moq" Version="4.*" />
<PackageReference Include="FluentAssertions" Version="6.*" />
支持的解决方案格式:
- ✅ 传统
.sln格式(文本格式) - ✅ 新一代
.slnx格式(XML 格式,Visual Studio 2022+)
📦 安装指南
本地构建
# 构建项目
dotnet build -c Release
# 运行测试
dotnet test
# 运行所有测试(包括性能测试)
dotnet test --filter "Category=Performance"
# 创建 NuGet 包
dotnet pack -c Release
GitHub Actions CI/CD
项目使用 GitHub Actions 自动化构建和发布:
- 触发条件:Push to main branch, 创建 Release, 手动触发
- 构建流程:
- 还原依赖
- 运行测试(CI 环境跳过性能测试)
- 创建 NuGet 包
- 发布到 NuGet.org(仅 Release)
- 创建 GitHub Release
注意:性能基准测试对运行环境敏感,在 CI 环境中会自动跳过。本地开发时可以使用
dotnet test --filter "Category=Performance"运行性能测试。
📄 查看工作流配置
版本策略
- 语义化版本:遵循 SemVer 2.0
- 预发布版本:使用
-beta,-rc等标识 - 自动发布:Git tag 推送时自动发布
🗺️ 开发路线图
DotNetAnalyzer 的开发分为多个阶段,逐步构建完整的代码分析能力。
✅ Phase 1: MCP Server Foundation (已完成)
状态:✅ 完成 | 进度:275% (22/8 工具)
MCP 服务器基础架构,实现核心的代码分析能力。
已完成 (22 个工具):
- ✅ MCP stdio 协议实现(使用官方 SDK)
- ✅ MSBuildWorkspace 集成
- ✅ 项目加载和缓存机制
- ✅ 错误处理和友好错误消息
- ✅ 代码诊断、项目管理、符号查询、文档比较等 22 个工具
- ✅ .NET CLI 工具打包配置
- ✅ 190 个单元测试,100% 通过率
- ✅ GitHub Actions CI/CD
📄 查看详细提案
✅ Phase 2: Navigation Enhancement (已完成)
状态:✅ 完成 | 进度:117% (7/6 工具)
增强代码导航和语义查询能力。
已完成 (7 个工具):
- ✅
go_to_definition- 跳转到定义 - ✅
get_type_hierarchy- 类型继承层次(含基类型、派生类型、接口) - ✅
get_member_hierarchy- 成员层次结构(重写、隐藏、接口实现) - ✅
get_semantic_model- 语义模型访问(符号、类型、常量值) - ✅
get_syntax_tree- 语法树详细信息(JSON 格式,支持范围限制) - ✅
get_code_metrics- 代码复杂度指标(圈复杂度、可维护性指数等) - ✅ 完整的数据模型和测试覆盖
📄 查看详细提案
✅ Phase 3: Code Refactoring (已完成)
状态:✅ 完成 | 进度:100% (15/15 工具) | 优先级:重要
实现常见的代码重构操作。
已完成 (15 个工具):
- ✅
extract_method- 提取方法(完整实现,含预览和应用) - ✅
rename_symbol- 重命名符号(跨文件,支持注释和字符串) - ✅
introduce_variable- 引入变量 - ✅
encapsulate_field- 字段封装 - ✅
extract_interface- 提取接口 - ✅
change_signature- 修改签名 - ✅
add_parameter- 添加参数 - ✅
inline_temporary- 内联临时变量 - ✅
safely_remove_as- 安全移除 as 转换 - ✅
remove_unnecessary_code- 移除不必要代码 - ✅
convert_for_to_foreach- for 转 foreach - ✅
convert_foreach_to_for- foreach 转 for - ✅
convert_if_to_switch- if 转 switch - ✅
reverse_for_statement- 反转 for 循环 - ✅
list_refactorers- 列出所有重构器
框架状态:✅ 完整 - RefactoringEngine、Validator、PreviewGenerator 已就绪
📄 查看详细提案
✅ Phase 4: Code Generation and Fixing (已完成)
状态:✅ 完成 | 进度:100% (11/11 工具) | 优先级:增值功能
自动生成样板代码和修复常见问题。
已完成 (11 个工具):
- ✅
generate_interface_impl- 生成接口实现 - ✅
generate_constructor- 生成构造函数 - ✅
generate_property- 生成属性 - ✅
generate_deconstructor- 生成解构函数 - ✅
generate_from_usage- 从使用处生成 - ✅
remove_unused_usings- 移除未使用的 using - ✅
sort_usings- 排序 using 指令 - ✅
add_missing_imports- 添加缺失的导入 - ✅
organize_imports- 组织导入(移除未使用 + 排序) - ✅
format_document- 格式化文档 - ✅
format_selection- 格式化选定范围
代码操作 (3 个工具):
- ✅
get_code_actions- 获取代码操作 - ✅
get_refactorings- 获取重构操作 - ✅
get_completion_list- 获取补全列表
📄 查看详细提案
✅ Phase 5: Advanced Features (已完成)
状态:✅ 完成 | 进度:100% (7/7 工具) | 优先级:锦上添花
提供高级代码分析和洞察功能。
已完成 (7 个工具):
- ✅
get_caller_info- 调用者分析(调用位置、类型、上下文) - ✅
get_callee_info- 被调用者分析(递归深度分析) - ✅
get_call_graph- 调用图生成(DOT 格式、节点分析) - ✅
compare_syntax_trees- 比较语法树(结构化差异) - ✅
get_code_diff- 生成代码差异(unified diff) - ✅
apply_code_change- 应用代码修改(可选格式化) - ✅
get_document_list- 文档列表 - ✅
resolve_symbol- 符号解析 - ✅
get_definition_and_references- 一次性获取定义和引用
📄 查看详细提案
📊 当前进度
最后更新:2026-03-07
| Phase | 名称 | 状态 | 进度 | MCP 工具数 |
|---|---|---|---|---|
| 1 | MCP Server Foundation | ✅ 完成 | 275% | 22/8 个 |
| 2 | Navigation Enhancement | ✅ 完成 | 117% | 7/6 个 |
| 3 | Code Refactoring | ✅ 完成 | 100% | 15/15 个 |
| 4 | Code Generation and Fixing | ✅ 完成 | 100% | 11/11 个 |
| 5 | Advanced Features | ✅ 完成 | 100% | 7/7 个 |
| - | Code Actions | ✅ 完成 | 100% | 3/3 个 |
| - | Advanced Query | ✅ 完成 | 100% | 5/5 个 |
| 6 | Code Quality and Visualization | ✅ 完成 | 100% | 4/4 个 |
总计:74 个 MCP 工具已实现并暴露
版本里程碑
v0.7.0 里程碑 (✅ 已完成)
- ✅ Phase 3 完整实现(15 个重构工具)
- ✅ Phase 4 完整实现(11 个代码生成工具)
- ✅ Phase 5 完整实现(7 个高级分析工具)
- ✅ 代码质量提升(完整 XML 文档、代码规范)
- ✅ 总计 70 个 MCP 工具
v0.6.1 里程碑 (✅ 已完成)
- ✅ CI/CD 全面优化(多平台构建、NuGet 缓存)
- ✅ Phase 2 完整实现(7 个导航工具)
v0.6.0 里程碑 (✅ 已完成)
- ✅ 统一输出目录优化
- ✅ 架构改进(接口抽象、依赖注入、结构化日志)
- ✅ 并发项目加载和内存监控
- ✅ JSON 序列化优化(System.Text.Json)
- ✅ 190 个单元测试,100% 通过率
- ✅ 完整 API 文档和示例
- ✅ 路径安全验证
- ✅ 增量分析优化
v0.5.0 里程碑 (✅ 已完成)
- ✅ .slnx XML 格式支持
- ✅ Roslyn 5.0 升级
- ✅ 并发测试优化
- ✅ 性能基准测试套件
v0.4.0 里程碑 (✅ 已完成)
- ✅ 8 个核心 MCP 工具全部实现
- ✅ LRU 缓存和性能优化
- ✅ 项目依赖关系分析
- ✅ 构建顺序计算
- ✅ 启动项目识别
- ✅ 集成测试框架
- ✅ 性能基准测试
- ✅ 完整文档(README、CHANGELOG、CONFIGURATION、INTEGRATION_TESTING)
🤝 贡献
欢迎贡献!请查看 CONTRIBUTING.md 了解详情。
开发指南
- Fork 并克隆仓库
- 创建功能分支:
git checkout -b feature/amazing-feature - 提交变更:
git commit -m 'Add amazing feature' - 推送分支:
git push origin feature/amazing-feature - 创建 Pull Request
代码规范
⚠️ 重要:所有贡献者必须遵守项目编码规范
-
📖 编码规范 (CODING_STANDARDS.md) - 必读!
- ✅ 单一真实来源(SSOT)原则
- ✅ Linux 内核编码风格
- ✅ 代码质量标准和审查检查清单
-
📖 开发工作流 (development-workflow.md) - 开发流程
- 📋 提交前验证清单
- 🔄 完整的开发 - 测试 - 提交流程
- 🛠️ 故障排除指南
核心要求:
- 保持单元测试覆盖率 > 80%
- 为公共 API 添加 XML 文档注释
- 编译时 0 个警告,0 个错误
- 运行
dotnet format格式化代码
本地测试工具
开发过程中可以本地安装和测试:
# 从当前目录构建并安装
dotnet pack -c Release
dotnet tool install --global DotNetAnalyzer --add-source ./src/DotNetAnalyzer.Cli/bin/Release
# 测试工具
dotnet-analyzer --version
dotnet-analyzer mcp serve
# 完成后卸载
dotnet tool uninstall --global DotNetAnalyzer
📄 许可证
本项目采用 MIT 许可证。
📚 详细文档
用户指南
-
API 使用指南 - 完整的 MCP 工具 API 参考文档
- 所有 8 个核心工具的详细说明
- 参数、返回值和使用示例
- 配置选项和最佳实践
- 故障排除指南
-
使用示例 - 实际使用场景和代码示例
- 基础示例(诊断检查、解决方案分析)
- 代码分析示例(结构分析、继承关系)
- 符号查询示例(查找引用、符号信息)
- 代码诊断示例(错误定位、修复建议)
- 依赖分析示例(依赖图、构建顺序)
- 综合工作流(代码审查、调试)
-
配置指南 - 详细的配置选项说明
- 环境变量配置
- MCP 服务器配置
- 高级配置选项
- 性能优化建议
开发者文档
- 集成测试指南 - 如何运行和编写集成测试
- 工具测试指南 - MCP 工具测试指南
- 故障排除 - 常见问题解决方案
- CLAUDE.md - 给 Claude Code 的项目说明
项目文档
- CHANGELOG - 版本更新历史
- CONTRIBUTING.md - 贡献指南
- CODE_OF_CONDUCT.md - 行为准则
- SECURITY.md - 安全政策
社区
🙏 致谢
- Roslyn - 强大的 .NET 编译器平台
- Model Context Protocol - 连接 AI 和开发工具的标准
- Claude Code - AI 编程助手
- .NET CLI Tools - .NET 全局工具框架
📞 联系方式
- 问题反馈: GitHub Issues
- 功能建议: GitHub Discussions
- NuGet 包: DotNetAnalyzer on NuGet.org
📊 项目状态
- ✅ v0.8.0 已发布 - 所有 70 个 MCP 工具已实现
- ✅ 0 警告 0 错误 - 代码质量达到生产标准
- ✅ 190/190 测试通过 - 所有框架 100% 通过率
- ✅ 已发布到 NuGet - 可通过
dotnet tool install --global DotNetAnalyzer安装
替代品












