Show HN:有没有人对一个探索C++ AST的工具感兴趣?

Hacker News Top 工具

摘要

ACAV是一个交互式抽象语法树可视化工具,适用于C、C++和Objective-C,基于Clang和Qt构建,允许开发者通过编译数据库从真实代码库中探索AST。

我构建这个软件是为了帮助需要对C/C++代码库进行静态代码分析的用户。它可以让你交互式地探索AST。它完全可以取代Clang的AST dump,并且你还可以以结构化的方式搜索代码/AST。例如,你可以搜索一个匹配特定名称或参数数量的函数。
查看原文
查看缓存全文

缓存时间: 2026/05/24 00:35

# ACAV:概述 来源:https://uvic-aurora.github.io/acav-manual/index.html ACAV(Aurora Clang AST Viewer)是一款基于 Clang 和 Qt 构建的交互式抽象语法树(AST)可视化工具,支持 C、C++ 和 Objective-C。给定一个 JSON 编译数据库(如 compile_commands.json),ACAV 允许你打开真实项目,检查某个翻译单元的 AST,并在源代码和 AST 节点之间直接跳转。 ACAV 界面截图,展示了文件浏览器、源代码视图、AST 树视图、声明上下文面板和日志面板。 *截图:ACAV 显示文件浏览器、源代码面板、AST 树视图、声明上下文面板和日志面板。* ## 项目链接 - 项目代码库 (https://github.com/uvic-aurora/acav) - 项目介绍页面 (https://uvic-aurora.github.io/acav/) - 在线手册 (https://uvic-aurora.github.io/acav-manual/index.html) ## 概览 有了有效的编译数据库,ACAV 允许你: - 在可导航的树中检查某个翻译单元的 AST, - 在源代码位置与 AST 节点之间双向移动, - 浏览程序结构时查看声明上下文, - 搜索源代码文本和 AST 节点, - 跨会话复用依赖项和 AST 缓存工件。 ACAV 采用三程序架构: - acav 是交互式 GUI 应用程序。 - query-dependencies 从编译数据库中提取依赖信息。 - make-ast 为单个源文件构建并缓存序列化的 AST 文件。 ## 目的与范围 ACAV 填补了 Clang 强大的前端基础设施与交互式探索 Clang AST 的实际困难之间的差距。它专为真实代码库设计,而非玩具示例:它读取 JSON 编译数据库,应用每个源文件的记录构建设置,并通过后台处理和 AST 缓存保持界面响应。 ACAV 对学习编译器内部原理的学生、研究程序结构的研究人员以及构建或调试基于 Clang 工具的开发者都很有用。其当前范围有意限制为只读 AST 探索。ACAV 不会修改源代码,不执行重构,也不作为通用编辑器,并且一次只显示一个翻译单元的 AST。 ## 快速开始 典型工作流程: 1. 为目标项目生成或定位一个编译数据库。 2. 按照安装 (https://uvic-aurora.github.io/acav-manual/installation.html#md_INSTALL) 构建或安装 ACAV。 3. 启动 ACAV:acav -c /path/to/compile_commands.json 4. 在文件浏览器中浏览文件,然后双击文件或按 F5 生成或加载其 AST。 5. 使用源代码视图、AST 视图和声明上下文视图浏览程序结构。 ## 文档组织 - 许可 (https://uvic-aurora.github.io/acav-manual/license.html#md_docs_2manual_2license) 指向权威许可证文件。 - 安装 (https://uvic-aurora.github.io/acav-manual/installation.html#md_INSTALL) 涵盖先决条件、本地构建和容器化工作流程。 - Docker/Podman 演示镜像 (https://uvic-aurora.github.io/acav-manual/demo_image.html#md_DOCKER__IMAGE__README) 提供详细的 OCI 演示镜像说明。 - 用户手册 (https://uvic-aurora.github.io/acav-manual/user_manual.html#md_ACAV__USER__MANUAL) 描述 GUI、常见工作流程、命令行程序、快捷键和配置。 - 参考 (https://uvic-aurora.github.io/acav-manual/references.html#md_docs_2manual_2references) 列出相关技术和资源。 - 类 (https://uvic-aurora.github.io/acav-manual/annotated.html) 提供生成的类参考。 - 文件 (https://uvic-aurora.github.io/acav-manual/files.html) 提供生成的文件参考。 - 变更日志 (https://uvic-aurora.github.io/acav-manual/changelog.html#md_CHANGELOG) 提供 ACAV 的公开发布说明。 - 声明 (https://uvic-aurora.github.io/acav-manual/notice.html#md_docs_2manual_2notice) 提供项目归属、作者和许可上下文。 ## 如何使用本手册 如果你是 ACAV 新手,请从本概述开始,然后阅读安装 (https://uvic-aurora.github.io/acav-manual/installation.html#md_INSTALL),接着阅读用户手册 (https://uvic-aurora.github.io/acav-manual/user_manual.html#md_ACAV__USER__MANUAL)。如果你想查看 API 表面,请使用类 (https://uvic-aurora.github.io/acav-manual/annotated.html) 和文件 (https://uvic-aurora.github.io/acav-manual/files.html)。如果你想查看公开发布说明,请参见变更日志 (https://uvic-aurora.github.io/acav-manual/changelog.html#md_CHANGELOG)。

相似文章

@austinit: 嘿,朋友们! 强烈安利 CodeGraph:把整个代码库变成结构化知识图谱的神器! 用 Tree-sitter 精准解析 AST,支持 20+ 语言,直接喂给 Claude/Cursor 等 AI Agent。 改代码前秒看影响范围,上下…

X AI KOLs Timeline

CodeGraph 是一个将代码库转换为结构化知识图谱的本地优先工具,利用 Tree-sitter 精准解析 AST 并支持 20 多种语言,可直接通过 MCP 协议喂给 Claude、Cursor 等 AI 编码代理,帮助快速分析代码影响范围,减少 token 消耗和工具调用次数。

Show HN: Codiff,本地差异审查工具

Hacker News Top

Codiff 是一款轻量级本地 diff 查看器,用于审查 Git 暂存和未暂存的更改,支持基于 LLM 的逐步讲解和内联审查评论。