之前用Windows系统,一直用source insight查看代码非常方便,但是年前换到mac下面,虽说很多东西都方便了,但是却没有了静态代码分析工具,很幸运,前段时间找到一款比source insight软件还强大的代码静态分析工具,堪称神器–Understand。这款软件具有强大的代码静态分析功能,并且可以绘制各种流程图,不幸的是没有发现Windows版本,只看到mac版和Linux版本,因此用Windows系统的朋友抱歉了。

因为工作太忙,还没有时间详细的研究一下使用方法,只是简单的了解了一下,由于该软件可以帮助你快速的分析代码结构流程,因此我提前分享给大家,希望和大家一起研究,共同学习,下面我针对这个软件做个初步讲解,后续会出详细讲解,由于软件是全英文的所以有问题的地方望大家指出,我会及时更正。

由于安装很简单,在此就不说了,直接进入工程配置讲解。

导入项目

导入项目有两种方法,一种是从菜单栏点击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或者去上面菜单栏中的search栏中查找,输入你想要的类或者方法,回车查找,下面会列出所有使用的地方:

4、实体类查找:软件菜单栏search中最后一项–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:展示实体中被重命名的所有实体

由于视图比较多,所以就一一贴上代码,主要还是需要自己去调试,查看各个功能视图的展示结构以及作用,孰能生巧,多操作几下就会了,所以不再做过多的解释。最终希望这款软件能够帮助你快速开发,快速阅读别人的或者自己的代码。

Understand:高效代码静态分析神器详解相关推荐

  1. Understand:高效代码静态分析神器详解(一)

    之前用Windows系统,一直用source insight查看代码非常方便,但是年前换到mac下面,虽说很多东西都方便了,但是却没有了静态代码分析工具,很幸运,前段时间找到一款比source ins ...

  2. iVX低代码平台系列详解 -- 概述篇(二)

    写在前面 ivx动手尝试电梯:ivx在线编辑器 iVX系列教程持续更新中 上篇文章可看:iVX低代码平台系列详解 – 概述篇(一) ivx目录 写在前面 一.iVX优势 1.快速学习 2.快速开发 3 ...

  3. java 注释 超链接_java_Java代码注释规范详解,代码附有注释对程序开发者来 - phpStudy...

    Java代码注释规范详解 代码附有注释对程序开发者来说非常重要,随着技术的发展,在项目开发过程中,必须要求程序员写好代码注释,这样有利于代码后续的编写和使用. 基本的要求: 1.注释形式统一 在整个应 ...

  4. php调用C代码的方法详解和zend_parse_parameters函数详解

    来源:http://my.oschina.net/Customs/blog/490873 http://blog.csdn.net/super_ufo/article/details/3863731 ...

  5. c调用python脚本如何获取结果_使用C++调用Python代码的方法详解

    一.配置python环境问题 1.首先安装Python(版本无所谓),安装的时候选的添加python路径到环境变量中 安装之后的文件夹如下所示: 2.在VS中配置环境和库 右击项目->属性-&g ...

  6. Tomcat 项目代码上线步骤详解

    Tomcat 项目代码上线步骤详解 1.上线内容(JSP代码,图片,包文件(jar|war|ear)) 2.上线内容来源 a.开发人员提供(邮件形式).tar.gz 压缩包(包文件开发负责编译 编译命 ...

  7. python交互式和文件式区别_Python 运行.py文件和交互式运行代码的区别详解

    代码版本:3.6.3 1. 交互式运行代码会直接给出表达式的结果,运行代码文件必须print才能在控制台看到结果. 直接给出结果: 没有print是看不到结果的: 有print才能看到结果: 另:交互 ...

  8. 史上最详细的Pytorch版yolov3代码中文注释详解(四)

    史上最详细的Pytorch版yolov3代码中文注释详解(一):https://blog.csdn.net/qq_34199326/article/details/84072505 史上最详细的Pyt ...

  9. Matlab中的FCM算法代码及中文详解

    Matlab中的FCM算法代码及中文详解 转自:http://xiaozu.renren.com/xiaozu/106512/336681453 function [center, U, obj_fc ...

最新文章

  1. make things simple
  2. Algorithms_基础数据结构(03)_线性表之链表_双向链表
  3. 【GAN优化】详解对偶与WGAN
  4. 五种最易被老板开除的人
  5. 未来的地下世界?《明日之后》打造专属半感染者的“未来都市”
  6. 为什么需要实现幂等性?
  7. Mysql安装问题汇总
  8. OSGi:进入微服务架构的门户
  9. 这本书人手一本,杠精能少97%?
  10. 苹果ios15.4RC版发布:新增口罩面容解锁功能
  11. secucrecrt配置文件导入和保存
  12. python 计算流形上两点之间的测地距离
  13. RHEL 6.3 KVM 虚拟机安装配置管理
  14. 有道网页翻译chrome插件---我用过的最好的翻译插件
  15. Url短连接实现原理与方法
  16. mipad1小米平板1刷LOS神盾系统16睡死问题排查(一)
  17. jenkins从节点linux安装,linux Jenkins配置salve节点实现过程图解
  18. 【小程序】小程序多次扫描不同二维码参数不生效问题
  19. 素数和(5分) 题目内容: 我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。 现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的
  20. 反驳《3G门户的危机将来临》中的观点

热门文章

  1. 【小程序】蓝牙锁——AES128加解密 十六进制加解密
  2. WPF 控件【L】ListView(一) ListView如何实现单行SelectedItem或多行SelectedItems的绑定
  3. 2021年国考计算机网络原理,2021年公务员考试行测练习:文章阅读(135)
  4. CH579M构建环境
  5. 保留状态的秘密 - 深入了解Java备忘录模式(Memento Pattern)
  6. OpenStack QoS介绍
  7. 移远EC20 呼叫转移功能关闭
  8. python pdb 安装_入门 Python 调试器 pdb
  9. latex:用minipage并排放置两个表格、两个图片
  10. fatfs文件系统详解之f_write函数分析