heiswayi/archmap
GitHub: heiswayi/archmap
archmap 从任意项目源码扫描并推断架构分层与依赖关系,生成单一独立的交互式架构图 HTML 文件。
Stars: 4 | Forks: 3
# archmap
**从任意项目的源代码生成一个单一、独立的交互式架构图 HTML。**
`archmap` 会扫描项目文件夹,推断其架构分层,提取模块 / 类 / 函数 / 导入,解析文件间的依赖关系图,并将所有内容渲染成**一个**独立的 HTML 文件 —— 无需服务器,无需构建步骤,无需外部资源。
```
archmap
```
在任何浏览器中打开生成的 `*-architecture.html`,即可通过五个标签页探索你的代码库。
## 功能
- **📊 概览** — 文件/行数/类/函数计数、语言细分以及层级分布图。
- **🏗️ 架构分层** — 将每个文件归类到推断的层级中(入口点、配置、模型、API、服务、数据访问、集成、UI、工具、测试、文档、构建/运维)。
- **🔗 依赖关系** — 解析项目内部文件之间的导入关系,包含“依赖于”/“被使用”的边。
- **📁 文件系统** — 所有扫描内容的可折叠树状图,每个文件均可点击。
- **🔎 组件参考** — 包含所有组件的可搜索表格。
- 任意组件的详情侧边栏:层级、语言、行数、类、函数、方法、导入以及依赖链接。
所有内容都嵌入在单个 HTML 文件中(数据以内联 JSON 格式存储),因此分享、归档或提交都非常简单。
## 安装说明
archmap 是纯 Python 编写的,具有**零运行时依赖**。请选择最适合你的方式。
### 独立二进制文件(无需 Python)
从[最新发布版](https://github.com/heiswayi/archmap/releases/latest)下载适用于你平台的可执行文件,然后直接运行:
| 平台 | 文件 |
| --- | --- |
| Linux (x86_64) | `archmap-linux-x86_64` |
| macOS (Apple Silicon) | `archmap-macos-arm64` |
| macOS (Intel) | `archmap-macos-x86_64` |
| Windows (x86_64) | `archmap-windows-x86_64.exe` |
```
# Linux / macOS
chmod +x archmap-linux-x86_64
./archmap-linux-x86_64 /path/to/project
```
```
# Windows
.\archmap-windows-x86_64.exe C:\path\to\project
```
### pipx(如果你有 Python 3.8+,则推荐使用)
将其安装到隔离环境中,并将 `archmap` 添加到你的 PATH:
```
pipx install archmap-cli # from PyPI (provides the `archmap` command)
pipx install git+https://github.com/heiswayi/archmap # from GitHub
```
### pip
```
pip install archmap-cli # from PyPI (provides the `archmap` command)
pip install . # from a source checkout
```
要求 Python 3.8+(独立二进制文件除外,它们自带了捆绑的运行时)。
## 使用说明
```
# 扫描当前目录
archmap .
# 扫描特定项目并在浏览器中打开结果
archmap /path/to/project --open
# 自定义输出路径和显示名称
archmap /path/to/project -o report.html --name "My Service"
# 扫描时忽略 .gitignore 规则
archmap /path/to/project --no-gitignore
```
| 参数 | 描述 |
| --- | --- |
| `path` | 要扫描的项目文件夹(默认:`.`)。 |
| `-o, --output` | 输出的 HTML 路径(默认:`-architecture.html`)。 |
| `-n, --name` | 报告中显示的项目名称(默认:文件夹名称)。 |
| `--open` | 完成后在默认浏览器中打开报告。 |
| `--no-gitignore` | 不遵循项目的 `.gitignore` 配置。 |
| `-q, --quiet` | 抑制进度输出。 |
| `-V, --version` | 打印版本号。 |
输出的 HTML 路径也会被打印到 stdout,以便进行管道传输。
## 工作原理
1. **扫描** (`scanner.py`) — 遍历目录树,跳过常见的干扰文件(`.git`、`node_modules`、构建目录、锁文件、二进制文件)并遵循 `.gitignore` 配置。
2. **分析** (`languages/`) — Python 文件使用标准库 `ast` 进行解析;其他语言(JS/TS、Go、Rust、Java、Ruby、C/C++ 等)通过具备语言感知能力的正则表达式启发式方法读取,以提取类、函数和导入。
3. **归类** (`layers.py`) — 使用基于目录和文件名的评分机制,将每个文件路由到相应的架构层级中。
4. **链接** (`analyzer.py`) — 根据项目内部文件解析原始导入,构建依赖关系图(包括点分模块路径和相对文件路径)。
5. **渲染** (`renderer.py`) — 将模型序列化为 JSON 并注入到单个 HTML 模板中。
## 支持的语言
Python(深度 `ast` 分析)、JavaScript、TypeScript、Go、Rust、Java、Kotlin、Ruby、PHP、C#、Swift、C/C++、Shell、Vue、Svelte,以及结构性文件(YAML、TOML、JSON、Markdown、Dockerfile、Terraform 等)。
## 许可证
MIT
标签:IPv6支持, Python, SOC Prime, 云安全监控, 代码分析, 凭证管理, 多模态安全, 开发工具, 文档结构分析, 无后门, 架构可视化, 自动化payload嵌入, 逆向工具, 静态分析