Understand 2.0是一款源代码阅读分析软件,功能强大。试用过一段时间后,感觉相当不错,确实可以大大提高代码阅读效率。由于Understand功能十分强大,本文不可能详尽地介绍它的所有功能,所以只列举本人认为比较重要或有特色的功能,以做抛砖引玉之举。

Understand 2.0可以从http://www.scitools.com/下载到,安装后可以试用15天。

使用Understand阅读代码前,要先创建一个Project,然后把所有的源代码文件加入到这个Project里。这里我创建了一个ATLSTL的Project,然后把Microsoft Visual Studio 2008带的ATL、STL、MFC的源代码加入其中。需要说明的是,Understand支持很多种源代码,包括C#,而不光是C++代码。

这是整个用户界面的概览,可以看到和Visual Studio的风格很相似。所有了子窗口都可以任意停靠或折迭。

下面逐个介绍Understand的特性。

一,强大的自动绘图能力。

Understand可以生成许多种有用的图形,如类关系图、函数调用关系图、头文件包括关系等。下面是CFile的类图。

当然,如果愿意,你可以生成CObject派生的整个MFC的类图(http://p.blog.csdn.net/images/p_blog_csdn_net/qwang24/EntryImages/20090411/ButterflyGraph-CObject.png)。这种图以前只能在MSDN里可以见到,现在可以在瞬间自动生成,很酷!

还可以显示函数的调用关系:

以及头文件的包括关系:

二,出色的增量搜索功能

增量搜索也许不是新概念,在Visual Studio里早就有。但是Understand里的增量搜索具有动态代码加亮的功能。也就是说,可以把选中的标识符的所有实例,都以醒目的颜色显示出来,对于阅读代码时,非常有帮助。如下图,对函数参数pFileTime执行增量搜索,则它出现的过地方都会被标示出来。这样,这个参数是如何被使用的,一目了然。

三,丰富的标识符信息

Understand的代码信息数据库十分完善,所有的标识符可以分类显示。每一类标识符又具有不同的信息。如关于函数的信息,可以显示定义它的文件名,返回值类型,参数信息,调用函数,被调用函数,引用这个函数的信息,代码量等。其中,引用信息里会有引用类型,如申明、调用、定义等,非常实用。

而对于变量信息,而以显示变量在哪里定义的,是设置变量的值还是使用变量的值等。

四,方便的搜索功能

很多窗口都有方便的搜索功能,便于快速定位需要的信息。如项目浏览器里,可以输入文件名,快速找到相关的文件。

Understand还有很多其他强大的功能,如报表功能,代码编辑,代码变化跟踪等。

当然,和其他所有的代码分析工具软件一样,Understand也有一些不足之处,如有时候会解析错误,不支持COM代码的Attribute扩展,对机器配置要求较高,对正则表达式的支持不完善等。

备注:

解决不能正确解析COM的Attribute扩展问题: 搜索正则表达式: /]/s*$ , 替换为 /]; (使用Visual Studio的在多个文件中替换功能,不能直接使用Unserstand替换。)

解决不能正确解析__interface关键字问题: 在project选项里增加宏定义,把__interface定义为struct。

代码阅读分析工具Understand 2.0试用的更多相关文章

  1. 阅读代码分析工具Understand 2.0试用

    Understand 2.0是一款源码阅读分析软件,功能强大.试用过一段时间后,感觉相当不错,确实能够大大提高代码阅读效率. 因为Understand功能十分强大,本文不可能详尽地介绍它的全部功能,所 ...

  2. 11个Visual Studio代码性能分析工具

    软件开发中的性能优化对程序员来说是一个非常重要的问题.一个小问题可能成为一个大的系统的瓶颈.但是对于程序员来说,通过自身去优化代码是十分困难的.幸运的是,有一些非常棒的工具可以帮助程序员进行代码分析和 ...

  3. 一个适合.NET Core的代码安全分析工具 - Security Code Scan

    本文主要翻译自Security Code Scan的官方Github文档,结合自己的初步使用简单介绍一下这款工具,大家可以结合自己团队的情况参考使用.此外,对.NET Core开发团队来说,可以参考张 ...

  4. .NET 11 个 Visual Studio 代码性能分析工具

    原文地址 软件开发中的性能优化对程序员来说是一个非常重要的问题.一个小问题可能成为一个大的系统的瓶颈.但是对于程序员来说,通过自身去优化代码是十分困难的.幸运的是,有一些非常棒的工具可以帮助程序员进行 ...

  5. NET Core的代码安全分析工具 - Security Code Scan

    NET Core的代码安全分析工具 - Security Code Scan https://www.cnblogs.com/edisonchou/p/edc_security_code_scan_s ...

  6. 11 个 Visual Studio 代码性能分析工具

    软件开发中的性能优化对程序员来说是一个非常重要的问题.一个小问题可能成为一个大的系统的瓶颈.但是对于程序员来说,通过自身去优化代码是十分困难的.幸运的是,有一些非常棒的工具可以帮助程序员进行代码分析和 ...

  7. .NET : 使用代码性能分析工具

    NET : CLR Profiler的使用 经常讲课的时候会提到值类型和引用类型,也会提到如何查看它们的大小.多次被朋友问到,如何真的想要知道到底每个方法分配了多少内存之类的问题,其实这可以通过CLR ...

  8. [python]Python代码安全分析工具(Bandit)

    简介: Bandit是一款Python源码分析框架,可用于Python代码的安全性分析.Bandit使用标准库中的ast模块,将Python源码解析成Python语法节点构成的树.Bandit允许用户 ...

  9. Tools - 源代码阅读分析工具Source Insight

    简介 https://www.sourceinsight.com/ Source Insight是一个面向项目开发的程序编辑器和代码浏览器,可以分析C/C++.C#.Java.Python等语言源代码 ...

随机推荐

  1. AdminLTE 2 开源模版

    AdminLTE  2 开源模版: 1. 文档  https://almsaeedstudio.com/themes/AdminLTE/documentation/index.html 2. 代码   ...

  2. jstl fortokens 分割字符串

    forTokens标签: forTokens标签用来截取字符串: 属性: * var :定义变量 * items :切分字符串 * begin :从哪开始 * end :到哪结束 * step :步长 ...

  3. aes加密C语言

    /** * \file aes.h * * \brief AES block cipher * * Copyright (C) 2006-2010, Brainspark B.V. * * This ...

  4. C#中(double)str;与Convert.ToDouble(str);有什么区别

    1. string str = "32323";2. double a = (double)str ;3. double a = Convert.ToDouble(str); 第3 ...

  5. HTTP TCP UDP Socket 关系的几个经典图

      从上图可以看到,TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层. 在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议. 在传输层中有TCP协议与UDP协议. ...

  6. 如何使用Android JetPlayer类

    在Android中,还提供了对Jet播放的支持,Jet是由OHA联盟成员SONiVOX开发的一个交互音乐引擎.其包括两部分:JET播放器和JET引擎.JET常用于控制游戏的声音特效,采用MIDI(Mu ...

  7. CLR VIA C# 学习笔记

    第19章 可空类型 1)使用Nullable<T>可将int32的值类型设置为Null,CLR会在Null时默认赋值为0; 如:Nullable<T> x=null; //使用 ...

  8. [转载]Grunt插件之LiveReload 实现页面自动刷新,所见即所得编辑

    配置文件下载  http://vdisk.weibo.com/s/DOlfks4wpIj LiveReload安装前的准备工作: 安装Node.js和Grunt,如果第一次接触,可以参考:Window ...

  9. asp.net 数据绑定 -- 时间格式

    <asp:TemplateField HeaderText="日期" SortExpression="Date">                & ...

  10. CentOS7下安装chrome浏览器

    在CentOS 7环境下安装chrome浏览器 1.修改yum源 在/etc/yum.repos.d/目录下新建文件google-chrome.repo,向其中添加如下内容: [google-chro ...