代码分析神器

我们在分析工程源码时,会分析各种函数的调用关系,如果是单向的还好,比如:A调用B,B调用C,C调用D和E,这种逻辑非常容易梳理。

但实际中更常见的是,我们要分析 Linux 或者 Andorid 源码,或者一些开源第三方库的源码。这种源码代码量非常庞大,函数调用关系也很复杂,比如:A调用B和C,同时获取C的返回值进行回调,B调用D和E并且将返回值返回给A。如果想梳理这种关系单靠自己是比较难的,所以使用协助分析软件是必须的。

今天为大家介绍两款代码分析工具:bouml、understand。

bouml 在4.23版本之前是免费的,但是有一定bug,比如:有一个箭头指向调用,你删了,后来发现删错了,再次建立会发现建立不起来。如果工作用,可以购买正版。

bouml支持C++、Java、Idl、Php、Python、MySQL。主要用来分析面向对象语言对于类的继承关系和函数调用关系。

understand 软件,没有免费版本,但 CSDN 有蛮多注册机可以下载。支持 C、C++、C#、Ada、Java、Fortran、Delphi、Jovial等。对我们嵌入式工程师来说,知道它可以用来分析 C 语言函数调用关系即可。

bouml 软件和教程在公众号后台回复【code】即可领取。

软件使用教程大家在CSND和博客园找找就行,有很多。

bouml示例

官网:https://www.bouml.fr/

参考文档:https://www.bouml.fr/documentation.html

时序图和函数调用关系图。

其中时序图可以很好的表现每个函数的生命周期,我在很多技术文档都见过时序图。

bouml 是用 UML 生成调用关系的其中一个软件,还有很多其他付费 UML 软件,功能更加强大。

understand示例

官网:https://www.scitools.com/

·················· END ··················

本文分享自微信公众号 - 嵌入式Linux系统开发(Jason_Linux_),作者:Jasonangel

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-08-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 推荐:Mac下高效静态代码分析神器Unstand详解

    用户1130025
  • 无需写代码的高颜值富集分析神器

    富集分析是了解一个基因集功能倾向性的一个方式,在组学研究领域应用广泛。常见的有基于差异基因的Over-representation分析,也就是常说的GO、KEG...

    生信宝典
  • IDEA EasyCode(代码神器)

    entity,controller,service,dao,mapper,无需任何编码,简单而强大。

    逆锋起笔
  • 无需写代码!谷歌推出机器学习模型分析神器,代号What-If

    今天,谷歌推出了已开源的TensorFlow可视化工具TensorBoard中一项新功能:What-If Tool,用户可在不编写程序代码的情况下分析机器学习(...

    量子位
  • Java分析神器 - Arthas

    Arthas 支持 JDK 6+,支持 Linux、Mac、Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和...

    YP小站
  • go-zero微服务框架代码生成神器goctl原理分析(一)

    推荐下go-zero 微服务框架,也是最近很火很有人气的框架,致力于打造国内最简单好用的框架。

    杨永贞
  • Java代码简化神器-Lombok

      前段时间在开源社区中发现了一个比较牛逼的简化Java代码的神器-Lombok,接着自己写了demo进行测试和练习,感觉真的很不错,特此分享给需要的小伙伴们~

    阿豪聊干货
  • idea代码简化神器:Lombok

    相信大家都有这样的经历,编写完一个实体类后,为这个实体类的每个属性添加setter和getter,当给类增加一个属性时,又要去给这个属性添加sett...

    小诸葛
  • python代码调试神器PySnooper

    | 导语 最近在github上冒出了一个python的debug神器PySnooper,号称在debug时可以消灭print。那么该工具有哪些优点呢,如何使用该...

    小草AI
  • CRF++代码分析

    用户1908973
  • thrift/swift:ThriftMethodProcessor代码分析

    thrift是一种跨语言的RPC框架,为了保证在各种语言下都能正确表述,IDL语言在设计的时候就只能选取各种语言的共性。 比如对于null,虽然在java中...

    用户1148648
  • JavaScript 代码分析

    #div1 {width:100px; height:100px; background:red;  position:absolute; }

    三杯水Plus
  • Ogitor代码分析

    逍遥剑客
  • JDK1.8源码分析之HashMap & LinkedHashMap迭代器

    在遍历HashMap与LinkedHashMap时,我们通常都会使用到迭代器,而HashMap的迭代器与LinkedHashMap迭代器是如何工作的呢?下面我们...

    九州暮云
  • pyenv 神器原理分析

    一个传统的方案是每个版本的 Python 可执行文件使用不同的名字,如 python、python2.6、python3。

    Coder Sam
  • 组学分析神器:cBioPortal

    cBioPortal网站目前存储DNA拷贝数数据(每个基因的假定,离散值,例如“深度缺失”或“扩增”,以及log2水平),mRNA和microRNA表达数据,非...

    芒果先生聊生信
  • Linux IO分析小神器

    分析Linux服务器 IO 进程,分别按 读 和 写 的进程排序,默认显示前5行。功能类似 Linux Shell pidstat命令。

    YP小站
  • Redis 内存分析神器

    RDR 是解析 redis rdbfile 工具。与redis-rdb-tools相比,RDR 是由golang 实现的,速度更快(5GB rdbfile 在我...

    YP小站
  • lombok让你提高代码整洁度的神器附教程及原理分析

    在Java编程的过程中,我们在Code Entity的时候通常使用 IDE的generator来生成 get set toSting equals hashco...

    Albert陈凯

扫码关注云+社区

领取腾讯云代金券