Scitools Understand

拿到一个陌生的项目想要快速知道程序的控制流和数据流,对程序进行一个全局性的理解,代码分析工具scitools understand就能满足上述需求。掌握这个工具也可以验证代码实现逻辑,尤其对于大型项目,变得非常有用。

官网:https://scitools.com/

关系图说明1

  1. Butterfly:如果两个实体间存在关系,就显示这两个实体间的调用和被调用关系
  2. Calls:展示从你选择的这个方法开始的整个调用链条
  3. Called By:展示了这个实体被哪些代码调用,这个结构图是从底部向上看或者从右到左看
  4. Calls Relationship/Calledby Relationship:展示了两个实体之间的调用和被调用关系,操作方法:首先右键你要选择的第一个实体,然后点击另一个你要选择的实体,如果选择错误,可以再次点击其他正确即可,然后点击ok
  5. Contains:展示一个实体中的层级图,也可以是一个文件,一条连接线读作”x includes y“
  6. Extended By:展示这个类被哪些类所继承
  7. Extends:展示这个类继承自那个类
  8. Control Flow:展示函数内部执行流程
  9. Cluster Control Flow:展示一个实体的流程图或者类似实体类型,这个比上一个更具有交互性
  10. UML Class Diagram:展示这个项目中或者一个文件中定义的类以及与这个类关联的类
  11. UML Sequence Diagram:展示两个实体之间的时序关系图

自动代码格式注释

doxygen可以查看函数调用图,按照特定格式注释,还能得到说明文档。详细操作及介绍参考博客2介绍。开源项目《算法导论》中算法的C++实现也在使用该工具添加注释。

静态代码分析

PC-lint是一种静态代码检测工具,可以查出许多逻辑错误,对于检查代码bug,早期排错很有用,但不免费。另一款开源软件TscanCode,使用简单,支持C++、Lua、C#,也是博主偏爱的。


  1. http://codemx.cn/2016/04/30/Understand01/index.html ↩︎

  2. https://blog.csdn.net/benkaoya/article/details/79763668 ↩︎