understand软件使⽤教程
源代码阅读⼯具(Scientific Toolworks Understand)的特⾊
1、⽀持多语⾔:Ada, C, C++, C#, Java, FORTRAN, Delphi, Jovial, and PL/M ,混合语⾔的project也⽀持
2、多平台: Windows/Linux/Solaris/HP-UX/IRIX/MAC OS X
狼作文
3、代码语法⾼亮、代码折迭、交叉跳转、书签等基本阅读功能。
4、可以对整个project的architecture、metrics进⾏分析并输出报表。
5、可以对代码⽣成多种图(butterfly graph、call graph、called by graph、control flow graph、UML class graph等),在图上点击节点可以跳转到对应的源代码位置。
青钱柳叶的功效
6、提供Perl API便于扩展。作图全部是⽤Perl插件实现的,直接读取分析好的数据库作图。
7、内置的⽬录和⽂件⽐较器。
8、⽀持project的snapshot,并能和⾃家的TrackBack集成便于监视project的变化。
软件说明
功能⽐sourceinsight多些(⽐如enum的值的显⽰),⽽且#ifdef包含的⽐较多嵌套,sourceinsight如果太多嵌套,有bug. 流程图之类也⽐sourceinsight完整.sourceinsight的显⽰明显好多了,⽽且体积⽐较⼩,编辑速度快,可能是⽤熟的关系,还是sourceinsight⽐较顺⼿.
可惜sourceinsight太长时间没有更新了. 现在我⼀般⽤sourceinsight,需要看某些SI没有的⽤understand.另外好像两个软件都不太⽀持#if (defined(MACRO) || defined(MACRO1))这样的解析.
导⼊项⽬
导⼊项⽬有两种⽅法,⼀种是从菜单栏点击File–>New–>Project,另⼀种是点击下⾯界⾯中间的New Project
点击后,会进⼊到如下界⾯,你可以更改项⽬名称为你要导⼊的项⽬名称,以便于以后查找,你可以直接导⼊你正在开发的项⽬,你的代码更改后,这个项⽬也会⾃动更新,⽅便你快速开发,不需要每次导⼊。
更改名称后点击Next进⼊如下界⾯,这个界⾯是让你选择你要导⼊项⽬包含了哪⼏种语⾔,注意,在C/C++后⾯有两种模式,下⾯有注释,其中Strict模式包含Object-C和Object—C++,还有Web的注释,
⾃⼰看看就好了,在此就不再解释,
然后点击Next进⼊下⾯界⾯:
在此界⾯点击上⾯的“Add a Directory”,也就是添加你要导⼊项⽬的路径,点击后会弹出如下界⾯,此时有个奇葩就是弹出的界⾯会被上图界⾯遮挡,此时你要移开该界⾯,然后会出现下⾯界⾯:
点击后⾯的带有三个点的按钮选择你要加⼊的项⽬⽂件夹,此处不⽤打开⽂件夹,只要点中⽂件夹点击open按钮:
此时只需要点击OK即可,界⾯会跳转到如下界⾯:火龙果酱
此时有两个选项,⼀个是⽴即分析代码,⼀个选择配置,对于我们来说只需要默认即可,然后点击OK按钮,此时软件开始分析代码,分析完成后会出现如下界⾯:
左侧会出你的项⽬结构,中间出现你项⽬的名称,此时你可以操作左⾯项⽬来查看相关代码,如下图所⽰:
这么多类和⽅法如何快速定位,那肯定是搜索,该软件针对不同位置,不同属性有不同的搜索⽅法,下⾯介绍搜索功能。
羊排的家常做法搜索功能
1.左侧项⽬结构中搜索:在这个搜索中你可以快速搜索你要查看的类,快捷键,⿏标点击左侧上⾯项⽬结构窗⼝,然后按command + F键会出现如下图所⽰的搜索框,在框中输⼊你想要的类回车即可
2.类中⽅法搜索:将⿏标定位到右侧代码中,点击command + F,会弹出搜索框,输⼊⽅法回车即可:
3.在⽂件中搜索:也就是全局搜索,快捷键F5或者去上⾯菜单栏中的arch栏中查找,输⼊你想要的类或者⽅法,回车查找,下⾯会列出所有使⽤的地⽅:
4.实体类查找:软件菜单栏arch中最后⼀项–Find Entity,点击输⼊你要查找的实体类,回车查找:
快速搜索是软件快速使⽤必备的技能,包括我们常⽤的idea⼀样,快速定位类,⽅法,常量等,可以快速帮助我们解决问题。
上⾯我介绍改软件时提到可以绘制流程图等功能,下⾯就针对这个功能介绍⼀些⼀些图形的绘制功能,帮助你快速分析代码。
项⽬视图
项⽬视图包含很多的功能,能够⾃动⽣成各种流程图结构图,帮助你快速理清代码逻辑、结构等,以便快速理解项⽬流程,快速开发,视图查看⽅式有两种,⼀种是⿏标点击你要查看的类或者⽅法等上⾯,然后右键弹出菜单,⿏标移动到Graphical Views,然后弹出⼆级菜单,如下图所⽰:
另⼀种⽅式是点击要查看的类或者⽅法,然后找到代码上⾯菜单栏中的如下图标:
然后点击图标右下⾓的下拉箭头,弹出如下菜单,即可选择查看相关视图:
层级关系视图分类:
1.Butterfly:如果两个实体间存在关系,就显⽰这两个实体间的调⽤和被调⽤关系;如下图为Activity中的⼀个⽅法的关系图:
2.Calls:展⽰从你选择的这个⽅法开始的整个调⽤链条;
3.Called By:展⽰了这个实体被哪些代码调⽤,这个结构图是从底部向上看或者从右到左看;
4.Calls Relationship/Calledby Relationship:展⽰了两个实体之间的调⽤和被调⽤关系,操作⽅法:⾸先右键你要选择的第⼀个实体,然后点击另⼀个你要选择的实体,如果选择错误,可以再次点击其他正确即可,然后点击ok;
5.Contains:展⽰⼀个实体中的层级图,也可以是⼀个⽂件,⼀条连接线读作”x includes y“;
6.Extended By:展⽰这个类被哪些类所继承,
7.Extends:展⽰这个类继承⾃那个类:
结构关系视图分类:
1.Graph Architecture:展⽰⼀个框架节点的结构关系;
2.Declaration:展⽰⼀个实体的结构关系,例如:展⽰参数,则返回类型和被调⽤函数,对于类,则展⽰私有成员变量(谁继承这个类,谁基于这个类)
3.Parent Declaration:展⽰这个实体在哪⾥被声明了的结构关系;
4.Declaration File:展⽰所选的⽂件中所有被定义的实体(例如函数,类型,变量,常量等);
5.Declaration Type:展⽰组成类型;
6.Class Declaration:展⽰定义类和⽗类的成员变量;
7.Data Members:展⽰类或者⽅法的组成,或者包含的类型;
8.Control Flow:展⽰⼀个实体的控制流程图或者类似实体类型;
9.Cluster Control Flow:展⽰⼀个实体的流程图或者类似实体类型,这个⽐上⼀个更具有交互性;
10.UML Class Diagram:展⽰这个项⽬中或者⼀个⽂件中定义的类以及与这个类关联的类
11.UML Sequence Diagram:展⽰两个实体之间的时序关系图;
12.Package:展⽰给定包名中声明的所有实体
13.Task:展⽰⼀个任务中的参数,调⽤,实体
课外读书笔记14.Rename Declaration:展⽰实体中被重命名的所有实体
由于视图⽐较多,所以就⼀⼀贴上代码,主要还是需要⾃⼰去调试,查看各个功能视图的展⽰结构以及作⽤,孰能⽣巧,多操作⼏下就会了,所以不再做过多的解释。最终希望这款软件能够帮助你快速开发,快速阅读别⼈的或者⾃⼰的代码。
⼀、术语 Terminology
Architecture 层级:
An architecture is a hierarchical aggregation of source code units (entities). An architecture can be ur created or automatically
generated. Architectures need not be complete (that is, an architecture’s flattened expansion need not reference every source entity in the databa), nor unique (that is, an architecture’s flattened expansion need not maintain the t property).
层级表⽰代码单元(或者实体)组成的层次结构,可以由⽤户⼿动创建,也可由本
软件⾃动⽣成。⼀个层级可以不完整(例如⼀个层级的扁平化扩展有可能不会关联中的所
有代码实体),也可能不唯⼀(扁平化扩展的层级可能不会处理其预设属性)。
Databa 数据库
The databa is where the results of the source code analysis, as well as project ttings, are stored. By default, this is a project’s “.udb”
file.
芭堤雅海滩
代码经分析后产⽣的中间结果,以及⼯程设置保存在数据库,其缺省扩展名为“.udb”。
Entity 实体
An Understand “entity” is anything it has information about. In practice this means anything declared or ud in your source code and the files that contain the project. Subroutines, variables, and source files are all examples of entities.
Understand 描述的“实体”表⽰任何包含信息的事物,具体来说,代码中声明或
者使⽤的标识、包含⼯程的⽂件、⼦程序、变量、源⽂件都可以被称为实体。
Project ⼯程
The t of source code you have analyzed and the ttings and parameters chon. A “project file” contains the list of source files and the project ttings.
表⽰源代码的集合以及相关的配置和参数,⼯程⽂件包含源⽂件清单和⼯程设置。
Relationship 关联
A particular way that entities relate to one another. The names of relationships come from the syntax and mantics of a programming
language. For instance, subroutine entities can have “Call” relationships and “CalledBy” relationships.
互作⽤的实体之间的关系,关联的名称来源于编程语⾔的语法和语义,例如过程式实体具有“调⽤”和“被调⽤”的关联对象。
Script 脚本
Generally a Perl script. The can be run from within Understand’s GUI, or externally via the “uperl” command. The Understand Perl API provides easy and direct access to all information stored in an Understand databa.
通常指perl脚本,脚本可以通过Understand 2.5的图形⽤户界⾯或者外部的脚本命令执⾏。Understand Perl API提供了快捷的访问Understand数据库所有信息的接⼝。
parts 部件
下⾯的图形展⽰了⼀些Understand 图形⽤户界⾯(GUI) 中常⽤的部件:
常⽤词汇
单词释义
Macros宏
Variables变量
Constants常量
Functions函数
Reference引⽤
Metrics参数
Architectures架构
parameters参数
Call调⽤
Compiler编译器
component组件、部件、元件
portability可移植性
Cluster集群
Function Static Variables静态函数变量
医院假条
辅警个人总结ca nsitive区分⼤⼩写
单词释义
Whole Words Only整词匹配
layout布局
summary综述、总论
features特征
control-flow graphs控制流程图
以下介绍了右键菜单包含的典型的编辑操作(与点击对象有关):
Project Configuration
Entity Filter窗⼝