MortisClub/project-archaeologist
GitHub: MortisClub/project-archaeologist
一款用 Rust 编写的本地 CLI 工具,通过扫描代码库快速生成技术栈、死代码、依赖状况及 git 历史的分析报告与交互式 HTML 地图。
Stars: 0 | Forks: 0
Project Archaeologist
一分钟看懂任何项目 —— 纯本地运行,无需服务器和云端。
技术栈、项目结构、死代码、关键文件、过期依赖以及 git 历史。
打开一个早就不记得的旧项目 —— 一分钟就能搞明白它是做什么的。
一条命令即可输出简短摘要,并在旁边生成完整的报告:`archaeology-report.json`
以及可在浏览器中打开、能独立运行的 `archaeology-report.html` 地图。
## 它能发现什么
一次扫描即可搞定:
- 技术栈与框架 —— 从清单文件中提取(`Cargo.toml`、`package.json`、`go.mod`、`Dockerfile` 等);
- 编程语言 —— 按文件数量和大小进行统计;
- 未使用的文件 —— 没有任何地方导入的源码;
- 最重要的文件 —— 根据被入站的导入次数、git 修改频率以及大小得出;
- 依赖项,加上 `--check-updates` —— 还能查出哪些依赖已经落后于 Registry;
- 重复文件 —— 根据内容哈希值判定;
- 按体积划分的目录地图以及最大的文件;
- git 历史 —— commit、项目年龄、修改最频繁的部分,以及项目最初的发展方向。
“未使用的文件”并非粗暴的启发式算法:它会遍历真实的 import graph,并且将入口点(`main`、`index`、`__init__.py` 等)和测试文件排除在列表之外,从而真正筛选出死代码。目前已针对 JavaScript/TypeScript 和 Python 构建 graph;对于其他语言,文件会被归入清单,但不会构建 graph —— 报告对此也会如实说明。
项目的提取自 git,而非文件的修改时间:因为在复制、解压归档或全新 checkout 之后,文件时间往往会失去真实性。因此,即使没有 repository,该工具依然能运行,只是会直接跳过历史板块。
## 安装说明
需要安装 [Rust](https://rustup.rs)。
```
git clone https://github.com/MortisClub/project-archaeologist
cd project-archaeologist
cargo build --release
```
可执行文件位于 `target/release/archaeologist`。
## 使用方法
```
archaeologist scan <путь>
```
- `--out
` —— 报告的输出路径(默认为当前文件夹)
- `--open` —— 完成后自动打开 HTML 报告
- `--check-updates` —— 将依赖与 npm、crates.io 和 PyPI 上的最新版本进行比对(需要联网)
```
archaeologist scan ../some-old-project --check-updates --open
```
## 工作原理
- `src/scan.rs` —— 遍历目录树并处理 `.gitignore`
- `src/stack.rs` —— 编程语言、技术栈标识、框架
- `src/imports.rs` —— import graph、死代码、文件重要性
- `src/deps.rs` —— 依赖清单与过期检查
- `src/dupes.rs` —— 基于 SHA-256 的重复项检测
- `src/git.rs` —— 从 `git log` 提取历史
- `src/report.rs`、`templates/report.html` —— JSON 报告与交互式地图
## 开源许可证
MIT,详见 [LICENSE](LICENSE)。图标由 [Microsoft Fluent Emoji](https://github.com/microsoft/fluentui-emoji) (MIT) 组合而成。
© MortisClub 2026
标签:CLI, Rust, SOC Prime, WiFi技术, 云安全监控, 代码分析, 依赖管理, 凭证管理, 可视化界面, 多模态安全, 开发工具, 网络安全研究, 网络流量审计, 通知系统, 静态分析