clang-tags--上下文关联的c++调用搜索工具及其vim脚本

本文介绍了如何利用clang-tags这一工具,结合Vim,实现C++的上下文关联调用搜索。clang-tags是基于clang的,可以生成调用关系数据库,并通过查询提供调用栈信息。在Mac上,作者修复了原项目的不兼容问题,并介绍了安装和使用方法,包括启动、扫描、索引和查询调用。此外,还提到了vim-clang-tags插件,以改善Vim的代码查找体验。
摘要由CSDN通过智能技术生成

实际上,用vim的一个很大的缺点,是没有一个好用的,能理解上下文的c++调用关系搜索工具以及代码补全工具。在IDE里面,鼠标右键查找引用,查找调用,出来的结果是经过语法分析的,补全也是根据上下文头文件弄的。但是vim里面没有这个东西,毕竟vim是编辑器,他不知道编译信息。这个问题从我开始工作,就困扰着我,一直是我没法愉快使用vim写cpp的原因,毕竟菜。

后来,有了clang,以及clang complete等vim插件,解决了cpp代码补全的问题。YouCompleteMe加入了转到定义的功能,部分解决了跳转到定义的问题(但是不是特别准,有点问题)。

但是,调用关系搜索,一直是个解决不了的问题。

Clang静态分析

前一阵子突然想到要解决这个问题,就想到了clang。clang可以做代码静态分析,那怎么就不能做调用关系分析呢?实际上编译的时候肯定是需要调用关系的一个数据库的,不然没法愉快分析链接过程。那么clang有暴露接口嘛?有的,于是想到了用暴露出来的调用关系接口,做一个简单的调用关系数据库,然后通过查询数据库,查找对应的调用栈等信息。

Clang-Tags

我能想到,自然也有网友能想到,于是我在git上找到了clang-tags。这个项目已经把我的大部分想法都实现了,虽然已经有些年头了,但是总的来说还是能正常运行,只不过它需要strace用于生成编译参数,在mac上不是特别友好(mac不支持strace,并且

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值