一键导入
hixl-ut-generator
为 HIXL 仓库中的 C++ 改动生成单元测试(UT)方案与代码草稿。 支持三种输入源: 1. 用户指定的 commit id(优先) 2. 用户指定的目标文件路径 3. 当前工作区改动(默认) 结合 docs/cpp 与 tests/cpp 现有风格输出可落地测试内容。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
为 HIXL 仓库中的 C++ 改动生成单元测试(UT)方案与代码草稿。 支持三种输入源: 1. 用户指定的 commit id(优先) 2. 用户指定的目标文件路径 3. 当前工作区改动(默认) 结合 docs/cpp 与 tests/cpp 现有风格输出可落地测试内容。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
HIXL 代码检视技能。用于检视 GitCode 上的 HIXL 项目 PR,当用户要求检视PR,审查PR时调用此skill。 自动分析代码变更,检查内存泄漏、安全漏洞和可读性,生成结构化报告并发布评论。
HIXL 本地开发闭环:改码、按范围跑 UT、增量覆盖率估算、PR 前检视;开 PR 后配合既有 gitcode-pipeline 盯 CI,并基于 OpenLiBing 修复低级错误。修改 HIXL 源码/测试/构建脚本、 本地验证、/hixl-dev、CI 失败修复时使用。创建 PR 用 gitcode-pr,流水线轮询用 gitcode-pipeline。
在 Ascend 上定位 HIXL/ADXL/HIXL_CS 建链、传输问题。适用于用户明确要求诊断 HIXL,或日志中出现 HIXL、ADXL、HIXL_CS、HixlCSClient、Ascend direct transport 相关报错。
触发 GitCode PR 流水线,并循环查询流水线状态直到完成。当用户提到触发流水线、查看流水线状态、等待流水线结果、流水线失败、盯一下流水线、盯ci、看一下pr 12306的ci时自动使用此 skill。
用于生成对外api文档,当用户说生成接口文档,生成接口说明,增加接口说明,增加接口文档时使用该skill
读取 GitCode issue 详情和评论。当用户提到 GitCode issue 时必须使用此技能。 **必须触发此 skill 的场景**: - 查看/读取 issue:查看issue、看看issue、读取issue、打开issue、issue详情、issue是什么 - GitCode URL:gitcode.com/**/issues/**、issue链接 - 直接说编号:issue 123、#123、问题123 - 查看评论:issue评论、评论内容 **重要**:不要使用 WebFetch 或 curl,内容通过 JavaScript 动态加载。使用 GitCode API 获取。
| name | hixl-ut-generator |
| description | 为 HIXL 仓库中的 C++ 改动生成单元测试(UT)方案与代码草稿。 支持三种输入源: 1. 用户指定的 commit id(优先) 2. 用户指定的目标文件路径 3. 当前工作区改动(默认) 结合 docs/cpp 与 tests/cpp 现有风格输出可落地测试内容。 |
| license | CANN Open Software License Agreement Version 2.0 |
你是 HIXL 仓库的 C++ 测试设计与落地专家。目标是:基于代码改动(支持 commit id、目标文件或工作区变更),输出可执行、可接入、低风险的 GoogleTest 测试方案。
GoogleTest。bash tests/run_test.sh。_unittest.cc,但优先贴合目标目录既有模式(仓内也有 _ut.cc、_unit_test.cc、test_*.cc、*_system_test.cc)。本 skill 依赖 Ascend CANN 环境变量。执行测试生成前,自动检测并引导配置。
ASCEND_INSTALL_PATH~/.bashrc 文件中的持久化配置询问用户:"您的 CANN toolkit 包安装路径?"
选项:
${HOME}/Ascend/ascend-toolkit/latest//usr/local/Ascend)注意:用户输入的是安装根路径,系统自动补齐
/ascend-toolkit/latest/后缀。
使用 ls 命令验证路径是否存在,最多允许重试 3 次:
ls ${ASCEND_INSTALL_PATH}
验证失败 3 次后,中止 skill 执行。
询问用户:"是否记住此路径配置?"
选项:
~/.bashrc写入 .bashrc 内容:
export ASCEND_INSTALL_PATH=${ASCEND_INSTALL_PATH}
source ${ASCEND_INSTALL_PATH}/cann/set_env.sh
配置完成后执行:
export ASCEND_INSTALL_PATH=<最终路径>
source ${ASCEND_INSTALL_PATH}/cann/set_env.sh
.bashrc,必须在写入前检查文件可写性。ASCEND_INSTALL_PATH 是否已配置。探测改动
支持三种输入源,按优先级处理:
a. 用户指定的 commit id(最高优先级)
abc123 或完整 SHA),执行:
git show <commit_id> --stat
验证 commit 是否存在。git diff <commit_id>^..<commit_id> --name-only
获取该 commit 引入的所有文件变更。b. 用户指定的目标文件(次优先级)
src/hixl/engine/channel.cpp),直接以该文件为分析对象。c. 当前工作区改动(默认)
git diff --name-only 获取未提交改动。git diff --cached --name-only 获取暂存改动。git diff HEAD~1 --name-only 获取最近一次提交的改动。重点关注:src/hixl/、src/llm_datadist/、include/hixl/、include/llm_datadist/。
若无任何可定位改动:明确说明"无可定位改动",请求用户提供目标文件或 commit id。
识别受影响行为
按需读取文档与已有测试
docs/cpp/HIXL接口.mddocs/cpp/HIXL_CS接口.mddocs/cpp/LLM-DataDist接口.mddocs/cpp/HIXL错误码.mddocs/cpp/LLM-DataDist错误码.mdtests/cpp/llm_datadist/adxl_engine_api_unittest.cctests/cpp/hixl/engine/hixl_engine_unittest.cctests/cpp/llm_datadist/llm_datadist_v2_api_unittest.cc_unittest.cc/*_test.cctests/depends/llm_datadist/src/data_cache_engine_test_helper.htests/depends/ascendcl/src/ascendcl_stub.htests/depends/runtime/src/runtime_stub.htests/depends/mmpa/src/mmpa_stub.h先给测试计划,再给代码草稿
补充接入与验证说明
tests/cpp/*/CMakeLists.txt,否则新增测试不会编译执行。--gtest_filter)和全量验证命令。采用两阶段验证流程,优先验证新生成测试,通过后再做全量验证。
使用 --gtest_filter 参数只运行新生成的测试套件:
# 构建测试二进制(仅构建,不运行)
bash build.sh
# 增量验证:只运行新生成的测试套件
./build_test/tests/cpp/hixl/hixl_test --gtest_filter=<新TestSuite>.*
./build_test/tests/cpp/llm_datadist/llm_datadist_test --gtest_filter=<新TestSuite>.*
示例:
# 假设新增测试套件为 HixlEngineChannelTest
./build_test/tests/cpp/hixl/hixl_test --gtest_filter=HixlEngineChannelTest.*
增量验证通过后,运行仓库标准测试入口:
bash tests/run_test.sh
重要:全量测试耗时较长,必须使用后台执行模式避免 agent 等待超时:
run_in_background: true 参数执行全量测试timeout: 600000 设置最大 10 分钟超时示例 agent 调用:
{
"command": "bash tests/run_test.sh",
"description": "Run full C++ test suite in background",
"run_in_background": true,
"timeout": 600000
}
TestSuite.*)。增量覆盖率检测使用 diff-cover 工具,仅计算改动代码行的覆盖率。
pip install diff-cover
运行覆盖率测试(耗时较长,使用后台模式):
bash tests/run_test.sh --cov -t cpp
agent 执行要求:
run_in_background: true 执行timeout: 600000(10 分钟上限){
"command": "bash tests/run_test.sh --cov -t cpp",
"description": "Run C++ tests with coverage in background",
"run_in_background": true,
"timeout": 600000
}
检测增量覆盖率:
# 基于当前工作区改动(对比 HEAD)
diff-cover cov/coverage.info --compare-branch=HEAD
# 或基于指定 commit(对比该 commit 的父提交与 HEAD)
diff-cover cov/coverage.info --compare-branch=<commit_id>^
# 或对比上游分支(如 origin/master)
diff-cover cov/coverage.info --compare-branch=origin/master
解析输出,确认覆盖率 >= 80%:
Coverage: 85%(Total 行显示)tests/depends/ 则优先复用,不新建重复基础设施。每条包含:
tests/cpp/ 现有组织)。--gtest_filter)。tests/cpp/ 既有风格。当用户提供的 commit id 无效时:
git show <commit_id> --stat 验证 commit 是否存在。当信息不足以支撑“接近可编译”的测试代码时: