Sourcetail 一款代码编辑神器,让看源码如丝般顺滑

大家好,我是小麦,上一次的文章《一个超级实用的源码阅读小技巧》,我简单提到通过gcc+egypt+graphviz(dot)这三个工具,快速生成函数调用图,总体来说也非常好用。

众所周知VSCodeSorceinsight非常好用, understand相对小众,但也非常优质,不过需要收费。

在一位大佬的推荐下,我试了一下开源的代码编辑器sourcetrail,确实别具一格。下面简单来分享一下。

官网地址:https://www.sourcetrail.com/

sourcetrail能够十分高效的帮助开发者去探索、熟悉陌生的代码,目前支持 C、C++、Python 和 Java 语言,同时提供了相关 SDK 用于拓展支持其它语言,相信在未来会提供更多语言的支持。

程序员在它的帮助下可以快速熟悉陌生项目、学习开源项目、框架等。这个神器,大家可以去试试。

目前这个项目已经开源了GitHub地址:

https://github.com/CoatiSoftware/Sourcetrail/releases

跨平台,支持 Windows、macOS、Linux 这三个系统;

下载地址:https:github.com/CoatiSoftware/Sourcetrail/releases

这里我下载的是安装包是Sourcetrail_2021_1_30_Windows_64bit_Installer.zip,安装之后直接看效果图,感觉还是相当不错的。

下面简单介绍下如何使用 sourcetrail 阅读源码,这里我以Linux-0.12的源码为例,做一下简单的说明;

首先双击打开软件,界面如下,点击左侧的 New Project 创建项目

设置好项目名称,并把项目路径设定为Linux-0.12的源码路径,如下图所示;

点击 Add Source Group,在左侧的语言栏里选择C语言,然后选择 Empty Java Source Group

如下图中的索引号,做一下简单介绍;

  1. 设置C标准,如图可以设置为C99;

  2. 可以设置交叉工具链;

  3. 添加源代码的相关文件;索引3是必须要配置的选项,1和2其实可以省略,添加完文件点击Create

选择 All Files, 点击 Start 按钮,然后耐心等待。

完成之后发现提示中出现了很多错误提示,忽略即可,这个完全不影响我们阅读源码。

后面就可以愉快地阅读源代码了。



项目中的符号都可以点击,支持来回跳转,还支持模糊搜索。

左侧源码结构非常清晰,对于熟悉陌生代码结构非常有用。

还可以与其他编辑器链接,比如:Atom, Clion, Eclipse, Emacs, IDEA 等等。

如果你还想挖掘更多的功能,可以参考一下官方文档。

https://www.sourcetrail.com/documentation/

工欲善其事必先利其器,后台回复【520】获取神器。

—— The End ——


推荐阅读:

专辑|Linux文章汇总

专辑|程序人生

专辑|C语言

我的知识小密圈

关注公众号,后台回复「1024」获取学习资料网盘链接。

欢迎点赞,关注,转发,在看,您的每一次鼓励,我都将铭记于心~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/465952.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CPU占用率是什么?

这是昨晚上在朋友圈发的一个讨论回答的问题很多因为这个问题,我晚上也没早睡,就想把这个讲清楚说这个问题之前我们先了解下时间片调度算法,因为用这个来讲比较清楚。CPU可以执行任务,CPU给哪个进程执行,哪个进程就可以…

每日一题(17)—— 关键字volatile的作用和三个不同的应用场合

关键字volatile的作用和三个不同的应用场合 作用:防止编译器优化; (1)并行设备的硬件寄存器(如状态寄存器);// #define S5PV210_GPIO_DATA (*(volatile unsigned char *)0x40000000) &#x…

维护邮件系统

维护邮件系统转载于:https://blog.51cto.com/february/195437

长大了,也弄丢了很多东西

小明要回家处理父亲的头七,那天晚上跟他喝酒聊天,我们说对生活的一些计划,比如计划让小孩上哪所小学,比如上小学了上哪所初中,高中,报什么课外兴趣班等等。吃过苦的孩子心里都有一种执念,想让自…

我的爹,我的娘(2006-02-22 21:39:07)(新浪)

爸爸妈妈是农民(我也是),都已年过半百。他们很忙碌,闲不下来.爸爸头发这几年越来越少了,头发也白了不少,但坚持经常染发,因为他说,怕我的小兄弟产生为什么别人爸爸这么年轻的想法。我…

每日一题(18)—— 指定地址存入数据

往内存地址0x1c1b上存入一个数据0x10,使用指针如何操作,写出代码。 *((volatile unsigned int *)0x1c1b) 0x10;

.Net序列化与反序列化的2种方法

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Newtonsoft.Json; //方法一的引用 using System.Web.Script.Serialization; //方法二的引用namespace ConsoleApplication1 {class Program…

200个模块,怎么用有线的方式进行组网通信

这是一个读者私聊我的问题,我觉得比较有意思,发出来大家一起讨论,我相信在讨论后,会有更加好的的方案。问题有200个模块,这200个模块需要和主CPU进行通信,每个模块的距离大概在30~50cm之间,用怎…

两招让陌生网络访问者现出原形

当我们关闭计算机时,经常出现“有一台计算机与你的电脑有连接,如果关闭将中断数据”的提示,尤其是在局域网中这种提示更是经常出现。其实这是因为别人通过网络正在访问自己电脑上的共享资源呢!面对如此恶劣的行动,难道只能任其胡作非为吗!当然…

将二维数组名作为函数实参

可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以指定所有维数的大小,也可以省略第一维的大小说明,如: void Func(int array[3][10]); void Func(int array[][10]); 二者都是合法而且等价,但是不…

每日一题(19)—— 用变量a给出下面的定义

(a) 一个整型数(An integer) (b) 一个指向整型数的指针(A pointer to an integer) (c) 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer) (d) 一个…

网易创始人之一,周卓林先生

这篇文章的主人公我觉得对我们做技术的人非常有借鉴作用。大学的时候,我们老师就一直强调,一命,二运,三风水,四积德,五读书,后面我就不记得了。1、1997年2月,周卓林上Hotmail&#x…

sql2005 无法解决 equal to 操作Chinese_PRC_CI_AS 和 Chinese_PRC_CS_AS 之间的排序

错误代码: SELECT * FROM SJCCBZ, Order_Motor WHERE SJCCBZ.OrderIDOrder_Motor.OrderID and SJCCBZ.OrderID1AND Order_Motor.M_State已报账 错误提示: 消息 468,级别 16,状态 9,第 1 行 无法解决 equal to 操作中 …

MapReduce编程中常用的字符操作

本文主要用于记录自己在编写mapreduce程序时常用的一些方法,后期会不断更新,用于自己复习和给新手一些帮助。 字符串操作 String str " 12345"; // 字符串中是否包含某子字符串System.out.println(str.contains("123"));// …

用单片机制作简单的频率计

点击上方“果果小师弟”,选择“置顶/星标公众号”干货福利,第一时间送达!摘要:利用定时器产生PWM波。然后利用32的外部中断和定时器来测量32输出的波形 硬件:STM32F103C8T6核心板、示波器、串口调试助手 所用到的的引脚…

每日一题(20)——malloc与free(一)

void GetMemory(char *p) {p (char *)malloc(100); }void Test(void) {char *str NULL;GetMemory(str);strcpy(str, "hello world");printf(str); } 1、指出编程错误 2、指出错误后果 3、指出纠正方法 分析: 1、调用GetMemory( str )后,…

gentoo ffmpeg+mencoder快速搭建视频处理系统笔记

软件说明:MP3支持:lamexvid支持:xvidH264/AVC支持:x264AC3支持:liba52MPEG4 ACC支持:faac、faad23GPP AMR Floating point 和 AMR-Wideband支持:libamrnb、libamrwbemerge lame libogg libvorbi…

深入理解Linux内核之内核抢占

1.开场白环境:处理器架构:arm64内核源码:linux-5.11ubuntu版本:20.04.1代码阅读工具:vimctagscscope我们或许经常听说过内核抢占,可是我们是否真正理解它呢?内核抢占和抢占式内核究竟有什么关系…

Python+Selenium学习笔记10 - send_keys上传文件

在火狐浏览器上传文件 上传前,同一个HTML文件在火狐和Edge浏览器显示有些不同 这是Firefox浏览器的显示 这是Edge浏览器 上传后 1 # coding utf-82 3 from selenium import webdriver4 import os5 import time6 7 dr webdriver.Firefox()8 file_path "file:…

不错,又有东西可以领!顺带开发个炫彩灯

什么是涂鸦Arduino SDK?Arduino 是全球最流行的开源硬件平台,涂鸦官方推出的 Arduino 开发驱动库,使用任意 Arduino 开发板涂鸦通用模组即可快速实现设备联网,开发属于自己的 IoT 项目。本次实战营适合你吗?没基础 —— Arduino 开发需要掌…