news 2026/5/24 11:38:18

ACAV:支持 C、C++ 和 Objective-C 的交互式 AST 可视化工具,功能强大!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ACAV:支持 C、C++ 和 Objective-C 的交互式 AST 可视化工具,功能强大!

ACAV:基于 Clang 和 Qt 的交互式 AST 可视化工具,支持 C、C++ 和 Objective-C

ACAV(Aurora Clang AST Viewer)是一款基于 Clang 和 Qt 构建的交互式抽象语法树(AST)可视化工具,适用于 C、C++ 和 Objective-C 语言。借助 JSON 编译数据库(如 compile_commands.json),它能让用户打开真实项目,检查某个翻译单元的 AST,并在源代码和 AST 节点之间直接切换。

项目链接

- 项目代码库

- 项目介绍页面

- 在线手册

功能概览

在拥有有效编译数据库时,ACAV 具备以下功能:

  • 可在可导航的树结构中检查某个翻译单元的 AST。
  • 能在源代码位置和 AST 节点之间双向切换。
  • 探索程序结构时可查看声明上下文。
  • 可同时搜索源代码文本和 AST 节点。
  • 能在不同会话间复用依赖项和 AST 缓存文件。

ACAV 采用三程序架构:

  • acav 是交互式的图形用户界面(GUI)应用程序。
  • query-dependencies 从编译数据库中提取依赖信息。
  • make-ast 为单个源文件构建并缓存序列化的 AST 文件。

目的与范围

ACAV 填补了 Clang 强大的前端基础设施与交互式探索 Clang AST 实际困难之间的空白。它针对真实代码库设计,读取 JSON 编译数据库,为每个源文件应用记录的构建设置,并通过后台处理和 AST 缓存保持界面响应。

ACAV 对学习编译器内部原理的学生、研究程序结构的科研人员,以及构建或调试基于 Clang 的工具的开发者都很有用。目前,其功能仅限于只读的 AST 探索,不会修改源代码、执行重构,也不作为通用编辑器使用,且一次仅显示一个翻译单元的 AST。

快速开始

典型使用流程如下:

  1. 为目标项目生成或找到编译数据库。
  2. 按照安装说明构建或安装 ACAV。
  3. 启动 ACAV:
  4. acav -c /path/to/compile_commands.json
  5. 在文件浏览器中浏览文件,然后双击文件或按 F5 生成或加载其 AST。
  6. 使用源代码视图、AST 视图和声明上下文视图来浏览程序结构。

文档结构

- 许可证指向权威的许可证文件。

- 安装涵盖了先决条件、本地构建和容器化工作流程。

- Docker/Podman 演示镜像提供了详细的 OCI 演示镜像说明。

- 用户手册介绍了 GUI、常见工作流程、命令行程序、键盘快捷键和配置。

- 参考资料列出了相关技术和资源。

- 类提供生成的类参考。

- 文件提供生成的文件参考。

- 更新日志提供 ACAV 的公开发布说明。

- 声明提供项目归属、作者信息和许可背景。

如何使用本手册

如果你是 ACAV 的新手,先阅读本概述,然后查看安装,接着阅读用户手册。如果你想查看 API 接口,可参考类和文件。如果你想查看公开发布说明,可查看更新日志。

1.16.1 生成

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/24 11:38:07

如何用PowerToys Text Extractor的3个技巧实现精准文字提取

如何用PowerToys Text Extractor的3个技巧实现精准文字提取 【免费下载链接】PowerToys Microsoft PowerToys is a collection of utilities that supercharge productivity and customization on Windows 项目地址: https://gitcode.com/GitHub_Trending/po/PowerToys …

作者头像 李华
网站建设 2026/5/24 11:35:05

3步搞定AI图像修复:零基础也能用的智能高清化工具

3步搞定AI图像修复:零基础也能用的智能高清化工具 【免费下载链接】Real-ESRGAN-GUI Lovely Real-ESRGAN / Real-CUGAN GUI Wrapper 项目地址: https://gitcode.com/gh_mirrors/re/Real-ESRGAN-GUI 还在为模糊的老照片而烦恼吗?想要将低分辨率的网…

作者头像 李华
网站建设 2026/5/24 11:34:27

DTW与K-means在供暖负荷时间序列聚类中的工程实践与评估

1. 项目概述:从数据中发现供暖行为的“指纹”处理过建筑能耗数据的朋友都知道,那是一片看似规律、实则充满“个性”的海洋。每栋建筑、每个家庭,其供暖系统的运行模式都像是一枚独特的指纹,受到锅炉性能、室外温度、建筑保温、乃至…

作者头像 李华
网站建设 2026/5/24 11:33:38

Keil MDK设备列表空白的解决方案与原理分析

1. 问题现象与背景解析最近在使用Keil MDK 5.15版本配合英飞凌专用M0/M0许可证时,遇到了一个令人困扰的问题:即使在Pack Installer中安装了最新的Infineon::XMC1000_DFP设备支持包,在创建新项目或修改现有项目时,"Software P…

作者头像 李华
网站建设 2026/5/24 11:29:39

深度解析:微信小程序ECharts图表库的架构设计与技术实现

深度解析:微信小程序ECharts图表库的架构设计与技术实现 【免费下载链接】echarts-for-weixin 基于 Apache ECharts 的微信小程序图表库 项目地址: https://gitcode.com/gh_mirrors/ec/echarts-for-weixin 在移动互联网时代,数据可视化已成为企业…

作者头像 李华
网站建设 2026/5/24 11:29:25

Android App代理检测绕过:OkHttp静默接管实战

1. 为什么你抓包总失败——不是工具不行,是App在“认人”“抓包总失败”这五个字,我去年在三个不同客户的现场都听工程师亲口说过。他们用的都是主流工具:Charles、Fiddler、mitmproxy,手机连的是同一台Mac,Wi-Fi代理配…

作者头像 李华