Sourcetrail 代码分析工具的使用
Sourcetrail 概述
Sourcetrail 是一个代码分析工具,它旨在帮助开发人员理解和导航复杂的代码库。它可以创建代码库的可视化图形,显示代码中的类、函数、变量、依赖关系等信息,从而帮助开发人员更好地理解代码结构和关系,降低维护和开发过程中的复杂性。
Sourcetrail 的主要特点包括:
代码可视化: Sourcetrail 通过图形化的方式展示代码库的结构和关系,使开发人员能够更容易地理解和浏览代码。
代码导航: 开发人员可以通过 Sourcetrail 快速导航代码库,跳转到特定的类、函数或变量,并查看其定义、引用和调用。
依赖分析: Sourcetrail 可以帮助识别代码之间的依赖关系,包括类之间的继承关系、函数之间的调用关系等,从而更好地理解代码的运行流程。
多语言支持: Sourcetrail 支持多种编程语言,包括但不限于 C++、Java、Python 等。
实时同步: 当代码发生变化时,Sourcetrail 可以自动检测并同步更新代码库的图形表示,确保图形始终保持最新状态。
搜索功能: Sourcetrail 提供强大的搜索功能,可以快速查找特定的代码元素,例如类、函数、变量等。
插件支持: 开发人员可以通过插件扩展 Sourcetrail 的功能,以满足特定需求。
Sourcetrail 实践
本文以 MariaDB 源代码为例,描述 Sourcetrail 如何结合 compile_commands.json 分析 C/C++ 大型工程的的源代码。
代码编译
编译 MariaDB 源代码,在编译时加入 'CMAKE_EXPORT_COMPILE_COMMANDS' 选项以生成 compile_commands.json 文件。
cmake .. -DCMAKE_BUILD_TYPE=Debug -DWITH_VALGRIND=ON -DWITH_DEBUG=1 \
-DCMAKE_INSTALL_PREFIX=/opt/mariadb \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DWITH_UNIT_TESTS=OFF \
-DWITH_WSREP=OFF -DWITH_MARIABACKUP=OFF -DWITH_ROCKSDB=OFF \
-DPLUGIN_TOKUDB=NO -DPLUGIN_CONNECT=NO -DPLUGIN_SPIDER=NO \
-DPLUGIN_OQGRAPH=NO -DPLUGIN_SPHINX=NO -DPLUGIN_MROONGA=NO \
-DPLUGIN_ROCKSDB=NO
执行上述命令后,会在编译目录下生成一个名为 compile_commands.json 的文件。
创建 Sourcetrail 工程
根据 MariaDB 源代码创建代码分析项目。
- 创建项目

- 指定项目类型

- 选择
compile_commands.json文件的路径

- 创建 MariaDB 代码分析工程后,Sourcetrail 会创建对应的数据库,代码量比较大时,数据库的创建时间会比较长
代码导航示例
查看 MariaDB handler 类的继承关系图
- 在 Sourcetrail 主界面输入 handler,输入回车键

- handler 类的继承关系如下图所示

查看 trx_rseg_t 数据结构与其关联数据结构的关系
- 选择查看 trx_rseg_t 数据结构的信息

- trx_rseg_t 数据结构展示

Sourcetrail 代码分析工具的使用的更多相关文章
- Android代码分析工具lint学习
1 lint简介 1.1 概述 lint是随Android SDK自带的一个静态代码分析工具.它用来对Android工程的源文件进行检查,找出在正确性.安全.性能.可使用性.可访问性及国际化等方面可能 ...
- 常用 Java 静态代码分析工具的分析与比较
常用 Java 静态代码分析工具的分析与比较 简介: 本文首先介绍了静态代码分析的基 本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBu ...
- C++静态代码分析工具推荐——PVS-Studio
长假归来,最近一直没更新,节前本来就想写这篇了,一直到今天才有时间. 关于静态代码分析在维基百科上可以查到很详细的介绍:https://en.wikipedia.org/wiki/List_of_to ...
- 来试试这个来自静态代码分析工具PVS Studio提供C++的小测验吧
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:来试试这个来自静态代码分析工具PVS Studio提供C++的小测验吧.
- Cppcheck 1.54 C/C++静态代码分析工具
Cppcheck是一个C/C++代码分析工具,只检测那些编译器通常无法检测到的bug类型. 官方上建议让编译器提供尽量多的警告提示:1.使用Visual C++的话,应使用警告等级4 2.使用GC ...
- 阅读代码分析工具Understand 2.0试用
Understand 2.0是一款源码阅读分析软件,功能强大.试用过一段时间后,感觉相当不错,确实能够大大提高代码阅读效率. 因为Understand功能十分强大,本文不可能详尽地介绍它的全部功能,所 ...
- [转载] 常用 Java 静态代码分析工具的分析与比较
转载自http://www.oschina.net/question/129540_23043 简介: 本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代 ...
- 【转载】常用 Java 静态代码分析工具的分析与比较
摘自:http://www.oschina.net/question/129540_23043常用 Java 静态代码分析工具的分析与比较 简介: 本文首先介绍了静态代码分析的基本概念及主要技术,随后 ...
- VSS源代码管理器运行代码分析工具的命令
当你发现代码库总是报需要联系管理员运行代码分析工具时,你可以使用命令分析代码库代码解决: To fix the database problems, you can restart the analy ...
- java静态代码分析工具infer
infer是一个静态代码分析工具,探测bugs. 主要支持Java.C/C++ 安装:brew install infer 在线展示:https://codeboard.io/projects/115 ...
随机推荐
- 2022-05-29:为了不断提高用户使用的体验,开发团队正在对产品进行全方位的开发和优化。 已知开发团队共有若干名成员,skills[i] 表示第 i 名开发人员掌握技能列表。 如果两名成员各自拥有
2022-05-29:为了不断提高用户使用的体验,开发团队正在对产品进行全方位的开发和优化. 已知开发团队共有若干名成员,skills[i] 表示第 i 名开发人员掌握技能列表. 如果两名成员各自拥有 ...
- 2021-07-08:股票问题5。给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票)
2021-07-08:股票问题5.给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 .设计一个算法计算出最大利润.在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票) ...
- flex弹性布局模式下文字超出显示省略号
都知道flex弹性布局非常好用,会随分辨率不同,宽高自适,那怎么来设置在一定范围内的文字超出隐藏,显示省略号呢?其实也不难 看如下就是使用flex布局的 其实如上效果也同样离不开如下三句,只是用法不大 ...
- 百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 预测部署简介与总览
百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 预测部署简介与总览 百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 Paddle Infer ...
- 多线程的未捕获异常类 UncaughtExceptionHandler 的使用
一.需要 UncaughtExceptionHandler 的原因 1. 主线程可轻松的发现异常,子线程的异常比较隐蔽,难以发现 程序运行时,子线程发生了异常,并不影响主线程,也不会终止主线程的程序, ...
- Galaxy v-21.01 发布,新的流程和历史栏体验
Galaxy Project(https://galaxyproject.org/)是在云计算背景下诞生的一个生物信息学可视化分析开源项目. 该项目由美国国家科学基金会(NSF).美国国家人类基因组研 ...
- Galaxy 平台下 LEfSe 安装与使用教程
LEfSe (Linear discriminant analysis Effect Size) 是一种用于发现和解释高维度数据生物标识(基因.通路和分类单元等)的分析工具,可以进行两个或多个分组的比 ...
- 文盘Rust -- tokio绑定cpu实践
tokio 是 rust 生态中流行的异步运行时框架.在实际生产中我们如果希望 tokio 应用程序与特定的 cpu core 绑定该怎么处理呢?这次我们来聊聊这个话题. 首先我们先写一段简单的多任务 ...
- CVE-2021-41773 apache路径遍历
来自tryhackeme的漏洞复现 CVE-2021-41773/42013 利用:路径遍历利用将允许服务器公开任意文件 需要启用mod_cgi模块才能获得远程代码执行 2021 年 10 月 5 日 ...
- RALB负载均衡算法的应用
一.背景 搜索推荐算法架构为京东集团所有的搜索推荐业务提供服务,实时返回处理结果给上游.部门各子系统已经实现了基于CPU的自适应限流,但是Client端对Server端的调用依然是RR轮询的方式,没有 ...