函数调用图插件

Result

updated

选择函数调用图的根函数

与根函数相关的所有函数调用关系

双击foo函数后:

双击后的根函数随之变化


就地利用org.eclipse.ptp.pldt.sampleCDTstaticAnalysis/samples下的一些c文件测试生成的call graph效果

Thread

:pserver:anonymous@dev.eclipse.org:/cvsroot/tools/org.eclipse.ptp/tools/org.eclipse.ptp.pldt.sampleCDTstaticAnalysis

Details

MANIFEST.MF:中添加GEF(包括draw2d、gef、zest.core、zest.layout三个插件)

Require
-
Bundle
:
 org
.
eclipse
.
ui
,

org
. eclipse . core . runtime ,
org
. eclipse . cdt . core ,
org
. eclipse . core . resources ,
org
. eclipse . ptp . pldt . common ,
org
. eclipse . ptp . pldt . mpi . analysis ,
org
. eclipse . ptp . pldt . mpi . analysis . cdt ,
org
. eclipse . zest . core ,
org
. eclipse . zest . layouts ,
org
. eclipse . draw2d

plugins.xml:说明Call Graph视图的扩展点

 
<extension

point = "org.eclipse.ui.views" >
<view
category = "org.eclipse.cdt.ui.views"
class = "org.eclipse.ptp.pldt.sampleCDTstaticAnalysis.view.CallGraphView"
icon = "icons/decision.png"
id = "org.eclipse.ptp.pldt.sampleCDTstaticAnalysis.view.CallGraphView"
name = "Function Call Graph" >
</view>
</extension>

根据Zest Turtorial 编写的主要org.eclipse.ptp.pldt.sampleCDTstaticAnalysis.view.CallGraphView

### 在 VSCode 中显示函数调用关系的插件和工具 在 Visual Studio Code (VSCode) 中,有多种插件和工具可以帮助开发者分析和可视化函数调用关系。以下是一些推荐的插件及其功能描述: #### 内置功能 - **CodeLens**[^1]:VSCode 的内置功能,可以在代码中显示函数或方法的引用数。通过 CodeLens,用户可以快速查看某个函数被调用的次数以及具体位置。 - **Peek Definition**[^1]:右键点击函数名后选择“Peek Definition”,可以在不离开当前文件的情况下查看函数定义。 #### 第三方插件 - **Call Graph Viewer**:此插件用于生成和可视化函数调用图,帮助开发者更直观地理解代码中的调用关系。 - **d3-graphviz**[^2]:该插件允许用户通过右键菜单中的“Show Function Call Graph”命令,在 Webview 面板中使用 d3-graphviz 渲染函数调用图。它能够展示基本的函数调用关系。 - **C Relation**[^4]:专为 C 语言设计的插件,支持显示函数调用链。用户可以通过右键点击函数并选择“C Relation: Show Call Graph”来查看调用关系。 - **Graphviz Preview**[^1]:结合 Graphviz 工具,可以生成函数调用图,并在 VSCode 中预览。 #### 基于语言的插件 - **Python 插件**:由微软开发,提供了代码导航和重构功能,适合 Python 开发者。 - **C/C++ 插件**[^1]:同样由微软提供,支持强大的代码分析和导航功能,适用于 C/C++ 项目。 - **Java Extension Pack**:包含一系列 Java 开发相关工具,支持代码分析和导航。 - **Go 插件**:为 Go 语言开发者提供了丰富的代码导航和分析功能。 #### 其他代码分析工具 - **SonarLint**:实时的代码质量和安全分析工具,支持多种编程语言,可帮助识别潜在问题。 - **Code2flow**:可以生成代码流程图,直观地显示函数调用关系。 #### 手动绘制调用流程图 如果需要手动绘制类之间的调用关系,可以参考以下方法: - 使用函数头+箭头的方式,在 `.cpp` 文件中列出调用顺序,并将文件扩展名改为 `.R`,注释符号从双斜杠 `//` 改为井号 `#`[^3]。例如: ```cpp // callList.cpp CDeviceListDlg::OnClickAddDevice(){} | ↓ CDeviceListDlg::OnAddDevice(const DevInfoNode * pNode) | ↓ CDataSet::Add(int bSameID, int bRedraw) | ↓ CMsgPublisher::SendMessage(unsigned int message, unsigned __int64 wParam, __int64 lParam) | ↓ CMainDlg::OnAddDevServer(unsigned __int64 wParam, __int64 lParam) | ↓ CDeviceManager::AddDevice(CDevice * Dev) ``` ### 示例代码 以下是一个简单的 C 程序示例,展示如何使用 **C Relation** 插件生成调用图: ```c // main.c #include "mylib.h" int main() { func_a(); return 0; } // mylib.h #ifndef MYLIB_H #define MYLIB_H void func_a(); #endif // MYLIB_H // mylib.c #include <stdio.h> void func_a() { printf("Hello from func_a!\n"); func_b(); } void func_b() { printf("Hello from func_b!\n"); } ``` 通过右键点击 `func_a` 并选择“C Relation: Show Call Graph”,可以查看 `func_a` 和 `func_b` 之间的调用关系[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值