一、概述

  • Understand是一个用来进行静态的软件分析、软件度量、软件可视化的工具。

二、软件使用

1、安装

安装的是Understand 5.1,安装及另起可用网上很多资源。

2、新建工程

testbed静态分析使用方法 静态分析用什么工具_实体类型

  • 创建工程名称、路径
  • 选择语言,注意,在C/C++后面有两种模式,下面有注释,其中Strict模式包含Object-C和Object—C++
  • 添加代码文件夹路径


    工程创建完毕

3、查询功能

1、常规搜索Ctrl+F

testbed静态分析使用方法 静态分析用什么工具_testbed静态分析使用方法_02


2、全局搜索,快捷键F5或者去上面菜单栏中的search栏中查找

testbed静态分析使用方法 静态分析用什么工具_流程图_03

4、项目视图

  • 项目视图能够自动生成各种流程图结构图,帮助理清代码逻辑、结构等,以便快速理解项目流程,快速开发。鼠标右键Graphical Views。
    1、Butterfly:如果两个实体间存在关系,就显示这两个实体间的调用和被调用关系;


    2、Calls:展示从你选择的这个方法开始的整个调用链条

    3、Called By:展示了这个实体被哪些代码调用,这个结构图是从底部向上看或者从右到左看;

    4、Calls Relationship/Calledby Relationship:展示了两个实体之间的调用和被调用关系,操作方法:首先右键你要选择的第一个实体,然后点击另一个你要选择的实体,如果选择错误,可以再次点击其他正确即可,然后点击ok;

    5、Control Flow:展示一个实体的控制流程图或者类似实体类型;

    6、Cluster Control Flow:展示一个实体的流程图或者类似实体类型,这个比上一个更具有交互性;

7、Declaration:展示一个实体的结构关系,例如:展示参数,则返回类型和被调用函数,对于类,则展示私有成员变量(谁继承这个类,谁基于这个类);

8、Declaration File:展示所选的文件中所有被定义的实体(例如函数,类型,变量,常量等);

9、UML Class Diagram:展示这个项目中或者一个文件中定义的类以及与这个类关联的类;

testbed静态分析使用方法 静态分析用什么工具_实体类型_04

三、静态代码检测

  • 个人感觉能检查出来一部分不规则的代码,不能全相信检测结果。


    之后可以按照.c文件逐个警告查看,个人感觉并不是全部的规则都需要修改,能够检测出一些函数没有返回值、函数定义与声明不一致、缺少参数、参数未用等情况。