Files
wiki/代码图谱工具调研/报告/code-structure-tools-analysis.html
2026-05-14 16:56:48 +08:00

895 lines
55 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>代码结构分析工具对比分析</title>
<style>
:root {
--color-primary: #1677FF;
--color-primary-hover: #4096FF;
--color-primary-active: #0958D9;
--color-primary-bg: #E6F4FF;
--color-success: #52C41A;
--color-success-bg: #F6FFED;
--color-success-border: #B7EB8F;
--color-warning: #FAAD14;
--color-warning-bg: #FFFBE6;
--color-warning-border: #FFE58F;
--color-error: #FF4D4F;
--color-error-bg: #FFF2F0;
--color-error-border: #FFCCC7;
--bg: #F5F5F5;
--bg-secondary: #FFFFFF;
--bg-tertiary: #FAFAFA;
--border: #D9D9D9;
--border-light: #F0F0F0;
--text-primary: #141414;
--text-secondary: #595959;
--text-tertiary: #8C8C8C;
--radius-sm: 6px;
--radius-md: 8px;
--shadow-sm: 0 1px 2px rgba(0,0,0,0.03), 0 1px 6px -1px rgba(0,0,0,0.02);
--shadow-md: 0 2px 4px rgba(0,0,0,0.04), 0 4px 12px -2px rgba(0,0,0,0.04);
--sidebar-w: 260px;
--header-h: 64px;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: -apple-system, BlinkMacSystemFont, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', 'Segoe UI', Roboto, Oxygen, sans-serif;
background: var(--bg);
color: var(--text-primary);
font-size: 14px;
line-height: 1.57;
}
/* Scrollbar */
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: #D9D9D9; border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: #8C8C8C; }
/* Header */
.header {
position: fixed;
top: 0; left: 0; right: 0;
height: var(--header-h);
background: rgba(255,255,255,0.85);
backdrop-filter: blur(12px);
border-bottom: 1px solid var(--border-light);
display: flex;
align-items: center;
padding: 0 1.5rem;
z-index: 100;
}
.header h1 {
font-size: 24px;
font-weight: 700;
background: linear-gradient(135deg, var(--color-primary), #722ED1);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
/* Sidebar */
.sidebar {
position: fixed;
top: var(--header-h); left: 0; bottom: 0;
width: var(--sidebar-w);
background: #FFFFFF;
border-right: 1px solid var(--border);
overflow-y: auto;
padding: 1.25rem 0;
z-index: 90;
}
.sidebar .toc-label {
font-size: 12px;
text-transform: uppercase;
letter-spacing: 0.1em;
color: var(--text-secondary);
padding: 0 1.25rem;
margin-bottom: 0.75rem;
}
.sidebar nav ol { list-style: none; padding: 0; counter-reset: toc; }
.sidebar nav li { counter-increment: toc; padding: 0; }
.sidebar nav a {
display: block;
padding: 0.45rem 1.25rem;
color: var(--text-secondary);
text-decoration: none;
font-size: 13px;
line-height: 1.4;
border-left: 2px solid transparent;
transition: all 0.15s;
}
.sidebar nav a::before {
content: counter(toc) ". ";
color: var(--color-primary);
font-weight: 600;
font-size: 12px;
margin-right: 0.4rem;
}
.sidebar nav a:hover {
color: var(--text-primary);
background: var(--color-primary-bg);
}
.sidebar nav a.active {
color: var(--color-primary);
border-left-color: var(--color-primary);
background: var(--color-primary-bg);
font-weight: 600;
}
/* Main content */
.main {
margin-left: var(--sidebar-w);
margin-top: var(--header-h);
padding: 2rem 2.5rem 4rem;
min-height: calc(100vh - var(--header-h));
}
/* Sections */
section {
margin: 40px 0;
scroll-margin-top: calc(var(--header-h) + 1rem);
}
section h2 {
font-size: 24px;
padding-bottom: 8px;
border-bottom: 1px solid var(--border);
margin-bottom: 20px;
color: var(--color-primary);
}
section h3 {
font-size: 20px;
margin: 24px 0 12px;
color: #722ED1;
}
section h4 {
font-size: 16px;
margin: 16px 0 8px;
color: var(--color-success);
}
/* Comparison table */
.table-wrap { overflow-x: auto; margin: 20px 0; }
table {
width: 100%;
border-collapse: collapse;
font-size: 13px;
}
th, td {
padding: 10px 14px;
border: 1px solid var(--border);
text-align: left;
vertical-align: top;
}
th {
background: var(--bg-tertiary);
font-weight: 600;
position: sticky;
top: 0;
}
td { background: var(--bg-secondary); }
tbody tr:hover td { background: var(--color-primary-bg); }
.star-highlight { color: var(--color-warning); font-weight: 700; font-size: 15px; }
/* Language table */
.lang-table {
width: 100%;
border-collapse: collapse;
font-size: 13px;
}
.lang-table th, .lang-table td {
padding: 8px 12px;
border: 1px solid var(--border);
text-align: center;
}
.lang-table th { background: var(--bg-tertiary); font-weight: 600; }
.lang-table td:first-child { text-align: left; font-weight: 500; }
.lang-table .first-row { background: var(--color-primary-bg); }
.check { color: var(--color-success); font-weight: 700; }
.cross { color: var(--color-error); opacity: 0.4; }
.partial { color: var(--color-warning); font-weight: 600; }
/* Card grid */
.card-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
gap: 20px;
margin: 20px 0;
}
.card {
background: var(--bg-secondary);
border: 1px solid var(--border);
border-radius: var(--radius-md);
padding: 24px;
transition: all 0.2s ease;
}
.card:hover {
border-color: var(--color-primary);
box-shadow: var(--shadow-md);
}
.card h3 { margin: 0 0 4px; font-size: 20px; color: var(--text-primary); }
.card .repo {
color: var(--color-primary);
font-size: 13px;
font-family: 'SF Mono', Monaco, monospace;
}
.card .stars {
display: inline-block;
margin: 8px 0;
padding: 4px 12px;
background: var(--color-warning-bg);
border: 1px solid var(--color-warning-border);
border-radius: 20px;
color: var(--color-warning);
font-weight: 600;
font-size: 14px;
}
.card .stars.gold { color: #f0c040; }
.card p { color: var(--text-secondary); font-size: 14px; margin: 8px 0 0; }
.card ul { margin: 10px 0 0 18px; color: var(--text-secondary); font-size: 13px; }
.card ul li { margin: 4px 0; }
.badge {
display: inline-block;
padding: 2px 10px;
border-radius: 12px;
font-size: 12px;
font-weight: 600;
margin-right: 6px;
}
.badge-python { background: var(--color-primary-bg); color: var(--color-primary); border: 1px solid rgba(22, 119, 255, 0.3); }
.badge-js { background: var(--color-warning-bg); color: var(--color-warning); border: 1px solid var(--color-warning-border); }
.badge-kotlin { background: rgba(114, 46, 209, 0.08); color: #722ED1; border: 1px solid rgba(114, 46, 209, 0.2); }
.badge-mit { background: var(--color-success-bg); color: var(--color-success); border: 1px solid var(--color-success-border); }
.badge-mpl { background: var(--color-error-bg); color: var(--color-error); border: 1px solid var(--color-error-border); }
.badge-nolicense { background: rgba(140, 140, 140, 0.08); color: var(--text-secondary); border: 1px solid rgba(140, 140, 140, 0.2); }
/* Pros/Cons */
.pros-cons {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 16px;
margin: 16px 0;
}
.pros, .cons {
background: var(--bg-secondary);
border: 1px solid var(--border);
border-radius: var(--radius-md);
padding: 20px;
}
.pros { border-left: 3px solid var(--color-success); }
.cons { border-left: 3px solid var(--color-error); }
.pros h4 { color: var(--color-success); margin-bottom: 8px; }
.cons h4 { color: var(--color-error); margin-bottom: 8px; }
.pros ul, .cons ul { margin-left: 18px; color: var(--text-secondary); font-size: 13px; }
.pros ul li, .cons ul li { margin: 4px 0; }
/* Claude recommendation */
.claude-rec {
background: linear-gradient(135deg, rgba(22, 119, 255, 0.05), rgba(114, 46, 209, 0.05));
border: 1px solid var(--border);
border-radius: var(--radius-md);
padding: 24px 28px;
margin: 24px 0;
}
.claude-rec h4 { color: var(--color-primary); margin-bottom: 12px; font-size: 16px; }
.claude-rec p { color: var(--text-secondary); margin: 6px 0; font-size: 14px; }
.claude-rec .rec-reason {
padding-left: 16px;
border-left: 2px solid #722ED1;
margin: 8px 0 12px 0;
font-size: 13px;
color: #722ED1;
font-style: italic;
}
.claude-rec code {
background: var(--bg-tertiary);
padding: 2px 8px;
border-radius: 4px;
font-family: 'SF Mono', Monaco, monospace;
font-size: 13px;
color: var(--color-success);
}
/* Verdict */
.verdict {
background: var(--bg-secondary);
border: 1px solid var(--border);
border-radius: var(--radius-md);
padding: 24px 32px;
margin: 20px 0;
}
.verdict h4 {
color: var(--color-primary);
margin-bottom: 12px;
font-size: 16px;
background: linear-gradient(135deg, var(--color-primary), #722ED1);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.verdict p { color: var(--text-secondary); margin: 6px 0; font-size: 14px; }
.verdict strong { color: var(--text-primary); }
/* Architecture diagram */
.arch-pipeline {
display: flex;
flex-wrap: wrap;
gap: 8px;
align-items: center;
margin: 16px 0;
}
.arch-step {
background: var(--bg-tertiary);
border: 1px solid var(--border);
border-radius: var(--radius-sm);
padding: 8px 16px;
font-size: 13px;
font-family: 'SF Mono', Monaco, monospace;
color: var(--color-primary);
}
.arch-arrow { color: var(--text-secondary); font-size: 18px; }
/* Sources */
.sources {
background: var(--bg-secondary);
border: 1px solid var(--border);
border-radius: var(--radius-md);
padding: 24px 32px;
margin: 40px 0 20px;
}
.sources h2 { color: var(--text-secondary); font-size: 16px; margin-bottom: 12px; }
.sources ul { margin-left: 20px; }
.sources li { margin: 6px 0; font-size: 13px; }
.sources a { color: var(--color-primary); text-decoration: none; }
.sources a:hover { text-decoration: underline; }
/* Language tags */
.lang-tags { display: flex; flex-wrap: wrap; gap: 4px; margin: 8px 0; }
.lang-tag {
display: inline-block;
padding: 2px 8px;
border-radius: 4px;
font-size: 12px;
font-weight: 500;
background: var(--bg-tertiary);
border: 1px solid var(--border);
color: var(--text-secondary);
}
.lang-tag.core {
background: var(--color-success-bg);
border-color: var(--color-success-border);
color: var(--color-success);
}
/* Footer */
.footer {
text-align: center;
padding: 24px 0;
color: var(--text-tertiary);
font-size: 13px;
border-top: 1px solid var(--border);
margin-top: 20px;
}
/* Link */
a { color: var(--color-primary); }
/* Responsive */
@media (max-width: 992px) {
.main { padding: 1.5rem 1.25rem 3rem; }
}
@media (max-width: 768px) {
.sidebar { display: none; }
.main { margin-left: 0; }
.card-grid { grid-template-columns: 1fr; }
.pros-cons { grid-template-columns: 1fr; }
.arch-pipeline { flex-direction: column; }
.arch-arrow { transform: rotate(90deg); }
table, .lang-table { font-size: 12px; }
th, td, .lang-table th, .lang-table td { padding: 6px 8px; }
}
</style>
</head>
<body>
<!-- Header -->
<header class="header">
<h1>代码结构分析工具对比分析</h1>
</header>
<!-- Sidebar -->
<aside class="sidebar">
<div class="toc-label">目录</div>
<nav>
<ol>
<li><a href="#overview">项目总览</a></li>
<li><a href="#comparison">综合对比表</a></li>
<li><a href="#languages">语言支持矩阵</a></li>
<li><a href="#graphify">Graphify 深度分析</a></li>
<li><a href="#codegraphcontext">CodeGraphContext 深度分析</a></li>
<li><a href="#axon">Axon 深度分析</a></li>
<li><a href="#traditional">传统依赖可视化工具</a></li>
<li><a href="#code2kg">code-to-knowledge-graph 简评</a></li>
<li><a href="#claude">Claude 集成建议总览</a></li>
<li><a href="#summary">总结与选型建议</a></li>
</ol>
</nav>
</aside>
<!-- Main content -->
<main class="main">
<!-- 1. Overview -->
<section id="overview">
<h2>1. 项目总览</h2>
<p style="color:var(--text-secondary); margin-bottom:16px;">本次调查聚焦两类工具:<strong>图谱类</strong>(将代码库转化为知识图谱/依赖图)和 <strong>知识库类</strong>(为 AI 助手提供结构化代码上下文)。以下六个项目按星标降序排列。</p>
<div class="card-grid">
<div class="card">
<h3>Graphify</h3>
<span class="repo">safishamsi/graphify</span>
<div class="stars gold">⭐ 35,912</div>
<div><span class="badge badge-python">Python</span><span class="badge badge-mit">MIT</span></div>
<p>面向 AI 编码助手的跨语言知识图谱构建工具。支持 25 种语言 + 多模态文件(文档/图片/视频),71.5 倍 token 压缩率。</p>
<div class="lang-tags">
<span class="lang-tag core">Python</span><span class="lang-tag core">JS/TS</span><span class="lang-tag core">Go</span><span class="lang-tag core">Rust</span><span class="lang-tag core">Java</span><span class="lang-tag core">C/C++</span><span class="lang-tag core">C#</span><span class="lang-tag core">Kotlin</span><span class="lang-tag core">Ruby</span><span class="lang-tag core">PHP</span><span class="lang-tag core">Swift</span><span class="lang-tag core">Scala</span><span class="lang-tag core">Lua</span><span class="lang-tag core">Zig</span><span class="lang-tag core">Elixir</span><span class="lang-tag core">Julia</span><span class="lang-tag core">PowerShell</span><span class="lang-tag core">ObjC</span><span class="lang-tag core">Verilog</span><span class="lang-tag core">Vue</span><span class="lang-tag core">Svelte</span><span class="lang-tag core">Dart</span>
</div>
</div>
<div class="card">
<h3>CodeGraphContext</h3>
<span class="repo">CodeGraphContext/CodeGraphContext</span>
<div class="stars gold">⭐ 3,061</div>
<div><span class="badge badge-python">Python</span><span class="badge badge-mit">MIT</span></div>
<p>将代码仓库索引为可查询图谱,支持 14 种语言,提供 CLI + MCP 双模式和交互式 HTML 可视化。</p>
<div class="lang-tags">
<span class="lang-tag core">Python</span><span class="lang-tag core">JS</span><span class="lang-tag core">TS</span><span class="lang-tag core">Java</span><span class="lang-tag core">C/C++</span><span class="lang-tag core">C#</span><span class="lang-tag core">Go</span><span class="lang-tag core">Rust</span><span class="lang-tag core">Ruby</span><span class="lang-tag core">PHP</span><span class="lang-tag core">Swift</span><span class="lang-tag core">Kotlin</span><span class="lang-tag core">Dart</span><span class="lang-tag core">Perl</span>
</div>
</div>
<div class="card">
<h3>madge</h3>
<span class="repo">pahen/madge</span>
<div class="stars gold">⭐ 10,055</div>
<div><span class="badge badge-js">JavaScript</span><span class="badge badge-mit">MIT</span></div>
<p>经典的 JS/TS 模块依赖可视化工具,即开即用,支持 CSS 预处理器,10k+ 星社区验证。</p>
<div class="lang-tags">
<span class="lang-tag core">JS</span><span class="lang-tag core">TS</span><span class="lang-tag core">Sass</span><span class="lang-tag core">Stylus</span><span class="lang-tag core">Less</span>
</div>
</div>
<div class="card">
<h3>dependency-cruiser</h3>
<span class="repo">sverweij/dependency-cruiser</span>
<div class="stars">⭐ 6,600</div>
<div><span class="badge badge-js">JavaScript</span><span class="badge badge-mit">MIT</span></div>
<p>JS/TS 依赖验证 + 可视化工具,拥有强大的自定义规则引擎,可在 CI/CD 中强制执行架构纪律。</p>
<div class="lang-tags">
<span class="lang-tag core">JS</span><span class="lang-tag core">TS</span><span class="lang-tag core">CoffeeScript</span><span class="lang-tag core">LiveScript</span><span class="lang-tag core">Vue SFC</span><span class="lang-tag core">Svelte</span>
</div>
</div>
<div class="card">
<h3>Axon</h3>
<span class="repo">harshkedia177/axon</span>
<div class="stars">⭐ 674</div>
<div><span class="badge badge-python">Python</span><span class="badge badge-nolicense">无许可证</span></div>
<p>端到端代码智能引擎,12 阶段深度分析管线,交互式 Web 仪表盘 + MCP 集成,分析能力最深入。</p>
<div class="lang-tags">
<span class="lang-tag core">Python</span><span class="lang-tag core">TS/TSX</span><span class="lang-tag core">JS/JSX</span>
</div>
</div>
<div class="card">
<h3>code-to-knowledge-graph</h3>
<span class="repo">Bevel-Software/code-to-knowledge-graph</span>
<div class="stars">⭐ 150</div>
<div><span class="badge badge-kotlin">Kotlin</span><span class="badge badge-mpl">MPL 2.0</span></div>
<p>基于 VS Code LSP 的 Kotlin/JVM 库,可将代码转化为知识图谱,适合作为可嵌入组件集成到 JVM 项目中。</p>
<div class="lang-tags"><span class="lang-tag">取决于 LSP</span></div>
</div>
</div>
</section>
<!-- 2. Comparison Table -->
<section id="comparison">
<h2>2. 综合对比表</h2>
<div class="table-wrap">
<table>
<thead>
<tr>
<th>维度</th>
<th>Graphify</th>
<th>CodeGraphContext</th>
<th>madge</th>
<th>dep-cruiser</th>
<th>Axon</th>
<th>code-to-kg</th>
</tr>
</thead>
<tbody>
<tr><td><strong>星标</strong></td><td class="star-highlight">35,912</td><td>3,061</td><td class="star-highlight">10,055</td><td>6,600</td><td>674</td><td>150</td></tr>
<tr><td><strong>支持语言数</strong></td><td><strong>25 种</strong></td><td>14 种</td><td>6 种</td><td>7 种</td><td>3 种</td><td>取决于 LSP</td></tr>
<tr><td><strong>主要语言</strong></td><td>Python</td><td>Python</td><td>JavaScript</td><td>JavaScript</td><td>Python</td><td>Kotlin</td></tr>
<tr><td><strong>许可证</strong></td><td>MIT</td><td>MIT</td><td>MIT</td><td>MIT</td><td></td><td>MPL 2.0</td></tr>
<tr><td><strong>核心定位</strong></td><td>多模态知识图谱</td><td>通用图谱工具包</td><td>依赖可视化</td><td>依赖验证+可视化</td><td>代码智能引擎</td><td>可嵌入库</td></tr>
<tr><td><strong>可视化输出</strong></td><td>交互式 HTML</td><td>HTML (力导向/层次)</td><td>DOT/SVG</td><td>DOT/Mermaid/HTML</td><td>WebGL 仪表盘</td><td>Neo4j</td></tr>
<tr><td><strong>MCP/AI 集成</strong></td><td>✅ 17+ 平台</td><td>✅ 10+ IDE</td><td></td><td></td><td>✅ Claude/Cursor</td><td></td></tr>
<tr><td><strong>社区检测</strong></td><td>✅ Leiden</td><td></td><td></td><td></td><td>✅ Leiden</td><td></td></tr>
<tr><td><strong>死代码检测</strong></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td><strong>CI/CD 规则验证</strong></td><td></td><td></td><td></td><td>✅ 强大</td><td></td><td></td></tr>
<tr><td><strong>创建时间</strong></td><td>2026-04</td><td>2025-08</td><td>早期</td><td>早期</td><td>2026-02</td><td>2025-05</td></tr>
</tbody>
</table>
</div>
</section>
<!-- 3. Language Support Matrix -->
<section id="languages">
<h2>3. 语言支持详细矩阵</h2>
<h3>3.1 主流编程语言支持</h3>
<div class="table-wrap">
<table class="lang-table">
<thead><tr><th style="text-align:left">语言</th><th>Graphify</th><th>CodeGraphContext</th><th>Axon</th><th>dep-cruiser</th><th>madge</th><th>code-to-kg</th></tr></thead>
<tbody>
<tr class="first-row"><td><strong>Python</strong> (.py)</td><td class="check">✅ AST + 调用图</td><td class="check">✅ 函数/类/继承</td><td class="check">✅ 框架感知入口点</td><td class="cross"></td><td class="cross"></td><td class="partial">取决于 LSP</td></tr>
<tr class="first-row"><td><strong>JavaScript</strong> (.js/.jsx/.mjs/.cjs)</td><td class="check"></td><td class="check"></td><td class="check">✅ 框架感知</td><td class="check">✅ ES6/CJS/AMD</td><td class="check">✅ ES6/CJS/AMD</td><td class="partial">取决于 LSP</td></tr>
<tr class="first-row"><td><strong>TypeScript</strong> (.ts/.tsx)</td><td class="check"></td><td class="check"></td><td class="check">✅ 类型引用分析</td><td class="check">✅ 可跳过类型导入</td><td class="check">✅ 可跳过类型导入</td><td class="partial">取决于 LSP</td></tr>
<tr><td><strong>Go</strong> (.go)</td><td class="check"></td><td class="check"></td><td class="cross"></td><td class="cross"></td><td class="cross"></td><td class="partial">取决于 LSP</td></tr>
<tr><td><strong>Rust</strong> (.rs)</td><td class="check"></td><td class="check"></td><td class="cross"></td><td class="cross"></td><td class="cross"></td><td class="partial">取决于 LSP</td></tr>
<tr><td><strong>Java</strong> (.java)</td><td class="check">✅ extends/implements</td><td class="check"></td><td class="cross"></td><td class="cross"></td><td class="cross"></td><td class="partial">取决于 LSP</td></tr>
<tr><td><strong>C / C++</strong> (.c/.cpp/.h)</td><td class="check"></td><td class="check"></td><td class="cross"></td><td class="cross"></td><td class="cross"></td><td class="partial">取决于 LSP</td></tr>
<tr><td><strong>C#</strong> (.cs)</td><td class="check"></td><td class="check"></td><td class="cross"></td><td class="cross"></td><td class="cross"></td><td class="partial">取决于 LSP</td></tr>
<tr><td><strong>Ruby</strong> (.rb)</td><td class="check"></td><td class="check"></td><td class="cross"></td><td class="cross"></td><td class="cross"></td><td class="partial">取决于 LSP</td></tr>
<tr><td><strong>Kotlin</strong> (.kt)</td><td class="check"></td><td class="check"></td><td class="cross"></td><td class="cross"></td><td class="cross"></td><td class="check">✅ (原生)</td></tr>
<tr><td><strong>PHP</strong> (.php)</td><td class="check"></td><td class="check"></td><td class="cross"></td><td class="cross"></td><td class="cross"></td><td class="partial">取决于 LSP</td></tr>
<tr><td><strong>Swift</strong> (.swift)</td><td class="check"></td><td class="check"></td><td class="cross"></td><td class="cross"></td><td class="cross"></td><td class="partial">取决于 LSP</td></tr>
<tr><td><strong>Dart</strong> (.dart)</td><td class="check"></td><td class="check"></td><td class="cross"></td><td class="cross"></td><td class="cross"></td><td class="partial">取决于 LSP</td></tr>
</tbody>
</table>
</div>
<h3>3.2 独有/小众语言支持</h3>
<div class="table-wrap">
<table class="lang-table">
<thead><tr><th style="text-align:left">语言</th><th>Graphify</th><th>CodeGraphContext</th><th>Axon</th><th>dep-cruiser</th><th>madge</th></tr></thead>
<tbody>
<tr><td><strong>Scala</strong> (.scala)</td><td class="check">✅ 独有</td><td class="cross"></td><td class="cross"></td><td class="cross"></td><td class="cross"></td></tr>
<tr><td><strong>Lua</strong> (.lua)</td><td class="check">✅ 独有</td><td class="cross"></td><td class="cross"></td><td class="cross"></td><td class="cross"></td></tr>
<tr><td><strong>Zig</strong> (.zig)</td><td class="check">✅ 独有</td><td class="cross"></td><td class="cross"></td><td class="cross"></td><td class="cross"></td></tr>
<tr><td><strong>PowerShell</strong> (.ps1)</td><td class="check">✅ 独有</td><td class="cross"></td><td class="cross"></td><td class="cross"></td><td class="cross"></td></tr>
<tr><td><strong>Elixir</strong> (.ex/.exs)</td><td class="check">✅ 独有</td><td class="cross"></td><td class="cross"></td><td class="cross"></td><td class="cross"></td></tr>
<tr><td><strong>Julia</strong> (.jl)</td><td class="check">✅ 独有</td><td class="cross"></td><td class="cross"></td><td class="cross"></td><td class="cross"></td></tr>
<tr><td><strong>Objective-C</strong> (.m/.mm)</td><td class="check">✅ 独有</td><td class="cross"></td><td class="cross"></td><td class="cross"></td><td class="cross"></td></tr>
<tr><td><strong>Verilog / SV</strong></td><td class="check">✅ 独有</td><td class="cross"></td><td class="cross"></td><td class="cross"></td><td class="cross"></td></tr>
<tr><td><strong>Perl</strong> (.pl)</td><td class="cross"></td><td class="check">✅ 独有</td><td class="cross"></td><td class="cross"></td><td class="cross"></td></tr>
<tr><td><strong>CoffeeScript</strong></td><td class="cross"></td><td class="cross"></td><td class="cross"></td><td class="check">✅ 独有</td><td class="cross"></td></tr>
<tr><td><strong>LiveScript</strong></td><td class="cross"></td><td class="cross"></td><td class="cross"></td><td class="check">✅ 独有</td><td class="cross"></td></tr>
<tr><td><strong>Vue SFC</strong> (.vue)</td><td class="check"></td><td class="cross"></td><td class="cross"></td><td class="check">✅ Vue2/Vue3</td><td class="cross"></td></tr>
<tr><td><strong>Svelte</strong> (.svelte)</td><td class="check"></td><td class="cross"></td><td class="cross"></td><td class="check">✅ v4</td><td class="cross"></td></tr>
<tr><td><strong>Sass / SCSS</strong></td><td class="cross"></td><td class="cross"></td><td class="cross"></td><td class="cross"></td><td class="check">✅ 独有</td></tr>
<tr><td><strong>Stylus</strong></td><td class="cross"></td><td class="cross"></td><td class="cross"></td><td class="cross"></td><td class="check">✅ 独有</td></tr>
<tr><td><strong>Less</strong></td><td class="cross"></td><td class="cross"></td><td class="cross"></td><td class="cross"></td><td class="check">✅ 独有</td></tr>
<tr><td><strong>多模态文件</strong></td><td class="check">✅ PDF/图片/视频/音频/Office</td><td class="partial">部分 (笔记本)</td><td class="cross"></td><td class="cross"></td><td class="cross"></td></tr>
</tbody>
</table>
</div>
<h3>3.3 各工具语言支持特性对比</h3>
<div class="table-wrap">
<table>
<thead><tr><th>特性</th><th>Graphify</th><th>CodeGraphContext</th><th>Axon</th><th>dep-cruiser</th><th>madge</th></tr></thead>
<tbody>
<tr><td><strong>AST 解析器</strong></td><td>Tree-sitter (本地)</td><td>Tree-sitter</td><td>Tree-sitter</td><td>Acorn + tsc</td><td>dependency-tree</td></tr>
<tr><td><strong>调用图提取</strong></td><td>✅ 跨文件</td><td></td><td>✅ 框架感知</td><td>❌ (仅模块依赖)</td><td>❌ (仅模块依赖)</td></tr>
<tr><td><strong>类型引用分析</strong></td><td></td><td></td><td>✅ 参数/返回值/变量注解</td><td>✅ (可跳过)</td><td>✅ (可跳过)</td></tr>
<tr><td><strong>继承关系</strong></td><td>✅ extends/implements (Java)</td><td>✅ 所有语言</td><td>✅ EXTENDS/IMPLEMENTS</td><td></td><td></td></tr>
<tr><td><strong>内置函数过滤</strong></td><td></td><td></td><td>✅ 138 个内置过滤</td><td></td><td></td></tr>
<tr><td><strong>框架入口点检测</strong></td><td></td><td></td><td>✅ Python: Flask/Django/Click 等</td><td></td><td></td></tr>
<tr><td><strong>文档/注释提取</strong></td><td>✅ docstring + rationale</td><td>✅ 函数签名</td><td></td><td></td><td></td></tr>
</tbody>
</table>
</div>
</section>
<!-- 4. Graphify -->
<section id="graphify">
<h2>4. Graphify 深度分析</h2>
<p>Graphify 是当前星标最高的项目(35,912 ⭐),定位为面向 AI 编码助手的跨语言多模态知识图谱构建工具。其核心创新在于将代码、文档、论文和图片统一到一个可查询的图谱中。</p>
<h3>架构管线(7 阶段)</h3>
<div class="arch-pipeline">
<span class="arch-step">detect</span><span class="arch-arrow"></span>
<span class="arch-step">extract</span><span class="arch-arrow"></span>
<span class="arch-step">build</span><span class="arch-arrow"></span>
<span class="arch-step">cluster</span><span class="arch-arrow"></span>
<span class="arch-step">analyze</span><span class="arch-arrow"></span>
<span class="arch-step">report</span><span class="arch-arrow"></span>
<span class="arch-step">export</span>
</div>
<h3>语言支持详情</h3>
<p>Graphify 通过 Tree-sitter 本地解析支持 <strong>25 种编程语言</strong>,所有语言获得同等对待——不存在一等/实验分级。每种语言均获得:</p>
<ul style="margin-left:20px; color:var(--text-secondary); font-size:0.92rem;">
<li>AST 解析 + 跨文件调用图提取</li>
<li>文档字符串和注释中提取 rationale(<code># NOTE:</code><code># IMPORTANT:</code><code># HACK:</code><code># WHY:</code> 等注释成为独立图谱节点)</li>
<li>Java 额外的 extends/implements 关系提取</li>
</ul>
<p style="color:var(--text-secondary); font-size:0.92rem; margin-top:8px;">此外还支持非代码文件:Markdown/HTML/RST 文档、Office 文档、PDF 论文、PNG/JPG/WEBP/GIF 图片、MP4/MOV 视频、MP3/WAV 音频——这些文件通过 LLM 视觉模型提取语义节点。</p>
<h3>AI 助手集成(17+ 平台)</h3>
<ul style="margin-left:20px; color:var(--text-secondary); font-size:0.92rem;">
<li><strong>Claude Code</strong>:写入 <code>CLAUDE.md</code> 段落 + 安装 <strong>PreToolUse 钩子</strong><code>settings.json</code>),在每次 Glob/Grep 调用前注入图谱上下文</li>
<li><strong>Cursor</strong>:写入 <code>.cursor/rules/graphify.mdc</code><code>alwaysApply: true</code></li>
<li><strong>Kiro</strong>:写入 <code>.kiro/skills/</code> + steering 文件(<code>inclusion: always</code></li>
<li><strong>Google Antigravity</strong>:写入 <code>.agents/rules/</code> + 工作流注册</li>
<li><strong>MCP Server</strong><code>python -m graphify.serve graphify-out/graph.json</code> 提供 <code>query_graph</code><code>get_node</code><code>get_neighbors</code><code>shortest_path</code> 四个工具调用</li>
</ul>
<div class="claude-rec">
<h4>🤖 与 Claude 配合使用建议</h4>
<p><strong>推荐指数:</strong><span style="color:var(--color-warning);">⭐⭐⭐⭐⭐ (最高)</span></p>
<p><strong>使用方式:</strong>安装后运行 <code>/graphify</code> 命令,Graphify 会自动写入 <code>CLAUDE.md</code> 和 PreToolUse 钩子。每次在 Claude Code 中使用 Glob/Grep 搜索文件时,钩子会自动注入图谱上下文。</p>
<div class="rec-reason"><strong>推荐理由:</strong>Graphify 与 Claude 的集成是六个项目中最为深入的——它不仅是一个 MCP 工具,而是通过 CLAUDE.md + PreToolUse 钩子实现了"始终在线"的图谱上下文注入。对于 Claude 编码场景,这意味着:(1)搜索文件时自动获得相关调用图上下文;(2)查询成本降低 71.5 倍(平均 1.7k tokens);(3)25 种语言覆盖,几乎能处理所有项目。这是 Claude 用户的首选方案。</div>
<p><strong>建议命令:</strong><code>graphify ./your-project</code> 构建图谱后,在 Claude Code 中使用 <code>/graphify query "哪些函数调用了 X?"</code><code>/graphify explain ./src/main.py</code></p>
</div>
<div class="pros-cons">
<div class="pros"><h4>优势</h4><ul><li>星标最高,社区关注度最大</li><li>语言支持最广(25 种 + 多模态)</li><li>与 Claude Code 深度集成(CLAUDE.md + 钩子)</li><li>71.5 倍 token 压缩率</li><li>MIT 许可,无遥测数据收集</li><li>模块化 7 阶段管线,可独立扩展</li></ul></div>
<div class="cons"><h4>局限性</h4><ul><li>不自带 LLM,需用户配置 API 密钥</li><li>语义提取依赖外部 LLM API 调用,有成本</li><li>偏向知识图谱生成,非通用图数据库</li><li>创建时间短(2026-04),成熟度待验证</li></ul></div>
</div>
</section>
<!-- 5. CodeGraphContext -->
<section id="codegraphcontext">
<h2>5. CodeGraphContext 深度分析</h2>
<p>CodeGraphContext 是通用代码图谱工具包中语言支持最广的项目(14 种),拥有 3,061 星标和 MIT 许可,提供 CLI + MCP 双模式。</p>
<h3>语言支持详情</h3>
<p>支持 <strong>14 种语言</strong>,所有语言获得"完全支持"——无实验/部分分级。每种语言均提取:</p>
<ul style="margin-left:20px; color:var(--text-secondary); font-size:0.92rem;">
<li>函数、类、方法、参数</li><li>继承关系</li><li>函数调用链</li><li>导入关系</li>
</ul>
<p style="color:var(--text-secondary); font-size:0.92rem; margin-top:8px;">独有语言支持:Perl 仅 CodeGraphContext 支持。还支持 Jupyter Notebooknbformat + nbconvert)。</p>
<h3>核心功能</h3>
<ul style="margin-left:20px; color:var(--text-secondary); font-size:0.92rem;">
<li><strong>多数据库后端</strong>KuzuDBWindows 默认)、FalkorDBUnix 默认)、Neo4j(远程/Docker</li>
<li><strong>预索引包</strong>:加载 .cgc 包可即时索引知名仓库</li>
<li><strong>实时文件监视</strong>cgc watch 自动更新图谱</li>
<li><strong>自动 MCP 配置</strong>cgc mcp setup 向导支持 10 种 IDE</li>
</ul>
<div class="claude-rec">
<h4>🤖 与 Claude 配合使用建议</h4>
<p><strong>推荐指数:</strong><span style="color:var(--color-warning);">⭐⭐⭐⭐</span></p>
<p><strong>使用方式:</strong>运行 <code>python -m codegraphcontext mcp setup</code>,选择 Claude,自动生成 MCP 配置。之后可用自然语言查询代码关系。</p>
<div class="rec-reason"><strong>推荐理由:</strong>CodeGraphContext 的优势在于 14 种语言支持和多数据库后端。适合多语言项目(如同时使用 Python + Go + Rust 的项目)。其 MCP 工具支持自然语言查询("什么函数调用了 X?"、"显示 Y 的继承层次"),对 Claude 很友好。缺点是缺少深度分析能力(无执行流追踪、无社区检测),如果只需要基本的代码关系查询和可视化,这是性价比最高的选择。</div>
<p><strong>建议场景:</strong>多语言项目中快速查询函数调用关系、类继承层次、发现死代码</p>
</div>
<div class="pros-cons">
<div class="pros"><h4>优势</h4><ul><li>14 种语言覆盖广</li><li>MIT 许可,社区成熟(3,061 ⭐)</li><li>多数据库后端灵活适配</li><li>完善的 CI/CD(测试 + E2E</li><li>自动 MCP 配置向导</li></ul></div>
<div class="cons"><h4>局限性</h4><ul><li>开放 Issues 高达 179 个</li><li>缺少深度分析能力</li><li>功能相对基础</li><li>依赖外部数据库时部署复杂度增加</li></ul></div>
</div>
</section>
<!-- 6. Axon -->
<section id="axon">
<h2>6. Axon 深度分析</h2>
<p>Axon 是功能最深入的代码智能引擎,拥有 12 阶段深度分析管线,虽然星标较少(674),但分析能力远超其他项目。</p>
<h3>语言支持详情</h3>
<p>仅支持 <strong>3 种语言</strong>Python、TypeScript、JavaScript),但分析深度远超同类:</p>
<ul style="margin-left:20px; color:var(--text-secondary); font-size:0.92rem;">
<li><strong>Python 框架感知</strong>:自动检测 <code>@app.route</code><code>@router.get</code><code>@click.command</code><code>test_*</code><code>__main__</code> 等入口点</li>
<li><strong>JS/TS 框架感知</strong>:自动检测 Express handlers、导出函数、handler/middleware 模式</li>
<li><strong>死代码检测</strong>:框架感知的多轮分析,豁免入口点、装饰器、Protocol 一致性</li>
<li><strong>内置函数过滤</strong>138 个黑名单条目(<code>print</code><code>len</code><code>console</code><code>fetch</code><code>useState</code> 等)</li>
<li><strong>类型分析</strong>:从参数、返回值、变量注解中提取类型引用</li>
<li><strong>Git 变更耦合</strong>:分析 6 个月 Git 历史,发现静态分析遗漏的依赖</li>
</ul>
<h3>AI 助手集成</h3>
<ul style="margin-left:20px; color:var(--text-secondary); font-size:0.92rem;">
<li>MCP 工具:<code>axon_query</code>(混合搜索)、<code>axon_context</code>360° 符号视图)、<code>axon_impact</code>(影响范围)、<code>axon_dead_code</code></li>
<li>每个工具响应自带<strong>下一步建议</strong>(如 "Next: Use context() on a specific symbol"</li>
<li>资源:<code>axon://overview</code><code>axon://dead-code</code><code>axon://schema</code></li>
</ul>
<div class="claude-rec">
<h4>🤖 与 Claude 配合使用建议</h4>
<p><strong>推荐指数:</strong><span style="color:var(--color-warning);">⭐⭐⭐⭐ (特定场景最高)</span></p>
<p><strong>使用方式:</strong>运行 <code>axon serve --watch</code> 启动 MCP 服务,然后 <code>axon setup --claude</code> 配置 Claude MCP。</p>
<div class="rec-reason"><strong>推荐理由:</strong>如果你主要使用 Python/TypeScriptAxon 是分析深度最高的选择。它的框架感知入口点检测、执行流追踪、Git 变更耦合分析都是独有功能。MCP 工具响应自带下一步建议提示,对 Claude 的 agentic workflow 非常友好。适合需要深度代码理解、影响范围评估和死代码检测的场景。局限性是仅支持 3 种语言且无开源许可证。</div>
<p><strong>建议场景:</strong>Python/TS 项目的重构前影响分析、死代码清理、架构审计</p>
</div>
<div class="pros-cons">
<div class="pros"><h4>优势</h4><ul><li>分析能力最全面深入</li><li>交互式 Web UI 体验优秀</li><li>框架感知的入口点和死代码检测</li><li>Git 历史耦合分析独有</li><li>MCP 工具响应自带下一步建议</li></ul></div>
<div class="cons"><h4>局限性</h4><ul><li>仅支持 3 种语言(Python/TS/JS</li><li>无开源许可证</li><li>星标 674,社区验证不足</li><li>创建时间新(2026-02),成熟度待观察</li></ul></div>
</div>
</section>
<!-- 7. Traditional Tools -->
<section id="traditional">
<h2>7. 传统依赖可视化工具</h2>
<p style="color:var(--text-secondary); margin-bottom:16px;">madge 和 dependency-cruiser 是 JS/TS 生态中最成熟的两个依赖可视化工具,分别代表了"快速可视化"和"规则验证"两个方向。</p>
<h3>语言支持详情</h3>
<div class="table-wrap">
<table>
<thead><tr><th>维度</th><th>madge (⭐ 10,055)</th><th>dependency-cruiser (⭐ 6,600)</th></tr></thead>
<tbody>
<tr><td><strong>核心定位</strong></td><td>依赖可视化 + 分析</td><td>依赖验证 + 可视化(规则引擎)</td></tr>
<tr><td><strong>JS 模块格式</strong></td><td>AMD / CommonJS / ES6</td><td>ES6 / CommonJS / AMD</td></tr>
<tr><td><strong>TS 支持</strong></td><td>需 tsConfig 配置路径解析</td><td>支持 --ts-pre-compilation-deps</td></tr>
<tr><td><strong>CSS 预处理器</strong></td><td><strong></strong> Sass/Stylus/Less</td><td></td></tr>
<tr><td><strong>Vue / Svelte</strong></td><td></td><td>✅ Vue2/Vue3 + Svelte v4</td></tr>
<tr><td><strong>CI/CD 集成</strong></td><td>弱(仅报告)</td><td><strong></strong>(类 eslint 规则验证)</td></tr>
<tr><td><strong>输出格式</strong></td><td>DOT / SVG / JSON</td><td>DOT / Mermaid / JSON / CSV / HTML / 文本</td></tr>
<tr><td><strong>自定义规则</strong></td><td>不支持</td><td><strong>支持</strong>(精细 from/to 路径规则)</td></tr>
<tr><td><strong>Webpack 别名</strong></td><td>支持</td><td>支持</td></tr>
<tr><td><strong>动态 import</strong></td><td></td><td>✅(静态字符串参数)</td></tr>
<tr><td><strong>JSDoc @import</strong></td><td></td><td>✅ detectJSDocImports</td></tr>
<tr><td><strong>开放 Issues</strong></td><td>122</td><td>36</td></tr>
</tbody>
</table>
</div>
<div class="claude-rec">
<h4>🤖 与 Claude 配合使用建议</h4>
<p><strong>推荐指数:</strong><span style="color:var(--color-warning);">⭐⭐⭐ (JS/TS 项目专用)</span></p>
<p><strong>使用方式:</strong>这两个工具均无 MCP/AI 集成。与 Claude 配合时,建议在 Claude 的 prompt 中要求生成 madge/dep-cruiser 命令,然后查看输出的 SVG/HTML 文件。</p>
<div class="rec-reason"><strong>推荐理由:</strong>这两个工具适合纯 JS/TS 项目。madge 适合快速查看依赖图和循环依赖;dependency-cruiser 适合在 CI/CD 中强制执行架构规则。它们没有 AI 集成,但在 JS/TS 生态中是最成熟、最稳定的选择。如果你的项目仅使用 JS/TS,这两个工具仍然是值得保留的。</div>
</div>
</section>
<!-- 8. code2kg -->
<section id="code2kg">
<h2>8. code-to-knowledge-graph 简评</h2>
<p>基于 VS Code LSP 的 Kotlin/JVM 库,星标 150,最近推送在 2025-06(已近 10 个月未更新)。</p>
<div class="pros-cons">
<div class="pros"><h4>优势</h4><ul><li>基于 VS Code LSP,理论上语言覆盖广</li><li>Kotlin/JVM 生态,适合 Java 项目集成</li><li>架构为可扩展库,可嵌入其他应用</li><li>MinHashing 代码相似度分析(独有功能)</li></ul></div>
<div class="cons"><h4>局限性</h4><ul><li>已近 10 个月未更新,活跃度极低</li><li>不支持 MCP 集成</li><li>无独立 CLI,依赖 VS Code 扩展</li><li>缺少深度分析功能</li><li>依赖 VS Code 实例,资源开销大</li></ul></div>
</div>
<div class="claude-rec">
<h4>🤖 与 Claude 配合使用建议</h4>
<p><strong>推荐指数:</strong><span style="color:var(--color-warning);">⭐⭐ (不推荐)</span></p>
<div class="rec-reason"><strong>不推荐理由:</strong>无 MCP 集成、不活跃维护、无 CLI 工具,无法与 Claude 形成自动化工作流。仅在对 JVM 生态有特定嵌入需求时考虑。</div>
</div>
<p style="color:var(--text-secondary); font-size:0.88rem; margin-top:12px;">该项目目前更适合对 JVM 生态有特定嵌入需求的场景,不作为通用推荐。</p>
</section>
<!-- 9. Claude Integration Overview -->
<section id="claude">
<h2>9. Claude 集成建议总览</h2>
<p style="color:var(--text-secondary); margin-bottom:16px;">以下按使用场景推荐最适合与 Claude Code 配合的工具及集成方式。</p>
<div class="table-wrap">
<table>
<thead><tr><th>场景</th><th>推荐工具</th><th>集成方式</th><th>理由</th></tr></thead>
<tbody>
<tr><td><strong>通用多语言项目</strong><br>3+ 种语言)</td><td><strong>Graphify</strong></td><td><code>CLAUDE.md</code> + PreToolUse 钩子</td><td>25 种语言覆盖,钩子自动注入图谱上下文,搜索时获得调用图</td></tr>
<tr><td><strong>纯 Python/TS 项目</strong><br>深度分析 + 重构</td><td><strong>Axon</strong></td><td>MCP Server + <code>axon setup --claude</code></td><td>框架感知入口点、执行流追踪、死代码检测、影响范围分析</td></tr>
<tr><td><strong>快速查询代码关系</strong><br>(调用链、继承、死代码)</td><td><strong>CodeGraphContext</strong></td><td>MCP Server + <code>cgc mcp setup</code></td><td>14 种语言、自然语言查询、多数据库后端</td></tr>
<tr><td><strong>JS/TS 项目架构治理</strong><br>CI/CD 规则验证)</td><td><strong>dependency-cruiser</strong></td><td>CI/CD 规则文件</td><td>精细 from/to 路径规则,类 eslint 集成,Mermaid/HTML 输出</td></tr>
<tr><td><strong>JS/TS 快速依赖检查</strong></td><td><strong>madge</strong></td><td>CLI 命令</td><td>即开即用,SVG 依赖图,CSS 预处理器支持</td></tr>
<tr><td><strong>降低 Claude 上下文 token 成本</strong></td><td><strong>Graphify</strong></td><td>MCP Server 模式</td><td>71.5 倍压缩率(123k → 1.7k tokens/查询)</td></tr>
</tbody>
</table>
</div>
<h3>集成优先级建议</h3>
<div class="verdict">
<h4>第一优先级(立即安装)</h4>
<p><strong>Graphify</strong> — 如果你使用 Claude Code 且项目涉及多种语言。安装后自动获得 CLAUDE.md + 钩子集成,搜索文件时自动获得调用图上下文。多模态支持还能帮你理解文档和论文与代码的关系。</p>
</div>
<div class="verdict">
<h4>第二优先级(按需安装)</h4>
<p><strong>Axon</strong> — 如果你的主要工作是 Python/TS 项目的重构和死代码清理。它的框架感知分析和 Git 变更耦合是独有功能,能帮你在重构前评估影响范围。</p>
<p><strong>CodeGraphContext</strong> — 如果你需要覆盖 Graphify 不支持的 Perl 语言,或需要多数据库后端(Neo4j 等)的企业级部署。</p>
</div>
<div class="verdict">
<h4>第三优先级(可选保留)</h4>
<p><strong>madge</strong> / <strong>dependency-cruiser</strong> — 仅在纯 JS/TS 项目中有价值。Graphify 已覆盖 JS/TS 的 AST 分析,这两个工具在 CI/CD 规则验证和 CSS 预处理器支持方面仍有不可替代的场景。</p>
</div>
</section>
<!-- 10. Summary -->
<section id="summary">
<h2>10. 总结与选型建议</h2>
<div class="verdict">
<h4>场景一:AI 编码助手的知识图谱集成</h4>
<p><strong>推荐 Graphify</strong> — 25 种语言 + 多模态、71.5 倍 token 压缩、CLAUDE.md + PreToolUse 钩子自动注入上下文。Claude 用户的首选方案。</p>
</div>
<div class="verdict">
<h4>场景二:多语言项目的通用代码图谱</h4>
<p><strong>推荐 CodeGraphContext</strong> — 14 种语言、MIT 许可、多数据库后端、成熟的 CI/CD。适合覆盖 Graphify 不支持的语言(如 Perl)或需要 Neo4j 等外部数据库的场景。</p>
</div>
<div class="verdict">
<h4>场景三:深度代码分析与影响评估</h4>
<p><strong>推荐 Axon</strong> — 12 阶段管线、框架感知入口点、执行流追踪、Git 变更耦合。适合 Python/TS 项目的重构前影响分析和死代码检测。</p>
</div>
<div class="verdict">
<h4>场景四:JS/TS 项目的架构治理</h4>
<p><strong>推荐 dependency-cruiser</strong> — 自定义规则引擎 + CI/CD 集成,可在构建流程中强制架构纪律。快速查看则选 <strong>madge</strong>(支持 CSS 预处理器)。</p>
</div>
<div class="verdict">
<h4>趋势总结</h4>
<p>2025-2026 年代码结构工具的核心趋势:<strong>知识图谱 + AI 助手集成(MCP</strong> 成为新方向。传统工具(madge/dependency-cruiser)侧重依赖可视化与验证,新一代工具(Graphify/CodeGraphContext/Axon)则将代码转化为可查询的图谱,为 AI 编码助手提供结构化上下文。Tree-sitter 静态分析 + 图数据库 + Leiden 社区检测 是当前最主流的技术组合。</p>
</div>
</section>
<!-- Sources -->
<div class="sources">
<h2>数据来源</h2>
<ul>
<li><a href="https://github.com/safishamsi/graphify" target="_blank">safishamsi/graphify - GitHub</a></li>
<li><a href="https://graphify.net/" target="_blank">graphify.net - 官方网站</a></li>
<li><a href="https://github.com/CodeGraphContext/CodeGraphContext" target="_blank">CodeGraphContext/CodeGraphContext - GitHub</a></li>
<li><a href="https://github.com/harshkedia177/axon" target="_blank">harshkedia177/axon - GitHub</a></li>
<li><a href="https://github.com/sverweij/dependency-cruiser" target="_blank">sverweij/dependency-cruiser - GitHub</a></li>
<li><a href="https://github.com/pahen/madge" target="_blank">pahen/madge - GitHub</a></li>
<li><a href="https://github.com/Bevel-Software/code-to-knowledge-graph" target="_blank">Bevel-Software/code-to-knowledge-graph - GitHub</a></li>
<li><a href="https://github.com/topics/code-visualization" target="_blank">GitHub Topics: code-visualization</a></li>
<li><a href="https://github.com/topics/graph-visualization" target="_blank">GitHub Topics: graph-visualization</a></li>
<li><a href="https://githubnext.com/projects/repo-visualization/" target="_blank">GitHub Next: Repo Visualization</a></li>
</ul>
</div>
</main>
<!-- Footer -->
<div class="footer">
<p>调查报告生成于 2026-04-27 | 数据来源:GitHub API 及项目页面</p>
</div>
<script>
// Sidebar active link tracking
const links = document.querySelectorAll('.sidebar nav a');
const sections = document.querySelectorAll('.main section, .main .sources');
function setActive() {
let current = '';
sections.forEach(s => {
if (s.getBoundingClientRect().top < 120) current = s.id;
});
links.forEach(a => {
a.classList.toggle('active', a.getAttribute('href') === '#' + current);
});
}
links.forEach(a => {
a.addEventListener('click', e => {
e.preventDefault();
const target = document.querySelector(a.getAttribute('href'));
if (target) target.scrollIntoView();
});
});
window.addEventListener('scroll', setActive, { passive: true });
setActive();
</script>
</body>
</html>