본문으로 건너뛰기
cccskills
무료GitHub에 공개

asan

以 AddressSanitizer(ENABLE_TEST_SANITIZE=ON)构建并运行 vlink-test 单元测试,复现 CI 的 ASan 门禁。用户要求"跑 asan"、"内存检测测试"、 排查 ci-test 的 sanitize 失败时使用。

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

thun-res/vlink스타 115(GitHub 115 + cccskills 0)

실행 점수 미검증

설치 방법 보기

포함된 파일(2)

  • SKILL.md3.4 KB
  • agents/openai.yaml204 B

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

ASan 单元测试

ENABLE_TEST_SANITIZE=ON 时,根 CMakeLists.txt 对 vlink 库目标调用 vlink_test_sanitize()(cmake/functions/common.cmake:45),追加 -fsanitize=address 编译与链接选项;随后构建并运行 vlink-test 触发 被测库代码。支持 Windows/QNX 之外的 GCC/Clang 目标;不满足条件时会 告警跳过。CI 中只有 Linux job 开启此项 (.github/workflows/ci-test.yml)。

1. 执行

先从仓库任意子目录解析根目录:

REPO_ROOT="$(git rev-parse --show-toplevel)"
BUILD_DIR_REL=build-ai/skill_asan
BUILD_DIR="$REPO_ROOT/$BUILD_DIR_REL"
export PYTHONPYCACHEPREFIX="$BUILD_DIR/__pycache__"
PHYSICAL_CORES=
case "$(uname -s 2>/dev/null)" in
  Linux)
    PHYSICAL_CORES="$(
      LC_ALL=C lscpu -p=CORE,SOCKET 2>/dev/null |
        awk -F, '
          $1 !~ /^#/ && $1 ~ /^[0-9]+$/ && $2 ~ /^[0-9]+$/ {
            cores[$2 SUBSEP $1] = 1
          }
          END {
            for (core in cores) {
              count++
            }
            if (count > 0) {
              print count
            }
          }'
    )" || PHYSICAL_CORES=
    ;;
  Darwin)
    PHYSICAL_CORES="$(sysctl -n hw.physicalcpu 2>/dev/null)" || PHYSICAL_CORES=
    ;;
esac
case "$PHYSICAL_CORES" in
  '' | *[!0-9]* | 0) PHYSICAL_CORES=1 ;;
esac
if [ "$PHYSICAL_CORES" -gt 1 ]; then
  BUILD_JOBS=$((PHYSICAL_CORES - 1))
else
  BUILD_JOBS=1
fi
  1. 配置(AI 专用构建目录):

    cmake -S "$REPO_ROOT" -B "$BUILD_DIR" \
      -DCMAKE_BUILD_TYPE=Release \
      -DENABLE_CXX_STD_20=OFF \
      -DENABLE_TEST=ON \
      -DENABLE_TEST_WARN=ON \
      -DENABLE_TEST_SANITIZE=ON \
      -DENABLE_TEST_COVERAGE=OFF \
      -DENABLE_PROXY=ON \
      -DENABLE_EXAMPLES=OFF
    

    配置前确认 Fast DDS 或 Cyclone DDS 可被 CMake 找到。CMake 将 ENABLE_PROXY 改回 OFF 或未生成 vlink-proxy target 均为配置 失败,不得继续测试。

  2. 构建:

    cmake --build "$BUILD_DIR" --target vlink-test vlink-proxy --parallel "$BUILD_JOBS"
    
  3. 运行测试。复用 CI 脚本,确保先启动测试依赖的 vlink-proxy,并沿用 CI 的超时、并行度和排除规则:

    export ASAN_OPTIONS=detect_odr_violation=0
    cd "$REPO_ROOT"
    BUILD_DIR="$BUILD_DIR_REL" bash .github/scripts/run-posix-ci-tests.sh
    

2. 结果处理

  • detect_odr_violation=0 是 CI 既有约定(共享库场景误报),不要再额外 放宽 ASAN_OPTIONS。
  • BUILD_JOBS 必须严格等于 max(真实物理核心数 - 1, 1)。禁止改用 逻辑 CPU 数、裸 --parallel/-j 或固定高并行度;无法可靠获取物理 核心数时固定单核,且同一时刻只运行一个本地构建,防止编译卡死或耗尽 内存。
  • 默认 BUILD_DIR_REL 为 build-ai/skill_asan;正被其他任务使用时先改为 build-ai/skill_asan_<task_name>,再派生 BUILD_DIR,不得共用或清理 其他构建目录。
  • ASan 报告(heap-use-after-free、leak、stack-buffer-overflow 等)一律 按真实缺陷报告;用户同时要求修复时再定位并修改源码,不通过 suppression 文件消音。
  • 只在用户显式调用本 skill 时才执行构建与测试;日常改码流程仍遵循 AGENTS.md 强制规则第 3 条(不主动构建)。

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

bench

무료

构建并运行 vlink-bench 性能基准(showcase/quick/full 预设),生成 HTML/JSON 报告。用户要求"跑 bench"、"性能测试"、对比后端吞吐/延迟、 验证性能回归时使用。

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

thun-res/vlink1152026년 10월 15일 업데이트

check

무료

运行 tools/check.sh 对整个仓库执行 cpplint 静态检查(120 列,项目定制 过滤集)。用户要求"跑 check"、"cpplint 检查"、排查 CI lint 门禁失败 时使用。

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

thun-res/vlink1152026년 10월 15일 업데이트

cicd

무료

用 gh CLI 触发/查看 GitHub CI/CD:手动 dispatch 工作流 (release/coverage/docker)、查看运行状态与失败日志、重跑失败 job. 用户要求"触发 CI"、"看流水线"、"重跑失败的 job"时使用;创建 dev 到 master 的 PR 使用 /pr,正式发版使用 /release.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

thun-res/vlink1152026년 10월 15일 업데이트

对指定文件或全仓库运行 clang-tidy(WarningsAsErrors='*')。用户要求 "跑 clang-tidy"、"tidy 检查某文件"、排查 CI tidy 门禁失败时使用。

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

thun-res/vlink1152026년 10월 15일 업데이트

commit

무료

提交前强制执行 VLink 的 format 与 check skill,再分析当前工作树的全部 staged、unstaged 与 untracked 改动,按模块、功能和依赖关系拆分为可独立 评审的 Conventional Commits,生成简洁且覆盖重要行为的英文 commit message 并逐组提交。用户要求“提交当前改动”、“按功能拆 commit”、 “自动写 commit msg”或“整理提交历史”时使用。

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

thun-res/vlink1152026년 10월 15일 업데이트

coverage

무료

以 ENABLE_TEST_COVERAGE=ON 构建、运行测试并生成 lcov 代码覆盖率报告, 复现 CI 的 coverage 流水线。用户要求"跑覆盖率"、"生成 coverage 报告"、查某模块覆盖情况时使用。

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

thun-res/vlink1152026년 10월 15일 업데이트

thun-res의 스킬 모두 보기

이 스킬의 문제 신고