当前位置: 首页 > article >正文

VS Code 可视化查看 C 调用链插件 C Relation

简介

一直想用 SourceInsight 一样的可以查看函数调用链一样的功能,但是又不想用 SourceInsight,找了一圈没有找到 VS Code 有类似功能的插件,索性自己开发了一个。

这是一个可以可视化显示 C 函数调用关系的 VS Code 插件,功能纯粹,使用简单。

项目依赖

Tree-sitter,一个解析器生成器工具和一个增量解析库,它可以为源文件构建具体的语法树。

D3,是一个免费的、开源的JavaScript库,用于可视化数据。

本插件通过 Tree-sitter 分析出 C 语言工程的符号表和调用关系表格,并用 D3 可视化显示出来。

快速开始

安装插件

首先打开一个 C 语言项目,然后在 VS Code 应用市场搜索 C Relation ,选择安装。

在这里插入图片描述

初始化数据

Ctrl+Shift+P ,打开命令面板,然后选择 C Relation: Init database 。插件将扫描整个项目的 .c.h 文件,并构建符号表数据。

在这里插入图片描述

如果 C 语言项目比较大,第一次扫描耗时可能会比较久。

扫描完成后,会有如下提示:

在这里插入图片描述

查看调用链

打开项目中的某一个文件,选中一个函数符号,右键选择 Show Relations

在这里插入图片描述

调用关系会在一个新的标签页打开,每次选择一个符号,右键查看调用链都会打开一个新的标签页,可以同时查看多个函数的调用链。

鼠标移动到函数上,可以看到函数所在文件和具体的行号,点击函数可以展开或者合并下一级调用,右键函数可以跳转到函数所在文件和行号处。
在这里插入图片描述

如果展开调用链树太长或者太宽,可以拖动整棵树,以便更好的查看。

在这里插入图片描述

更新数据

插件主要是为了查看调用链,如果你在开发,代码存在更新,请 Ctrl+Shift+P ,打开命令面板,然后选择 C Relation: Update database 。插件将扫描更新果的文件,并更新符号表数据。

如果你想重新完全更新一遍数据库,可以打开命令面板,然后选择 C Relation: Force update database 即可。

设置

插件目前提供了两个设置,分别是项目扫描数据存放路径,还有插件日志等级。

在这里插入图片描述

数据保存路径

默认会放在 username/.crelation 目录下,可以自行修改。

日志等级

默认关闭,有多个等级可选,等级越高,控制台日志越多,主要是用于问题调试,一般用户无需关心。

不过需要提一点,如果日志等级太高,会延长项目文件的扫描时间。

问题或者疑问

如果有使用问题或者疑问,可以在下面留言,或者直接在 GitHub 上提 issue。

仓库:https://github.com/SingleMoonlight/crelation

原始文档:https://blog.ifback.com/article/automatically-publish-vscode-plugins-using-github-action/


http://www.kler.cn/a/488792.html

相关文章:

  • 人工智能学习路线全链路解析
  • 搜广推面经五
  • 工业 4G 路由器赋能远程医疗,守护生命线
  • idea全局替换显示不全(ctrl+shift+R)
  • 生成模型:变分自编码器-VAE
  • 探索大型语言模型新架构:从 MoE 到 MoA
  • 腾讯云AI代码助手编程挑战赛-知识百科AI
  • Unity3D Huatuo热更环境安装与示例项目详解
  • MYSQL------MySQL 复制MySQL Cluster 架构
  • Xsens惯性动捕技术优化人型机器人AI训练流程
  • 搭建docker私有化仓库Harbor
  • flask-admin 在modelview 默认视图下重写create_model_actions来实现列表数据的批量处理actions
  • (长期更新)《零基础入门 ArcGIS(ArcMap) 》实验六----流域综合处理(超超超详细!!!)
  • 2025年第三届“华数杯”国际赛A题解题思路与代码(Matlab版)
  • 《Spring Framework实战》5:Spring Framework 概述
  • [微服务]redis数据结构
  • C#实现二维码和条形码识别:OpenCvSharp教程
  • WebRtc03: Web服务器原理和Nodejs搭建
  • 回归预测 | MATLAB实LSTM多输入单输出回归预测
  • [Git] git reset --hard / git reset --soft
  • Perl语言的数据结构
  • STM32的存储结构
  • abap安装cl_json类
  • 玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖
  • Flutter项目开发模版,开箱即用(Plus版本)
  • k8s dashboard离线部署步骤