代码分析服务

一个基于Roslyn的.NET C#代码分析服务,提供未引用代码检测、解决方案结构分析等功能,适用于代码质量检查和AI辅助开发。

  • by trite
  • C#
  • 本地部署
  • 更新于
在 GitHub 查看 trite/CodeAnalysisMCP

使用说明

代码分析MCP

一种模型上下文协议(MCP)服务器,为提供代码分析功能。NET C#项目和使用Roslyn的monorepos。此服务使AI代理能够检测未引用的代码,分析解决方案结构,并执行其他代码质量检查。

特性

  • 未引用代码检测:查找代码库中从未引用过的类、方法、属性和字段
  • 可配置范围:分析整个解决方案、特定项目或按文件路径筛选
  • 入口点意识:可选择从分析中排除入口点(主要方法、测试方法、控制器)
  • 公共成员筛选:选择是否将公共成员纳入分析
  • 详细结果:获取包含文件路径、行号、成员类型和可访问性级别的综合报告

可用工具

1.分析解决方案

分析a。NET解决方案文件(.sln),用于未引用的代码成员。

参数:

  • solutionPath (string,必填):.sln文件的完整路径
  • includePublicMembers (bool,可选,默认值:true):在结果中包含公共成员
  • includeEntryPoints (bool,可选,默认值:false):在结果中包含入口点
  • projectFilter (字符串,可选):以逗号分隔的项目名称筛选器列表
  • fileFilter (字符串,可选):逗号分隔的文件路径筛选器列表

2.分析项目

分析单个。NET项目文件(.csproj),用于未引用的代码成员。

参数:

  • projectPath (string,必填):.csproj文件的完整路径
  • includePublicMembers (bool,可选,默认值:true):在结果中包含公共成员
  • includeEntryPoints (bool,可选,默认值:false):在结果中包含入口点
  • fileFilter (字符串,可选):逗号分隔的文件路径筛选器列表

3.溶解阴离子

获取中项目的摘要信息。NET解决方案。

参数:

  • solutionPath (string,必填):.sln文件的完整路径

需求

  • .NET 9.0或更高版本
  • MSBuild(包含在Visual Studio或.NET SDK中)

建筑

dotnet build

作为MCP服务器运行

该服务器通过stdio进行通信,旨在与MCP兼容的AI客户端一起使用。

dotnet run

Claude桌面配置

添加到您的Claude Desktop配置文件中:

视窗: %APPDATA%\Claude\claude_desktop_config.json macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "code-analysis": {
      "command": "dotnet",
      "args": [
        "run",
        "--project",
        "C:\\path\\to\\CodeAnalysisMCP\\CodeAnalysisMCP.csproj"
      ]
    }
  }
}

示例用法

配置后,您可以让Claude分析您的代码:

  • “分析C:\MyProject\MyProject.sln中的解决方案,并找到所有未引用的代码”
  • “检查项目C:\MyProject\MyLib\MyLib.csproj中未使用的私有方法”
  • “在MyProject.sln中查找未引用的代码,但排除测试项目”
  • “C:\MyProject\MyProject.sln中的解决方案包含哪些项目?”

运作原理

  1. 工作区加载:使用Roslyn的 MSBuildWorkspace 加载解决方案和项目
  2. 符号分析:遍历语法树以查找所有声明的符号
  3. 参考文献检索:用途 SymbolFinder.FindReferencesAsync 查找每个符号的所有引用
  4. 过滤:为公共成员、入口点、项目和文件应用可配置的筛选器
  5. 结果:返回包含成员信息和统计信息的详细JSON

建筑

  • 模型:用于分析选项和结果的数据传输对象
  • 服务:
    • WorkspaceLoader:通过Roslyn处理解决方案和项目的加载
    • UnreferencedCodeAnalyzer:执行实际代码分析
  • 工具:向AI代理公开分析功能的MCP工具定义

局限性

  • 仅分析C#代码(通过Roslyn)
  • 要求项目可构建(MSBuild必须能够还原和处理它们)
  • 对于非常大的解决方案,分析可能很慢(考虑使用项目或文件过滤器)
  • 不检测不可访问的代码(返回语句后的代码等)-仅检测未引用的符号

未来的增强功能

未来版本的潜在功能:

  • 死代码检测(无法访问的代码)
  • 圈复杂度分析
  • 代码重复检测
  • 依赖图分析
  • 交叉引用报告

许可证

有关详细信息,请参阅LICENSE.md。