Coco MCP
精准掌握未测代码
AI 编程智能体生成测试的速度比任何工程师都快,但问题在于——它们不知道现有测试套件已覆盖了哪些内容。Coco MCP Server 将任意 AI 智能体与插桩构建的运行时覆盖率数据相连接。智能体可查询哪些语句、分支和条件已被命中,为未命中的部分编写测试,并验证结果。
团队已在测试。问题是:还有哪些内容未被测到。
AI 正在改变测试的编写速度,但它并未改变一个现实——没人知道这些测试实际覆盖了什么。这一盲区会在发布时、审计时或事故发生后暴露出来。
MCP 是 AI 智能体与工具通信的标准方式
Coco MCP Server 是它们与覆盖率数据通信的桥梁
智能体可以读取代码库的每一行,但仍无从得知哪些代码在测试运行中被实际执行过。只有经过 Coco 插桩的构建才能记录这一信息。
MCP 的作用
模型上下文协议(Model Context Protocol,MCP)是连接 AI 编程智能体与外部工具及数据源的标准接口。VS Code 中的 GitHub Copilot、Claude Code 等智能体充当 MCP 宿主;服务器向智能体提供可调用的工具;智能体自行决定何时调用、查询什么,以及如何处理返回结果。
若没有 MCP,将覆盖率数据提供给 AI 智能体是一项繁琐的手动工作:导出报告、复制结果、粘贴到对话,还要确保没有误读。智能体只能基于这份一次性快照工作,编写新测试后也无法自我核验。
Coco MCP Server 的附加价值
Coco MCP Server 彻底消除了这一手动步骤。智能体可直接请求覆盖率数据,并按需获取:先快速确认数据是否存在,再获取高层级摘要,最后在明确位置后获取未测代码的精确位置。编写并运行新测试后,智能体自动核验结果,确认覆盖率是否切实提升。
底层实现上,这意味着将 cmreport 和 cmcsexeimport 封装为智能体可直接调用的工具,每次变更后重新导入更新的 .csexe 报告并重新查询。
基于 Coco 解析器示例的实测智能体会话结果
Coco 解析器示例 — 真实智能体会话 — 两条自然语言提示词的代码覆盖率演示
两条提示词,八次工具调用,零手动报告
条自然语言提示词:分析覆盖率,随后优化 parser.cpp
次 MCP 工具调用,自动完成每个报告生成与导入步骤
条未执行语句,以精确的"文件名:目标位置"形式输出,用于定向编写新测试
全局判定覆盖率:前后对比
数据来源于每次安装均附带的 Coco 解析器示例,实际结果因项目而异。查看完整智能体会话演示
智能体只能估算哪些代码未被测试
通过读取源代码和测试文件来推断覆盖情况。部分识别出的缺口可能并不存在,而真正的缺口则可能被完全遗漏。没有运行时数据,就无法区分这两种情况。
测试可能写给已执行过的代码
缺乏运行时数据时,智能体可能重复覆盖其看不到的内容,而真正的缺口直到评审或审计时才会被发现。
智能体直接查询插桩构建中未执行的代码位置
Coco 的插桩构建精确记录测试运行中哪些代码被实际执行。MCP Server 将这些数据以可查询工具的形式提供给智能体。智能体获取未测源代码的精确位置,为这些位置编写测试,随后重新构建项目、重新运行测试,并获取新的覆盖率数据进行分析。
智能体精准查询当前决策所需的数据,无原始报告,不浪费上下文窗口
| 工具 | 范围 | 详细信息 |
|---|---|---|
check_coverage_summary |
数据库 | 覆盖率数据是否已导入?是 / 否。 |
get_coverage_overview |
项目 / 文件 / 函数 | 全局覆盖率百分比、按文件细分,可选按函数细分并附圈复杂度(cyclomatic complexity)。智能体据此确定下一步重点审查的文件。 |
get_file_coverage_detail |
文件 / 行 | 按状态输出精确的"文件名:目标位置":未执行、死代码、已执行。可选映射每个检测点对应的执行测试。 |
MCP 主机兼容性
兼容团队现有 AI 智能体
Coco MCP Server 通过 stdio 通信,遵循 MCP 标准。所有兼容宿主无需调整工作流提示词即可直接连接。
当覆盖率数据来自插桩构建,工作方式将发生改变
工程师时间从生产转向审查
智能体从 .csmes 数据库查询未执行的插桩点,为精确的"文件名:行号"位置编写测试,并重新验证。工程师只需审查结果,无需亲自生产。
每个百分点背后都有 .csexe 数据支撑
覆盖率来自 cmreport 读取插桩测试运行构建的 .csmes 数据库。未测代码以文件名和行号精确标注。这一数字将进入发布决策或安全认证案例。
AI 编写的测试进入 TÜV 认证的证据链
智能体编写测试,Coco 对其进行插桩,执行数据写入安全认证案例已引用的同一 .csmes 数据库。SGS TÜV Saar 认证,最高支持 ASIL D,无需新增工具鉴定。
只重跑覆盖变更代码的测试,而非全部测试
analyze_patch_coverage_from_diff 接收 git diff 输出,返回执行了变更行的测试及其当前通过/失败状态。重跑这些测试即可,无需重跑全部 4,000 条。
C、C++、C#、Python、Tcl 和 QML,一套插桩构建全覆盖
大多数企业产品在服务层、UI 层和嵌入式组件之间混用多种语言。Coco 对所有语言统一插桩,将结果汇总至单一 .csmes 数据库,无需独立工具链、独立报告,也无需手动合并数据。
Coco 经 SGS TÜV Saar 独立认证,适用于 ISO 26262 下最高 ASIL D 的安全相关软件。当 AI 智能体提升覆盖率时,提升的是审计机构已认可工具中的覆盖率。
了解 Coco 与所适用标准的对应关系
Coco 在编译器层面封装,构建流程无需任何其他改动。
Coco 是一款代码覆盖率工具,支持 C、C++、C#、QML、Python 和 Tcl。它对构建进行插桩,精确记录测试执行情况,无需修改源代码、测试套件或 CI 流水线。
Coco 生成的认证覆盖率数据,已获审计机构认可
汽车行业
ISO 26262 · ASIL A–D
ISO 26262 按 ASIL 级别定义覆盖率要求:ASIL A 和 B 需满足语句与分支覆盖率,ASIL C 和 D 则需满足 MC/DC(修正条件/判定覆盖)要求。这些数据必须从目标硬件上采集,而非桌面仿真,因为执行环境会影响哪些分支可达。
Coco 对生产二进制文件进行插桩,直接在 ECU 或 SIL 台架上采集判定覆盖和 MC/DC 数据,生成安全认证案例所需的证据。配套鉴定套件(Qualification Kit)支持符合 DO-330 规范的工具鉴定,无需团队从零构建论证体系。
轨道交通
EN 50128 · EN 50716 · SIL 3–4
EN 50128 要求 SIL 3 和 4 级别满足结构性覆盖率要求,通常以分支和条件覆盖率为基准,最关键组件需达到 MC/DC。轨道交通软件运行于基于 RTOS 的嵌入式目标上,通常无网络访问、无显示输出,也无正常关机路径。
Coco 采用"事件触发转储"策略直接从目标设备采集覆盖率,并将嵌入式与桌面测试结果合并至单一 .csmes 数据库,应用程序和测试基础设施无需任何改动。EN 50128 的更新版标准 EN 50716 同样受支持。
工业自动化
IEC 61508 · SIL 1–4
IEC 61508 要求 SIL 2 及以上软件单元进行基于覆盖率的验证。工业安全系统很少只涉及单一语言或单一测试类型:PLC 逻辑用 C 编写,HMI 用 C++ 或 QML,安全层用 C#,分别通过桌面单元测试套件、控制器功能测试和目标设备手动验证进行测试。
Coco 将所有测试类型的覆盖率数据汇总至单一 .csmes 数据库,为功能安全管理人员提供一个统一、可审计的覆盖率数字,反映完整的测试活动,而非仅限于 CI 中运行的部分。配套鉴定套件可选。
医疗行业
IEC 62304 · C 类
IEC 62304 C 类软件要求制定包含结构性覆盖率的书面验证策略。认证机构希望查看哪个测试执行了哪段代码,而不仅仅是一个覆盖率百分比。
Coco 直接从 .csmes 数据库生成按测试、按插桩点的详细报告,AI 智能体在补充覆盖缺口时查询的正是同一数据库。混合使用 C、C++、C# 和 QML 的产品可在单套插桩构建中一并覆盖。配套鉴定套件支持 IEC 62304 和 ISO 14971 下的工具鉴定。
航空航天与国防
DO-178C · DAL A · DO-330
DO-178C 表 A-7 要求在源代码和目标代码级别进行结构覆盖率分析。DAL A 级别强制要求 MC/DC。覆盖率数据必须来自对实际可执行文件在目标处理器或经批准的等效环境上的动态测试,而非静态分析工具。
Coco 对二进制文件进行插桩,直接从执行环境采集 MC/DC 数据。使用外包测试机构的项目可通过 cmmerge 共享插桩二进制文件并集中合并结果,源代码无需离开项目机构。符合 DO-330 规范的工具鉴定证据资料可供获取。
网络研讨会
探索 AI 赋能的代码覆盖率:数分钟内识别高风险代码
这场由 Qt Group 的 Marius Schmidt 主讲的 40 分钟研讨会,演示如何将覆盖率数据转化为自动生成的最高风险函数排名列表——基于自有代码库、随每次构建更新,让发布决策和规划讨论有据可查,而非凭直觉判断。
教程
如何借助 AI 编程助手生成单元测试并最大化覆盖率
了解如何结合使用 GitHub Copilot 与 Coco Code Coverage,将测试覆盖率从 65% 提升至 78%,以及该方法如何适配其他框架和行业,包括安全关键领域。