← 返回
未分类

跨分支迁移审计工具

通用跨分支迁移审计工具。当用户需要将某个模块或特定功能从一个分支迁移到另一个分支时,使用此 skill 进行迁移前审计。支持三种输入模式:(1) 模块路径模式 — 分析指定目录下的所有 commit;(2) 功能模式 — 通过关键词/commit列表/时间范围+作者定位功能相关 commit;(3) 混合模式 — 模块路径 + 功能关键词组合。自动识别涉及外部文件的 commit,判定依赖类型(强依赖/弱依赖/资源依赖/传递依赖),评估四级冲突风险(🟢🟡🔴⚫),生成带关键风险告警面板的交互式 HTML 审计报告。同时支持迁移过程中的增量审计(快速诊断编译错误)和 cherry-pick 后检查清单。适用于任何语言、任何框架的项目。触发词:跨分支审计, 模块迁移分析, commit依赖分析, 迁移审计, 跨分支迁移, 模块迁移, 分支迁移, 功能迁移, cherry-pick分析, 功能审计, 迁移编译错误, 迁移冲突分析, cross-branch audit, module migration analysis, commit dependency analysis, migrati
通用跨分支迁移审计工具。当用户需要将某个模块或特定功能从一个分支迁移到另一个分支时,使用此 skill 进行迁移前审计。支持三种输入模式:(1) 模块路径模式 — 分析指定目录下的所有 commit;(2) 功能模式 — 通过关键词/commit列表/时间范围+作者定位功能相关 commit;(3) 混合模式 — 模块路径 + 功能关键词组合。自动识别涉及外部文件的 commit,判定依赖类型(强依赖/弱依赖/资源依赖/传递依赖),评估四级冲突风险(🟢🟡🔴⚫),生成带关键风险告警面板的交互式 HTML 审计报告。同时支持迁移过程中的增量审计(快速诊断编译错误)和 cherry-pick 后检查清单。适用于任何语言、任何框架的项目。触发词:跨分支审计, 模块迁移分析, commit依赖分析, 迁移审计, 跨分支迁移, 模块迁移, 分支迁移, 功能迁移, cherry-pick分析, 功能审计, 迁移编译错误, 迁移冲突分析, cross-branch audit, module migration analysis, commit dependency analysis, migration audit, cross-branch migration, module migration, branch migration, feature migration, cherry-pick analysis, feature audit, migration compilation error, migration conflict analysis.
user_1a3c5a41
未分类 community v1.0.0 1 版本 98076.9 Key: 无需
★ 0
Stars
📥 51
下载
💾 0
安装
1
版本
#latest

概述

跨分支迁移审计 Skill(通用版)

概述

本 Skill 用于在跨分支代码迁移前执行全面的预迁移审计。通过分析 git 历史、diff 内容和代码语义,自动识别迁移范围内的外部依赖,评估迁移风险,生成结构化审计报告。

适用于任何语言、任何框架、任何项目类型。

输出语言规则:所有报告和面向用户的输出均使用用户偏好的语言生成(根据对话上下文中的语言设置)。如未指定偏好,默认使用用户正在使用的语言。

适用场景

  • 将某个功能模块从一个长期分叉的分支迁移到另一个分支
  • 将某个功能(可能跨多个目录)从一个分支移植到另一个分支
  • 两个分支已无法直接 git merge — 需要精确识别迁移范围
  • 需要评估迁移工作量和风险
  • 需要确定 cherry-pick 的顺序和策略
  • 需要在迁移前预判哪些文件会冲突、冲突严重程度

三种输入模式

模式 A:模块路径模式

适用场景:迁移一个边界清晰的完整目录/模块。

输入

  • 源分支、目标分支
  • 模块路径(一个或多个目录)

特点

  • 自动扫描路径下所有 commit
  • 覆盖率最高,不会遗漏
  • 适合整模块迁移

模式 B:功能模式

适用场景:迁移一个功能,代码分散在多个目录,由多个 commit 组成。

输入(以下任意组合):

  • 精确 commit 列表(用户已知的 SHA 值)
  • 功能关键词(用于搜索 commit message)
  • 时间范围 + 作者
  • TAPD/Jira/Issue ID

特点

  • 多策略交叉验证查找所有相关 commit
  • 需要人工确认 commit 范围的完整性
  • 适合功能移植

模式 C:混合模式

适用场景:以模块路径为主,但需要额外追踪模块外的相关改动。

输入

  • 模块路径 + 功能关键词
  • 先按路径扫描,再用关键词补充模块外的 commit

执行流程

步骤 0:环境检测与项目识别

开始审计前,自动检测项目类型,以便后续步骤使用正确的依赖分析策略:

# 检测项目类型
ls -la  # 查看根目录结构

# 通过特征文件判断项目类型:
# - build.gradle / settings.gradle → Android/Java/Kotlin (Gradle)
# - pom.xml → Java/Kotlin (Maven)
# - package.json → JavaScript/TypeScript (Node.js)
# - go.mod → Go
# - Cargo.toml → Rust
# - requirements.txt / setup.py / pyproject.toml → Python
# - Podfile / *.xcodeproj → iOS (Swift/ObjC)
# - CMakeLists.txt → C/C++
# - *.sln / *.csproj → C# (.NET)
# - mix.exs → Elixir
# - Gemfile → Ruby

同时检测项目的多渠道/多 flavor 结构

# 检查 flavor/variant 结构(Android)
grep -r "productFlavors" --include="*.gradle" . | head -5

# 检查多环境配置(Node.js)
ls .env* 2>/dev/null

# 检查多 target(iOS)
grep -c "target" *.xcodeproj/project.pbxproj 2>/dev/null

记录项目类型和多渠道结构,后续步骤将据此调整分析策略。

步骤 1:确认输入参数

与用户确认以下信息:

必填参数

  • 源分支:功能已完成的分支
  • 目标分支:需要接收代码的分支

按模式确认

模式需确认的参数
-------------------
A(模块路径)模块路径(支持多个,如 src/audio/lib/player/
B(功能)commit 列表 / 关键词 / 时间范围+作者 / Issue ID
C(混合)模块路径 + 功能关键词

可选参数

  • 起始 commit:分析起点,默认为两个分支的分叉点
  • 排除路径:不需要分析的目录(如 test/docs/
  • 关注的外部路径:用户已知可能受影响的外部目录

步骤 2:确定 Commit 范围

模式 A:路径扫描

# 获取两个分支的分叉点
git merge-base origin/<源分支> origin/<目标分支>

# 获取源分支上目标模块的所有 commit(排除 merge commit)
git log <起始commit>..origin/<源分支> --oneline --no-merges -- <模块路径1> <模块路径2> ...

模式 B:多策略交叉验证查找 Commit

按以下策略依次执行,合并去重:

策略 1:精确 commit 列表(如用户提供)

# 直接使用用户提供的 commit SHA
git log --oneline <sha1> <sha2> <sha3> ...

策略 2:关键词搜索(AI 自动扩展关键词变体)

# 用户原始关键词
git log <起始>..<源分支> --oneline --no-merges --grep="<关键词>"

# AI 自动扩展的关键词变体(中英文、缩写、相关概念)
git log <起始>..<源分支> --oneline --no-merges --grep="<变体1>"
git log <起始>..<源分支> --oneline --no-merges --grep="<变体2>"
# ... 合并去重

关键词扩展规则:

  • 中英文互译(如 "听书" ↔ "audio")
  • 缩写 ↔ 全称(如 "tts" ↔ "text to speech")
  • 相关概念(如 "播放" → "player"、"pause"、"resume")
  • 模块/类名(如 "AudioBook"、"AudioPlayer")

策略 3:时间范围 + 作者

git log <起始>..<源分支> --oneline --no-merges --author="<作者>" --since="<开始日期>" --until="<结束日期>"

策略 4:Issue/TAPD ID 搜索

git log <起始>..<源分支> --oneline --no-merges --grep="<issue-id>"

策略 5:文件路径反向追踪

# 从已找到的 commit 中提取涉及的文件
git diff-tree --no-commit-id -r --name-only <已知sha>

# 反向查找修改过这些文件的其他 commit
git log <起始>..<源分支> --oneline --no-merges -- <文件1> <文件2> ...

策略 6:代码引用链分析

# 从已知的核心类/函数出发,找到所有引用它们的文件
grep -rn "<核心类名>" --include="*.<扩展名>" . | grep -v build | grep -v node_modules

# 再找修改了这些引用文件的 commit
git log <起始>..<源分支> --oneline --no-merges -- <引用文件列表>

合并去重后,呈现给用户确认

通过以下策略共找到 N 个相关 commit:
- 关键词搜索("audio"、"听书"、"tts"):找到 X 个
- 文件反向追踪:额外发现 Y 个
- 代码引用链:额外发现 Z 个

完整列表:
1. abc1234 - feat: 添加听书播放功能
2. def5678 - fix: 修复播放暂停问题
...

请确认是否有遗漏,如有补充请提供。

模式 C:混合模式

先执行模式 A 的路径扫描,再执行模式 B 的关键词搜索,合并去重。

步骤 3:识别涉及外部文件的 Commit

对确定范围内的每个 commit,检查是否涉及"迁移范围外"的文件:

for sha in <commit列表>; do
    # 获取该 commit 修改的所有文件
    all_files=$(git diff-tree --no-commit-id -r --name-only "$sha")
    
    # 过滤出不在迁移范围内的文件(外部文件)
    external_files=$(echo "$all_files" | grep -v "^<模块路径模式>")
    
    if [ -n "$external_files" ]; then
        echo "=== $sha ==="
        echo "$external_files"
    fi
done

对于功能模式,"外部文件"的定义需要动态确定:

  • 如果用户指定了核心路径 → 核心路径外的文件为外部文件
  • 如果未指定核心路径 → 所有文件都纳入分析,按目录聚类后标注主要/辅助变更区域

步骤 4:判定强弱依赖

对每个涉及外部文件的 commit,执行 git show 查看 diff 内容,按以下通用标准分类:

判定标准分类说明
---------------------
外部文件新增了被迁移代码引用的符号(类/函数/变量/类型)强依赖迁移代码编译/运行依赖此变更
外部文件修改了被迁移代码调用的函数签名强依赖签名不匹配导致编译失败
外部文件引用了迁移范围内的符号强依赖外部代码集成了迁移功能
外部文件的变更与迁移代码无引用关系弱依赖同一 commit 中的无关改动
外部文件是构建配置文件基础设施模块注册/依赖声明
外部文件是测试文件测试依赖可选迁移
外部文件是资源文件(strings/drawable/layout 等)资源依赖需检查是否重复定义

按语言识别引用关系

根据步骤 0 检测到的项目类型,使用对应的引用识别方法:

项目类型引用识别方法
----------------------
Java/Kotlinimport 语句、类继承、接口实现、方法调用、构造函数参数
JavaScript/TypeScriptimport/require 语句、export 声明
Pythonimport/from...import 语句
Goimport 语句、包引用
C/C++#include 指令、函数声明/定义
Rustuse/mod 语句、extern crate
Swift/ObjCimport/#import 语句
Rubyrequire/require_relative 语句
C#using 语句、命名空间引用
通用代码中的文件名/路径字符串引用

步骤 5:评估冲突风险

对每个强依赖的外部文件,评估冲突风险:

# 获取两个分支间该文件的 diff 统计
git diff origin/<目标分支> origin/<源分支> --stat -- <文件>

# 获取文件总行数(评估文件复杂度)
wc -l <文件>

# 检查目标分支是否也修改了该文件(双向修改 = 高冲突概率)
git log <起始>..origin/<目标分支> --oneline --no-merges -- <文件>

# 检查文件行尾格式(CR/LF/CRLF)
file <文件>

风险等级判定:

  • 🟢 低风险:新增文件 / diff < 50 行 / 纯追加变更 / 目标分支未修改
  • 🟡 中风险:50 < diff < 200 行 / 修改不涉及核心逻辑 / 目标分支有少量修改
  • 🔴 高风险:diff > 200 行 / 文件 > 5000 行 / 双向大量修改 / 涉及核心逻辑
  • 致命风险:文件 > 10000 行 + 双向大量修改 / 行尾格式异常 / 文件被重命名或移动

步骤 6:检查特殊情况

审计过程中,额外检查以下通用常见陷阱:

通用检查项

  1. 行尾差异file <路径> 检查是否有 "CR line terminators"(Windows/Mac 行尾混用)
    • ⚠️ CR 行尾的文件会导致 git 将整个文件视为"一行",merge/diff 完全失效
    • 必须在报告中标记此类文件为 🔴
  2. 函数/方法签名差异:对比同一函数/方法在两个分支中的签名是否一致
    • 重点关注:参数个数、参数类型、返回值类型
    • 特别注意构造函数签名差异
  3. 双向修改冲突:同一文件在两个分支都有修改
  4. 删除 vs 修改冲突:源分支删除了目标分支正在使用的代码
  5. 文件重命名/移动:源分支中文件被重命名或移动到新路径
  6. 二进制文件:图片、字体、编译产物等无法合并的文件
  7. 超大文件:单文件超过 5000 行,cherry-pick 风险极高
  8. 权限/属性变更:文件权限位变化(如 755 → 644)
  9. 父类/基类方法可见性差异:检查迁移代码调用的父类方法在目标分支是否可访问(private/protected/public)
    • 特别注意父类来自 aar/jar 二进制依赖时(无法修改源码)
  10. 目标分支独有代码:检查目标分支是否有源分支不存在的代码(cherry-pick 可能覆盖)
  11. 资源文件重复定义:检查 strings.xml / colors.xml 等在 cherry-pick 后是否会出现重复条目

传递依赖检查(重要!)

迁移模块后,必须检查模块中 import 的所有第三方库在目标分支的构建配置中是否有对应声明:

# 示例:Java/Kotlin 项目
grep -rh "^import " <模块路径> --include="*.java" --include="*.kt" | \
  grep -v "<项目包名>" | grep -v "android\|java\|kotlin" | sort -u

# 对比 build.gradle / pom.xml 中的依赖声明

⚠️ 传递依赖链在不同分支可能不同 — 源分支通过传递依赖获得的库,在目标分支可能不存在。必须显式声明所有直接使用的依赖。

构建系统检查项(按项目类型自动选择)

项目类型检查项
-----------------
Gradle (Java/Android/Kotlin)build.gradle 依赖声明、settings.gradle 模块注册、flavor 配置、本地 aar/jar 依赖、AGP library 模块限制(fileTree 不能包含 .aar)
Maven (Java)pom.xml 依赖声明、模块结构、parent pom 版本
npm/yarn (JS/TS)package.json 依赖版本、lock 文件差异、workspace 配置
Gogo.mod 依赖版本、replace 指令
Cargo (Rust)Cargo.toml 依赖版本、workspace members
pip (Python)requirements.txt 版本、setup.py/pyproject.toml 配置
CocoaPods (iOS)Podfile 依赖、.xcodeproj 配置
CMake (C/C++)CMakeLists.txt targets 和 link libraries
.NET (C#).csproj 引用、NuGet 包版本

步骤 7:生成审计报告

生成交互式 HTML 报告,保存到项目的 docs/ 目录下(不存在则创建)。

报告包含以下部分:

  1. 概览统计
    • 总 commit 数
    • 涉及外部文件的 commit 数
    • 强依赖 / 弱依赖 / 基础设施 / 测试依赖 / 资源依赖 数量
    • 风险分布(🟢🟡🔴⚫)
    • 预估工作量(人天)
  1. Commit 发现过程(仅功能模式)
    • 使用了哪些搜索策略
    • 每个策略找到多少 commit
    • 用户确认状态
  1. ⚠️ 关键风险告警面板(置顶)
    • CR 行尾文件列表
    • 超大文件列表(>5000 行)
    • 函数签名差异列表(两分支中签名不同的函数/构造函数)
    • 父类方法可见性问题
    • 缺失的传递依赖列表
    • 目标分支独有代码可能被覆盖的文件
  1. 强依赖 Commit 列表
    • 每个 commit 的 SHA、message、作者、时间
    • 涉及的外部文件列表
    • 依赖判定理由(引用了什么符号)
    • 建议处理方式
    • 建议 cherry-pick 顺序
  1. 外部文件风险矩阵
    • 按风险等级排序
    • 文件路径、diff 行数、文件总行数
    • 双向修改标记
    • 行尾格式标记
    • 建议处理方式
  1. 特殊情况警告
    • 行尾问题
    • 签名差异
    • 二进制文件
    • 超大文件
    • 资源文件重复风险
  1. 建议迁移策略
    • 分层迁移方案
    • 预估工作量
    • 每个阶段的具体操作步骤
  1. Cherry-pick 后检查清单(可打印)
    • 冲突标记残留检查
    • 签名匹配检查
    • 资源重复检查
    • 编译验证

报告交互功能:

  • 按风险等级筛选
  • 按依赖类型筛选
  • 展开/折叠每个 commit 的详细 diff
  • 按文件路径搜索
  • 按 commit message 搜索
  • 导出 CSV(文件列表)
  • 导出 Markdown(迁移方案)

步骤 8:生成迁移策略建议

基于审计结果,提供分层迁移策略建议:

阶段 0:基础设施
  - 构建配置文件(build.gradle / package.json / go.mod 等)
  - 模块注册/声明
  - 新增的依赖模块(如 model 层)
  ✅ 完成后立即编译验证

阶段 1:核心代码迁移
  - 方案 A(整模块覆盖):直接用源分支的模块目录覆盖目标分支
    - 覆盖前确认目标分支模块目录无独有代码
    - 覆盖后检查传递依赖
  - 方案 B(逐 commit cherry-pick):按时间顺序逐个 cherry-pick
  ✅ 完成后立即编译验证

阶段 2:低风险外部依赖
  - 新增文件(直接复制)
  - 纯追加变更(无冲突 cherry-pick)
  - 目标分支未修改的文件
  ✅ 完成后立即编译验证

阶段 3:中风险外部依赖
  - 逐 commit cherry-pick,手动解决小冲突
  - 或手动合并差异
  - 每次 cherry-pick 后执行检查清单
  ✅ 完成后立即编译验证

阶段 4:高风险外部依赖
  - 手动处理
  - 保留目标分支版本 + 手动补充必要变更
  - 超大文件不要整体 cherry-pick
  - CR 行尾文件需先转换格式再编辑
  ✅ 完成后立即编译验证

阶段 5:验证
  - 编译验证
  - 单元测试
  - 功能测试
  - 回归测试

输出产物

  1. 审计报告 HTML — 保存到 docs/migration-audit-<时间戳>.html
  2. 迁移策略建议 — 文本输出给用户
  3. 风险文件列表 — 按优先级排序的待处理文件
  4. Commit 列表 — 需要 cherry-pick 的 commit(按建议顺序)
  5. Cherry-pick 后检查清单 — 每次 cherry-pick 后需执行的检查

重要注意事项

Cherry-pick 策略建议

文件类型建议策略
------------------
迁移范围内的内部文件(冲突)直接用源分支最终版本覆盖
外部文件冲突手动解决,保留目标分支独有逻辑
超大文件(>5000 行)不要整体 cherry-pick,保留目标分支版本 + 手动补充
构建配置文件手动合并,不要覆盖目标分支的配置
二进制文件直接用源分支版本覆盖(无法合并)
测试文件可选迁移,优先级最低
资源文件(strings.xml 等)cherry-pick 后检查是否有重复定义
CR 行尾文件tr '\r' '\n' 转换 → 编辑 → tr '\n' '\r' 转回

Cherry-pick 后必做检查清单

每次 cherry-pick 后,AI 必须提醒用户执行以下检查:

  1. 冲突标记残留grep -rn "<<<<<<" --include="*.<扩展名>" .
    • 如发现残留,必须立即清理,不要继续下一个 cherry-pick
    • 如文件严重损坏,恢复到目标分支原始版本,再手动添加需要的变更
  2. 方法签名匹配:检查 cherry-pick 引入的方法调用是否与目标分支的接口签名一致
  3. 构造函数参数匹配:检查构造函数调用的参数个数和类型
  4. 目标分支独有代码:与目标分支原始版本对比,恢复被覆盖的独有方法
  5. 资源文件重复:检查 strings.xml / colors.xml 等是否有重复条目
  6. 编译验证:立即编译,不要累积多个 cherry-pick 后再验证
  7. 提交当前变更:方便后续回滚

常见陷阱预警

在报告中主动标注以下风险:

  1. 行尾问题 → 警告 git merge/cherry-pick 可能产生虚假冲突,或将整个文件视为一行
  2. 函数签名差异 → 警告 cherry-pick 后可能因参数不匹配导致编译失败
    • 特别说明:同一接口在两个分支中可能有不同的方法签名(如目标分支多了一个参数)
    • 解决方案:恢复目标分支原有的调用方式,通过包装方法适配签名差异
  3. 构造函数签名差异 → 警告构造函数参数个数/类型不同
  4. 访问权限问题 → 警告某些方法/属性在目标分支可能不可访问
    • 特别说明:当父类来自 aar/jar 二进制依赖时,无法修改源码
    • 解决方案:使用底层公开 API 替代(绕过私有父类方法,直接调用底层库的公开 API)
  5. 传递依赖差异 → 警告第三方库版本不一致或传递链不同
    • 解决方案:在模块的 build.gradle 中显式声明所有直接使用的第三方库
  6. 目标分支独有代码被覆盖 → 警告 cherry-pick 会删除目标分支的独有功能
    • 解决方案:cherry-pick 后与目标分支原始版本对比,恢复被覆盖的独有方法
  7. 循环依赖 → 警告迁移可能引入循环依赖
  8. 环境变量/配置差异 → 警告不同分支可能有不同的环境配置
  9. AGP library 模块限制 → 警告 Android library 模块不能通过 fileTree 依赖本地 .aar
    • 解决方案:在根 build.gradle 配置 flatDir → 模块中使用 api(name:'xxx', ext:'aar')
  10. 资源文件重复定义 → 警告 cherry-pick 可能引入与已有资源重复的条目
  11. Git 冲突标记残留 → 警告累积的 cherry-pick 可能留下未解决的冲突标记
    • 症状:编译报错 "illegal character"、"class, interface, or enum expected" 等

功能模式完整性保障

使用功能模式时,AI 必须:

  1. 主动扩展关键词 — 不要只用用户给的单一关键词,推断中英文变体、缩写、相关概念
  2. 使用文件反向追踪 — 从已知 commit 的文件出发,反向查找修改过这些文件的其他 commit
  3. 使用代码引用链 — 从核心类/函数出发,找到引用它们的文件,再找修改了这些文件的 commit
  4. 明确告知用户覆盖风险 — 功能模式无法保证 100% 覆盖,需用户确认
  5. 提供遗漏检测建议 — 建议用户通过迁移后的编译错误来发现遗漏的 commit

迁移过程中的增量审计

当用户在迁移过程中遇到编译错误或运行时问题时,AI 应能:

  1. 分析编译错误 — 根据错误类型(符号找不到、参数不匹配、包不存在等)快速定位原因
  2. 判断是否需要补充 commit — 如果是遗漏的 commit 导致的错误,帮助定位该 commit
  3. 建议修复策略 — 根据错误类型提供修复优先级:
    • 恢复目标分支原始版本(如果是独有代码被覆盖)
    • 从源分支补充(如果是源分支新增的方法/资源)
    • 适配包装(如果是两个分支接口签名不同)

示例对话

示例 1:模块路径模式

用户:我需要把 feature/payment 分支的支付模块迁移到 main 分支,帮我做个审计

AI:好的,我来执行跨分支模块迁移审计。请确认以下信息:

  • 源分支:feature/payment
  • 目标分支:main
  • 模块路径:请告诉我支付模块的目录路径(如 src/modules/payment/
  • 起始 commit:是否自动查找分叉点?

示例 2:功能模式

用户:我需要把 develop 分支的"用户认证重构"功能迁移到 release/v2.0

AI:好的,我来执行功能级别的迁移审计。这个功能可能跨多个目录、多个 commit,我需要先定位所有相关 commit。

请提供以下信息(越多越好):

  • 你知道的相关 commit SHA(如有)
  • 功能相关的关键词(如 "auth"、"login"、"认证" 等)
  • 主要开发者是谁?
  • 大致的开发时间范围?
  • 是否有关联的 Issue/TAPD ID?

我会通过多策略交叉验证尽可能完整地找到所有相关 commit,然后请你确认。

示例 3:混合模式

用户:迁移 src/audio/ 模块,但这个模块还依赖了一些公共组件的改动

AI:好的,我使用混合模式:

  1. 先扫描 src/audio/ 路径下的所有 commit
  2. 再用关键词搜索公共组件中与 audio 相关的 commit
  3. 合并后分析所有外部依赖

请确认源分支和目标分支名称?

示例 4:迁移过程中的编译错误

用户:cherry-pick 后编译报错 "actual and formal argument lists differ in length"

AI:这是典型的接口签名差异问题。让我检查一下两个分支中该接口的签名差异...

(对比两个分支的接口定义,提供具体修复方案)

审计报告 HTML 模板

报告使用以下结构:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>跨分支迁移审计报告</title>
    <!-- 内联 CSS:现代简洁设计,支持暗色/亮色模式 -->
    <!-- 内联 JS:筛选、搜索、展开/折叠、导出 CSV -->
</head>
<body>
    <!-- 0. 关键风险告警面板(置顶,红色背景) -->
    <!-- 1. 报告头部:项目名、源分支、目标分支、生成时间 -->
    <!-- 2. 概览统计卡片(commit 数、依赖数、风险分布、预估工作量) -->
    <!-- 3. Commit 发现过程(功能模式) -->
    <!-- 4. 风险矩阵表格(可筛选、可排序) -->
    <!-- 5. Commit 详情列表(可展开 diff) -->
    <!-- 6. 特殊情况警告面板 -->
    <!-- 7. 迁移策略建议(分阶段) -->
    <!-- 8. Cherry-pick 检查清单(可打印) -->
    <!-- 9. 操作按钮(导出 CSV、导出 Markdown、打印) -->
</body>
</html>

报告样式要求:

  • 现代简洁的 CSS 设计(无外部依赖,全部内联)
  • 支持暗色/亮色模式切换
  • 表格支持排序和筛选
  • 每个 commit 的 diff 可展开/折叠
  • 风险等级用颜色标签区分(🟢🟡🔴⚫)
  • 关键风险告警面板置顶,醒目的红色/橙色背景
  • 响应式布局,适合打印
  • 文件列表可导出为 CSV
  • 迁移方案可导出为 Markdown

版本历史

共 1 个版本

  • v1.0.0 变更说明 首次发布。通用跨分支迁移审计工具,支持模块路径/功能/混合三种模式,自动识别外部依赖、评估冲突风险、生成交互式HTML审计报告。适用于任何语言和框架。 当前
    2026-05-15 12:04 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

security-compliance

Skill Vetter

spclaudehome
AI智能体技能安全预审工具。安装ClawdHub、GitHub等来源技能前,检查风险信号、权限范围及可疑模式。
★ 1,213 📥 266,394
ai-intelligence

Self-Improving + Proactive Agent

ivangdavila
自我反思+自我批评+自我学习+自组织记忆。智能体评估自身工作、发现错误并持续改进。
★ 1,354 📥 317,992
developer-tools

Github

steipete
使用 `gh` CLI 与 GitHub 交互,通过 `gh issue`、`gh pr`、`gh run` 和 `gh api` 管理议题、PR、CI 运行及高级查询。
★ 668 📥 323,999