Lunvtik/ariadne
GitHub: Lunvtik/ariadne
基于 tree-sitter 的多语言代码结构分析 CLI,通过构建依赖图、调用图和热点分析帮助开发者快速理解代码库架构。
Stars: 0 | Forks: 0

# 🧵 ariadne
### 使用 tree-sitter 映射任意代码库的静态代码分析 CLI
**依赖图 · 调用图 · 循环 · 热点 · 无效导出 · 能力可达性**
[](LICENSE)
[](pyproject.toml)
[](#languages)
[](#usage)
[](https://tree-sitter.github.io/)
[](#release-notes)
[安装](#install) · [用法](#usage) · [HTML 报告](#the-html-report) · [架构](#architecture) · [贡献](#contributing) · [常见问题](#faq)
`ariadne` 读取代码库并构建一个映射:**依赖图**、**调用图**、
**循环**、**热点**(fan-in/out)、**无效导出**,以及一个基于名称的
**能力可达性**层——入口点能否到达 `EXEC` / `CODE` / `NET` /
`DESERIALIZE` / `FS` / `ENV`?输出格式为 `text`、`json` 或独立的 `html`
报告。支持语言:Python、TypeScript (+ TSX)、JavaScript (+ JSX)、Rust。
## 安装
每种语言只需一个附加依赖——仅安装你需要的:
```
pip install "daedalus[lang-python]" # Python only
pip install "daedalus[lang-typescript]" # TypeScript (+ TSX)
pip install "daedalus[lang-javascript]" # JavaScript (+ JSX)
pip install "daedalus[lang-rust]" # Rust
pip install "daedalus[all]" # everything
```
缺少语言语法会使文件被直接 `skip`,绝不会导致崩溃。
## 用法
```
ariadne path/to/repo --format text # human-readable report
ariadne path/to/repo --format json # machine-readable map
ariadne path/to/repo --format html > report.html # self-contained black-glass report
```
| 参数 | 描述 | 默认值 |
|---|---|---|
| `root` | 要分析的目录路径(必填) | — |
| `--level` | 分析级别(`macro`) | `macro` |
| `--format` | 输出格式(`text` / `json` / `html`) | `text` |
`text` 输出示例:
```
ariadne · /path/to/your/repo
Files : 42
Languages : python
Cycles : 2
Dead Exports : 5 certain / 3 uncertain
Skipped : 12
Hotspots (3):
12 in / 45 out src/utils/helpers.py
8 in / 12 out src/core/engine.py
3 in / 20 out src/main/cli.py
```
## 功能
- **依赖图** —— 本地和外部依赖,已解析和未解析的导入
- **调用图** —— 函数和方法之间的调用关系
- **循环检测** —— 循环依赖,以链的形式显示
- **热点** —— 具有高 fan-in / fan-out 的文件作为维护指标
- **无效导出** —— 未被引用的公共符号及其置信度评级
- **能力可达性** —— 基于 `EXEC`、`CODE`、`NET`、`DESERIALIZE`、`FS`、`ENV` 名称的信号
- **三种输出格式** —— `text`、`json`、独立的 `html`
- **垂直切片架构** —— 每种语言都是一个可删除的特性切片
## HTML 报告
一个完全独立的 `report.html` 文件——无需服务器,无需外部资产,直接打开即可。黑色玻璃
主题,语法高亮,所有视图只需在页头点击一次即可访问。
![]() Calls — who calls whom, ranked by fan-out. |
![]() Hotspots — fan-in / fan-out ranking. |
![]() Capabilities — symbols reaching EXEC / NET / FS / ENV. |
![]() Dead exports — public symbols nothing imports. |
![]() Files — every file with language and stability. |
![]() External packages — third-party deps and who uses them. |
标签:IPv6支持, Python, Tree-sitter, 依赖图, 文档结构分析, 无后门, 调用图, 逆向工具, 错误基检测, 静态代码分析





