repo-scan

repo-scan

热门

跨技术栈源代码资产审计——对每个文件进行分类,检测嵌入的第三方库,并为每个模块提供可操作的四个级别判定结果,附带交互式HTML报告。

23万Star
3.5万Fork
更新于 2026/7/19
SKILL.md
readonly只读
name
repo-scan
description

跨技术栈源代码资产审计——对每个文件进行分类,检测嵌入的第三方库,并为每个模块提供可操作的四个级别判定结果,附带交互式HTML报告。

repo-scan

每个生态系统都有自己的依赖管理器,但没有工具能跨 C++、Android、iOS 和 Web 告诉你:有多少代码是你自己的,哪些是第三方的,哪些是冗余的。

使用场景

  • 接手大型遗留代码库,需要结构概览
  • 重大重构前——识别哪些是核心代码、哪些是重复代码、哪些是死代码
  • 审计直接嵌入源代码中的第三方依赖(未在包管理器中声明)
  • 为单体仓库重组准备架构决策记录

安装

# 仅获取固定提交以确保可重现性
mkdir -p ~/.claude/skills/repo-scan
git init repo-scan
cd repo-scan
git remote add origin https://github.com/haibindev/repo-scan.git
git fetch --depth 1 origin 2742664
git checkout --detach FETCH_HEAD
cp -r . ~/.claude/skills/repo-scan

在安装任何代理技能前,请先审查源代码。

核心能力

能力 描述
跨技术栈扫描 一次扫描 C/C++、Java/Android、iOS (OC/Swift)、Web (TS/JS/Vue)
文件分类 每个文件被标记为项目代码、第三方代码或构建产物
库检测 检测 50+ 个已知库(FFmpeg、Boost、OpenSSL…)并提取版本
四级判定 核心资产 / 提取并合并 / 重建 / 弃用
HTML 报告 深色主题交互式页面,支持下钻导航
单体仓库支持 分层扫描,包含摘要和子项目报告

分析深度级别

级别 读取文件数 使用场景
fast 每个模块 1-2 个 快速盘点大型目录
standard 每个模块 2-5 个 默认审计,包含完整依赖和架构检查
deep 每个模块 5-10 个 增加线程安全、内存管理、API 一致性检查
full 所有文件 合并前的全面审查

工作原理

  1. 分类仓库表面:枚举文件,然后将每个文件标记为项目代码、嵌入的第三方代码或构建产物。
  2. 检测嵌入的库:检查目录名、头文件、许可证文件和版本标记,识别捆绑的依赖及其可能的版本。
  3. 对每个模块评分:按模块或子系统对文件分组,然后根据所有权、重复性和维护成本分配四个判定之一。
  4. 突出结构风险:指出冗余产物、重复的包装器、过时的供应商代码,以及应提取、重建或弃用的模块。
  5. 生成报告:返回简洁摘要以及交互式 HTML 输出,支持按模块下钻,以便异步审查审计结果。

示例

在一个包含 50,000 个文件的 C++ 单体仓库中:

  • 发现仍在生产环境中使用的 FFmpeg 2.x(2015 年版本)
  • 发现同一个 SDK 包装器重复了 3 次
  • 识别出 636 MB 已提交的 Debug/ipch/obj 构建产物
  • 分类结果:3 MB 项目代码 vs 596 MB 第三方代码

最佳实践

  • 首次审计从 standard 深度开始
  • 对于包含 100+ 模块的单体仓库,使用 fast 快速盘点
  • 对标记为需要重构的模块增量运行 deep
  • 检查跨模块分析,发现子项目间的重复

链接