项目简介

Argot (ar-go-tools) 是一个用于Go语言代码的静态分析工具集。它能够执行多种代码分析任务,如污点分析、反向数据流追踪、可达性分析和依赖项扫描。除了提供命令行工具,Argot还提供了一个Model Context Protocol (MCP) 服务器,允许AI助手通过标准化协议访问和利用这些分析能力,从而实现智能化的代码理解和辅助编程。

主要功能点

  • 代码安全分析 (污点/漏洞): 自动识别Go程序中的安全漏洞,例如数据从敏感源流向不安全汇点的路径(污点分析)。
  • 代码行为追踪 (数据流/调用链): 深入理解代码的执行流程,例如从函数调用反向追踪数据来源,或分析函数间的调用关系。
  • 程序结构洞察 (依赖/可达性): 揭示程序的模块依赖、函数可达性,以及包的导入结构,帮助开发者理解大型项目。
  • 潜在错误检测 (Panic分析): 自动检测可能导致程序崩溃(panic)的潜在代码路径。
  • 可视化与统计 (图形/SSA): 生成调用图的图形表示,或提供Go程序SSA(Static Single Assignment)形式的统计数据,辅助调试和优化。
  • AI集成 (智能辅助): 作为AI助手的后端,通过标准化的MCP协议提供上述分析能力,实现自动化代码分析和智能辅助开发。

安装步骤

  1. Go环境准备: 确保您的系统已安装Go语言环境 (Go 1.18 或更高版本)。
  2. 克隆仓库: 使用Git克隆Argot项目的GitHub仓库:
    git clone https://github.com/awslabs/ar-go-tools.git
    cd ar-go-tools
  3. 构建Argot二进制文件: 运行Makefile命令编译核心的'argot'二进制文件:
    make argot-build
    # 或者,使用Go安装命令安装到您的GOPATH/bin目录:
    # make argot-install
    这将生成一个名为'argot'的可执行文件。

服务器配置

MCP客户端需要配置与Argot MCP服务器连接的详细信息。以下是MCP客户端配置文件的JSON示例及参数说明:

{
  "server_name": "Argot Static Analyzer",
  "command": "/path/to/your/argot",
  "args": ["mcp-server", "--port", "8080", "--log-level", "info"],
  "description": "通过MCP协议提供Go语言静态分析工具,供AI助手进行代码理解、安全审计和质量检查。",
  "capabilities": [
    "tools",
    "resources"
  ]
}
  • 'server_name': MCP服务器的显示名称,例如 "Argot Static Analyzer"。
  • 'command': Argot服务器可执行文件的完整路径,例如 '/usr/local/bin/argot' 或 './argot' (如果从项目根目录运行)。
  • 'args': 传递给'argot'命令的参数列表。
    • 'mcp-server': 激活Argot的MCP服务器模式。
    • '--port <PORT>': (可选) 指定服务器监听的端口号,例如 '8080'。如果未指定,可能会使用默认端口。
    • '--log-level <LEVEL>': (可选) 设置日志级别,例如 'info', 'debug', 'warn', 'error'。
    • 其他分析工具的配置参数可能根据'doc/13_mcp_server.md'中的具体说明添加。
  • 'description': 对MCP服务器功能的简要描述。
  • 'capabilities': 服务器支持的MCP协议能力,'tools'表示可以执行工具,'resources'表示可以访问资源。

基本使用方法

  1. 启动Argot MCP服务器: 在您的终端中,导航到Argot项目的根目录(或'argot'二进制文件所在的目录),然后运行MCP服务器:

    ./argot mcp-server --port 8080 --log-level debug

    服务器启动后,它将监听指定端口,等待MCP客户端的连接。

  2. 通过MCP客户端调用分析工具: 配置好您的MCP客户端(例如VS Code插件、LLM应用程序)以连接到Argot MCP服务器。一旦连接成功,您就可以通过客户端接口向Argot MCP服务器发送请求,调用其暴露的静态分析工具。例如,您可以请求对特定Go项目执行污点分析或可达性分析,AI助手将接收并处理这些请求,返回分析结果。具体如何调用工具将取决于MCP客户端的实现和Argot MCP服务器能力声明中注册的工具细节。

信息

分类

开发者工具