SourceInsight - Relation Windows

磨刀不误砍柴工,你使用的工具决定了你的下限。我平时使用较多的代码编辑工具就是SourceInsight,这个工具速度快,操作方便,但处理非常大的项目的性能不是很理想,比如你要是添加整个Linux Kernel的源代码的话。

在使用SI浏览C语言项目代码时,用的最多的就是查找这个变量或函数在那里调用,通过查找来理解这个变量或函数的意义或作用是什么,是怎么使用的,理解其涉及的操作的执行逻辑等等。如果是C++语言的项目代码,除了上面,还要查找类的继承关系和谁使用了这个类,一般我都是通过查找类名,然后通过在搜索结果里查找public字符串来寻找它的继承类,通过查找new字符串来寻找谁生成实例而使用了它。

之前还专门搜索过从C++代码来导出类的继承和调用关系的工具。市场上是有这类工具的。

日常使用都还OK,也就这么用下来,并没有花很多时间研究SI这个工具,用的多是普通功能。里面有个Relation功能,之前理解过,能通过图表形式,显示函数或类的关系。当时知道有这个功能,也就没在意。今天想起来,再要查找某个基类的派生类时,突然想到,用这个功能不是正好可以解决这个问题吗,于是设置并使用了一下,真香!

下面参考帮助文档,来理解学习一下吧。

========== 分割线 ========== 

关系窗口(Relation Window)是 Source Insight 的一项创新功能,可以显示当前选中的符号与其他事物之间的关系。关系窗口可以显示函数调用树、类层次结构、结构成员、引用树等。它可以停靠在源代码窗口旁边,并在后台工作,自动跟踪您正在选择的内容并显示关系信息。

The Relation Window is a Source Insight innovation that shows the relationship between the currently selected symbol and other things. The Relation Window can show function call trees, class hierarchies, struc­ture members, reference trees, and more. It can be docked along side your source windows, and it works in the background tracking what you are selecting and showing relationship information automatically.

要显示关系窗口,请选择视图 > 面板 > 关系窗口。

To show the Relation Window, select View > Panels > Relation Window.

您可以在关系窗口选项对话框中指定关系类型和许多其他选项。请参阅: 关系窗口选项。

You can specify the relationship types and many other options in the Relation Window Options dialog. See: Relation Window Options.

关系窗口在后台运行,并跟踪您所选择的符号。关系窗口的优点在于您无需做任何特殊操作。在您工作时,它在后台运行,但您可以在需要时与它互动。您还可以打开多个关系窗口,分别显示不同类型的信息。

The Relation Window runs in the background and tracks what symbols you have selected. The beauty of the Relation Window is that you don’t have to do anything special. It works in the background while you work, but you can interact with it when you want to. You can also have several Relation Windows open, each show­ing different types of information.

1, Outline and Graph Views (大纲和图表视图)

关系窗口有两种视图: 大纲视图和图形视图。图形视图将符号显示为图形节点,并用线条将它们连接起来。关系图选项命令(关系窗口右键菜单中提供)可让您控制图形视图的外观。

The Relation Window has two types of views: Outline view and Graph view. The Graph view shows symbols as graph nodes with lines connecting them. The Relation Graph Options command (available on the Relation Window right-click menu) gives you control over the appearance of the graph view.

Outline View (大纲视图)

关系窗口大纲视图是关系层次结构的紧凑文本视图。您可以单击以展开或折叠大纲中的层级。

The Relation Window outline view is a compact, textual view of the relation hierarchy. You can click to expand and collapse levels in the outline.

Graph View(图形视图)

关系窗口图形视图是与大纲视图相同的关系的可视化表示。您可以展开和折叠图形中的节点。可以选择水平图形布局或垂直图形布局。您还可以打印图表,或将图表图像复制到系统剪贴板,以便在其他图像程序中进行处理。

The Relation Window graph view is a visual representation of the same relationship as the outline view. You can expand and collapse nodes in the graph. You can select either a horizontal graph layout, or a vertical graph layout. You can also print the graph, or copy the graph images to the system clipboard so you can pro­cess it in another imaging program.

要展开或折叠节点,请先将鼠标光标悬停在水平图形中节点的右边缘或左边缘上(或垂直图形中节点的顶部或底部中间)。鼠标光标将包含一个 + 或 - 符号。单击即可展开或折叠。

To expand or collapse a node, hover the mouse cursor first over the right or left edge of the node in a horizon­tal graph (or the top or bottom middle of a node in a vertical graph). The mouse cursor will contain a + or - symbol. Click to expand or collapse.

右键单击 "关系窗口",选择 "关系窗口图形选项",即可选择图形视图选项。请参阅: 关系窗口图形选项。

Relation Window Right-Click Menu

2, Relationship Rules (关系规则)

选择符号时显示的关系视图取决于符号的类型。您可以在 "关系窗口选项 "中对此进行控制。例如,您可以指定如果在源代码中选择一个函数,关系窗口将显示对该函数的引用。而如果选择一个类名,关系窗口将显示从该类派生出来的类。

The relation view that appears when you select a symbol depends on the type of symbol. You have control over this in the Relation Window Options. For example, you can specify that if you select a function in your source code, the Relation Window will show references to that function. And, if you select a class name, the Relation Window will show the classes derived from it.

每次 "关系窗口"展开一个符号以显示新的层级时,展开所代表的关系都是基于被展开的符号类型。这意味着每个关系窗口都有可能显示多种关系。 请参阅: 关系窗口选项。

Each time the Relation Window expands a symbol to show a new level, the relationship represented by the expansion is based on the type of symbol being expanded. That means each Relation Window can potentially show multiple relationships.  See: Relation Window Options.

Relationship Types (关系类型)

这些关系可分为以下几大类,从计算速度最快到最慢依次排列:

* 包含 - 显示当前符号的内容。例如,结构体的成员。

* 调用 - 显示当前符号引用了哪些其他符号。例如,当前函数调用的函数。

* 调用和调用者 - 显示分割图;一边是当前函数调用的函数,另一边是调用当前函数的函数。

* 引用 - 显示哪些其他符号引用了当前符号。例如,调用当前函数的函数。

The relationships fall into these general categories, listed from computationally the fastest to slowest:

* Contains – show the contents of the current symbol. For example, the members of a struct.

* Calls – show what other symbols are referred to by the current symbol. For example, functions that are called by the current function.

* Calls and Callers - show a split graph; one side are the functions called by the current function, the other side is the functions that call the current function.

* References – show what other symbols refer to the current symbol. For example, functions that call the current function.

3, Call Graphs (调用图)

可以对函数调用图关系进行过滤,以便只显示您认为最有趣的路径。关系窗口属性对话框中的 "调用图过滤 "按钮将带您进入一个对话框,您可以通过指定要排除的特定函数来控制过滤。您还可以通过代码度量限制过滤函数。

The function call graph relationships can be filtered to show only what you consider the most interesting paths. The “Call Graph Filtering” button in the Relation Window Properties dialog box takes you to a dialog box that lets you control the filtering by specifying particular functions you want to exclude. You can also fil­ter functions out by code metrics constraints.

请注意,Source Insight 将 C/C++ 宏视为合法的类似函数的符号,因此 C/C++ 宏可能会显示在调用图中。如果需要,可以在调用图过滤对话框中将其过滤掉。

Note that Source Insight considers C/C++ macros legitimate function-like symbols, and so C/C++ macros may show up in a call graph. You can filter them out in the Call Graph Filtering dialog box if you want.

Relation Window Performance (关系窗口性能)

关系窗口需要进行一些处理。某些关系的计算速度较慢。对于大型项目,"引用 "关系的计算速度最慢。

The Relation Window requires some processing. Some relationships are slower to compute. For very large projects, the “References” relationship will be the slowest to compute.

4, Multiple Relation Windows (多个关系窗口 )

您可以拥有多个关系窗口实例,这样就可以同时显示多个关系。每个关系窗口都有自己的关系选项。例如,一个窗口可以显示所选函数调用了哪些函数,另一个窗口可以显示哪些函数调用了所选函数。要创建新的关系窗口,请右键单击关系窗口并选择新建关系窗口。

You can have multiple Relation Window instances, so you can show multiple relationships at the same time. Each Relation Window has its own relationship options. For example, one window could show you what func­tions are called by the selected function, and another window could show you what functions make calls to the selected function. To create a new Relation Window, right-click on the Relation Window and select New Relation Window.

5, Customizing the Relation Window (自定义关系窗口)

关系窗口选项命令可从关系窗口工具栏或快捷菜单访问。您可以通过该命令控制显示哪些关系,以及窗口的显示方式。请参阅: 关系窗口选项。

The Relation Window Options command is accessed from the Relation Window toolbar or shortcut menu. You control what relationships are shown from this command, and how the window displayed. See: Relation Window Options.

您还可以使用关系图选项命令自定义关系窗口图表视图的外观。请参阅:关系窗口图形选项。

You can also customize the appearance of the Graph View of the Relation Window by using the Relation Graph Options command. See: Relation Window Graph Options.

6, Relation Window Graph Options(关系窗口图形选项)

具体使用可以参照帮助文档或者尝试一下。

7, Relation Window Options (关系窗口选项)

具体使用可以参照帮助文档或者尝试一下。

参考:

1,SourceInsight帮助

Features and Concepts -> Relation Window.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/205664.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序本地和真机调试文件上传成功但体验版不成功

可能是微信小程序ip白名单的问题,去微信公众平台(小程序)上设置小程序的ip白名单 1、在本地中取消不校验 然后在本地去上传文件,就会发现控制台报错了,会提示一个https什么不在ip白名单,复制那个网址 2、…

rabbitMQ对优先级队列的使用

注意事项: 1.队列设置优先级 权制范围(0-255)推荐0-10 否则浪费CPU与内存 2.发消息时给消息设置优先级 3.消息需要完全事先在队列中,在被消费者消费 会被排序,否则边生产边消费不会达到预期的队列优先效果。 优先级队列…

yolov4、yolov5优化策略

一、yolov4优化策略 1.Mosaic data augmentation:四张图像拼接成一张进行训练,现在一个batch相当于以前4个batch。 2.Random Erase:用随机值或训练集的平均像素值替换图像的区域。 3.Self-adversarial-training(SAT):引入噪音点…

PTA-6-45 工厂设计模式-运输工具

题目如下: 工厂类用于根据客户提交的需求生产产品(火车、汽车或拖拉机)。火车类有两个子类属性:车次和节数。拖拉机类有1个子类方法耕地,方法只需简单输出“拖拉机在耕地”。为了简化程序设计,所有…

python获取json所有节点和子节点

使用python获取json的所有父结点和子节点 并使用父节点加下划线命名子节点 先展示一段json代码 {"level1": {"level2": {"level3": [{"level4": "4value"},{"level4_2": "4_2value"}]},"level2_…

安卓底部导航栏BottomNavigationView

目录 1. BottomNavigationView (1) 准备BottomNavigationView使用的菜单资源文件 (2) 准备颜色选择器 (3) BottomNavigationView控件设置 (4) 在Java代码中设置OnItemSelectedListener监听器 (5) 与Fragment配合 (6) 标签显示模式 (7) 水波纹特效 (8) 文本外观 2. Bo…

配置 Mantis 在 Windows 上的步骤

配置 Mantis Bug Tracker 在 Windows 上的步骤 Mantis Bug Tracker 是一款开源的缺陷跟踪系统,用于管理软件开发中的问题和缺陷。在 Windows 环境下配置 Mantis 可以帮助开发者更方便地进行项目管理。以下是一个详细的教程,包含了 EasyPHP Devserver 和…

C# Onnx 阿里达摩院开源DAMO-YOLO目标检测

效果 模型信息 Inputs ------------------------- name:images tensor:Float[1, 3, 192, 320] --------------------------------------------------------------- Outputs ------------------------- name:output tensor:Float…

qt-C++笔记之主线程中使用异步逻辑来处理ROS事件循环和Qt事件循环解决相互阻塞的问题

qt-C笔记之主线程中使用异步逻辑来处理ROS事件循环和异步循环解决相互阻塞的问题 code review! 文章目录 qt-C笔记之主线程中使用异步逻辑来处理ROS事件循环和异步循环解决相互阻塞的问题1.Qt的app.exec()详解2.ros::spin()详解3.ros::AsyncSpinner详解4.主线程中结合使用的示…

云时空社会化商业 ERP 系统 gpy 文件上传漏洞复现

0x01 产品简介 时空云社会化商业ERP(简称时空云ERP) ,该产品采用JAVA语言和Oracle数据库, 融合用友软件的先进管理理念,汇集各医药企业特色管理需求,通过规范各个流通环节从而提高企业竞争力、降低人员成本…

SDK emulator directory is missing

要进行uniapp真机测试,不得不安装配置一下安卓开发环境 ,搞一个模拟器。。。然后又是各种坑。。对比来对比去还是IOS的环境使用着舒服,XCODE下载好,一切重点就是在编码了。。 安卓这个脑残货呀,哎,各种安装…

<蓝桥杯软件赛>零基础备赛20周--第8周第1讲--十大排序

报名明年4月蓝桥杯软件赛的同学们,如果你是大一零基础,目前懵懂中,不知该怎么办,可以看看本博客系列:备赛20周合集 20周的完整安排请点击:20周计划 每周发1个博客,共20周(读者可以按…

Day58权限提升-网站权限后台漏洞第三方获取

webshell 一般我们的渗透流程就是信息收集,发现漏洞,漏洞利用,一些漏洞成功之后获得一些相应的权限,还有一些是漏洞利用成功之后并没有取得的权限,而这个权限是要通过漏洞利用之后在利用其它地方取货的权限。 权限的获…

手写VUE后台管理系统5 - 整合状态管理组件pinia

整合状态管理组件 安装整合创建实例挂载使用 pinia 是一个拥有组合式 API 的 Vue 状态管理库。 pinia 官方文档:https://pinia.vuejs.org/zh/introduction.html 安装 yarn add pinia整合 所有与状态相关的文件都放置于项目 src/store 目录下,方便管理 在…

python-爬虫(可直接使用)

爬虫(Web Scraping)是指通过编程自动化地获取互联网上的信息的过程。爬虫的目的通常是从网页中抓取数据,进行数据分析、处理或展示。以下是爬虫的基本流程和一些重要的概念: 爬虫基本流程: 确定目标: 确定要…

504. 七进制数

这篇文章会收录到 : 算法通关第十三关-青铜挑战数学基础问题-CSDN博客 七进制数 描述 : 给定一个整数 num,将其转化为 7 进制,并以字符串形式输出。 题目 : LeetCode 504. 七进制数 : 504. 七进制数 分析 : 我们先通过二进制想一下7进制数的变化特…

【python+Excel】读取和存储测试数据完成接口自动化测试

http_request2.py用于发起http请求 #读取多条测试用例 #1、导入requests模块 import requests #从 class_12_19.do_excel1导入read_data函数 from do_excel2 import read_data from do_excel2 import write_data from do_excel2 import count_case #定义http请求函数COOKIENon…

云端导览,数字互动 | 拓世法宝AI数字人一体机助力全新旅游时代

《中国旅行消费趋势洞察白皮书(2023版)》显示,消费者旅行习惯已从“到此一游”变为“深度在地”,更强调在旅游中充实自我、学习新知识。 (《中国旅行消费趋势洞察白皮书(2023版》截图) 从这些资…

Agent举例与应用

什么是Agent OpenAI 应用研究主管 Lilian Weng 在一篇长文中提出了 Agent LLM(大型语言模型)记忆规划技能工具使用这一概念,并详细解释了Agent的每个模块的功能。她对Agent未来的应用前景充满信心,但也表明到挑战无处不在。 现…

csapp深入理解计算机系统 bomb lab(1)phase_4

使用 disas phase_4 查看phase_4的汇编代码 按照惯例,查看一下0x4025cf内存单元存放的字符串的值是什么 所以phase_4的输入应该是两个整数。 下面使用先猜想后验证的方法尝试找出两个整数的值,猜想两个整数为1,2,在ans.txt写入1,2&#xff0…