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 ...
随机推荐
- uni-app 真机运行
运行-运行到手机或模拟器 注意事项: 1.真机运行时需要开启开发者选项中的USB调试和USB安装,否则app无法通过USB安装到手机或平板中. 2.模拟器功能有,单模拟机没有,需要自己安装,然后开放端 ...
- Nacos必知必会:这些知识点你一定要掌握!
前言 Nacos 是一个开源的服务发现.配置管理和服务治理平台,是阿里巴巴开源的一款产品. Nacos 可以帮助开发者更好地管理微服务架构中的服务注册.配置和发现等问题,提高系统的可靠性和可维护性. ...
- Springboot——参数校验
springboot参数校验注解 在controller层需要对前端传来的参数进行校验 校验简单数据类型 使用springboot自带的validation工具可以从后端对前端传来的数据进行校验 使用 ...
- 使用C语言实现简单的通用的链表
在数据结构中,我们已经学习到了简单的静态链表以及单链表和双链表,它们各有优缺点,但是有个共同的问题是他们呢无法存储不同的数据.下面提供了一种方法,可以将不同节点的数据链接起来. 下面的代码都是基础的C ...
- Hive执行计划之什么是hiveSQL向量化模式及优化详解
Hive开启向量化模式也是hiveSQL优化方法中的一种,可以提升hive查询速率,也叫hive矢量化. 问题1:那么什么是hive向量化模式呢? 问题2:hive向量化什么情况下可以被使用,或者说它 ...
- Handler机制实现原理总结
Handler一般用于线程间通信,如常用的子线程使用handler让主线程更新UI.那么这是怎么实现的呢? 我们先把这个大问题分解成多个小问题: post();postDelayed();sendMe ...
- 区块链的Token机制如何理解?
区块链的Token机制如何理解? 为了更好的理解区块链和Token的关系,今天专门基于互联网中的内容,做了下筛选过滤,从而可以让大家更好的理解,对于Token,如果是从事过开发的同学来说,比如容易理解 ...
- 逍遥自在学C语言 | 指针和数组的关联
前言 指针和数组之间存在着紧密的关系.在本文中,我们将探讨指针和数组的关系.指针算术和数组遍历.多维数组与指针以及指针数组和数组指针. 一.人物简介 第一位闪亮登场,有请今后会一直教我们C语言的老师 ...
- 全志G2D实现屏幕旋转,开机logo实现手动旋转。
产品设计出来之后啊,大家使用的时候觉得反过来使用更加便捷.但是屏幕显示是反的.那怎么办那????? 修改硬件费时费工,那能否软件实现那????? 如果纯软件使用那就太费系统资源了.于是就想到了使用全志 ...
- 【论文阅读】Learning Deep Features for Discriminative Localization
这个是周博磊16年的文章.文章通过实验证明,即使没有位置标注,CNN仍是可以得到一些位置信息,(文章中的显著性图) CNN提取的feature含有位置信息,尽管我们在训练的时候并没有标记位置信息: 这 ...