代理C/C++单元测试生成器(MCP服务器)
该项目是一个高性能 模型上下文协议(MCP)服务器 它自动化了C/C++代码的Google测试(GTest)套件的生成和验证。它利用 libclang 用于AST分析,并提供技术基线(边界、EP、MCDC),以帮助LLM主机生成高质量的测试用例。
______________________________________________________________________
🏗️ 建筑与设计
该公用事业公司充当 桥 在C++构建/分析生态系统和大型语言模型(LLM)之间。它将技术分析(AST、构建、覆盖)与智能测试设计分开,使LLM能够专注于创建高价值的测试场景。
系统概述
graph TD
subgraph "MCP Host"
A["User / Agent Prompt"] --> B["Host LLM"]
end
subgraph "MCP Server (FastMCP)"
C["mcp_server.py"]
D["CodeAnalyzer"]
E["StrategyGenerator"]
F["TestGenerator"]
end
subgraph "Local Tooling"
G["libclang (AST)"]
H["CMake / Make (Build)"]
I["GTest / LCOV (Verify)"]
end
B C
C --> D
C --> E
C --> F
D --> G
F --> H
C --> I序列流:循环中的人工作流程
sequenceDiagram
autonumber
participant U as User
participant H as MCP Host (LLM)
participant S as MCP Server
participant T as OS / Tooling
U->>H: Request Test Generation
H->>U: Mode Choice (Step-by-Step vs E2E?)
U-->>H: Step-by-Step
H->>S: analyze_source_code()
S-->>H: AST Results (Functions, Types)
H->>S: get_test_strategy_context()
S-->>H: Technical Baseline (MCDC, Boundaries)
Note over H,U: MANDATORY REVIEW: Strategy
H->>U: Display Strategy (.md)
U-->>H: Approve Strategy
H->>H: Generate Test Implementation Logic
H->>S: generate_gtest_file(bodies)
S-->>H: Success (GeneratedUT/test.cpp)
Note over H,U: MANDATORY REVIEW: Code
H->>U: Display Generated Code
U-->>H: Approve Code
H->>S: run_and_verify_tests()
S->>T: cmake, make, run, lcov
T-->>S: Execution & Coverage Data
S-->>H: Final Summary
H->>U: Final Report (HTML Coverage link)______________________________________________________________________
🛠️ MCP工具
analyze_source_code:返回深层AST详细信息(签名、类成员、自定义类型)。analyze_existing_tests:返回现有的GTest套件,以确定覆盖范围差距。get_test_strategy_context:提供 技术基线 (MCDC条件、边界值)供LLM在生成过程中使用。generate_gtest_file:将主机提供的测试体合并到一个强大的GTest模板中。run_and_verify_tests:协调构建和验证管道(CMake、Make、GTest、LCOV)。
______________________________________________________________________
🚀 使用指南
1.独立CLI模式(main.py)
该工具可以直接从命令行用于自动化或本地测试。
- 分析并制定战略:
python3 main.py analyze path/to/source.cpp创建 TestStrategy/source_strategy.yaml 和 .md.
- 生成测试代码:
python3 main.py generate TestStrategy/source_strategy.yaml创建 GeneratedUT/source_test.cpp.
- 构建并运行覆盖:
python3 main.py build path/to/source.cpp --coverage --run执行内置 GeneratedUT/build 并生成HTML覆盖率 GeneratedUT/coverage_html/.
- 清洁工作区:
python3 main.py clean安全移除 GeneratedUT/ 和 TestStrategy/ 目录。
2.MCP模式(技能工作流程)
使用启用MCP的代理时,请使用 cpp_test_generator 技能。支持对象包括:
- 基洛代码:用途
.kilocode/skills/ - Roo 代码:用途
.roo/skills/和.roomodes - GitHub Copilot:用途
.github/copilot-instructions.md
工作流序列:
- 初始化:代理要求“逐步”或“端到端”模式。使用“逐步”进行手动审查。
- 技术基线:代理提供战略背景。 请仔细阅读此内容 在
TestStrategy文件夹。 - 批准:授予继续代码生成的权限。
- 代码审查:代理显示生成的代码。 检查此内容是否正确 在
GeneratedUT文件夹。 - 最终验证:授予构建和验证的权限。
______________________________________________________________________
📂 项目结构
src/:核心逻辑(分析器、策略、生成器)。templates/:Jinja2模板CMakeLists.txt以及GTest文件。TestStrategy/:分析结果的输出目录(YAML/MD)。GeneratedUT/:生成的测试和构建工件的输出目录。main.py:独立CLI入口点。mcp_server.py:MCP服务器入口点。
______________________________________________________________________
🔩 安装
需求
- Linux(针对Ubuntu/Debian进行了优化)
libclang,cmake,g++,lcov,python3pip install mcp jinja2 pyyaml rich typer
MCP客户端配置
将此添加到您的 mcp_settings.json 或 mcp.json:
{
"command": "python3",
"args": ["/absolute/path/to/UnitTest_Generator_MCP/mcp_server.py"],
"env": { "PYTHONPATH": "/absolute/path/to/UnitTest_Generator_MCP" }
}