概述
安裝
內容詳情
替代品
什麼是 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安裝
替代品












