【好工具】Sourcegraph助你网页端快速浏览项目代码

2023-11-16

欢迎大家来到《好工具》专栏,这个专栏面向所有希望获得高效生产力工具的朋友。在这个专栏里,我们会和大家聊聊那些狂拽酷霸炫的生产力工具!

相信大家一定我一样,茫然于庞大的工具海洋,却仍找不到称心的它来使用,这也是《好工具》专栏存在的意义 —— 发掘、折腾,为你带来真正满足需求的产品或产品组合,提高生产效率、get 好心情:)

作者 & 编辑 | 台胖 & Dasein

今天给大家推荐一款浏览器插件

可以让大家更加方便快捷浏览 Github 代码

相信我们的读者中已经有一些在用这个工具

不过还是希望把它推荐给更多小伙伴们!~

相信不少小伙伴在习惯了常用开发环境的使用和界面后第一次使用 Github 浏览代码多少会有一些不适,Github 的默认浏览方式类似我们平常在浏览系统文件的列表模式,在每个文件右侧显示其最近一次提交的时间和 commit message。如果只想大致的浏览一下项目结构或是查找某个特定的模块 / 类就会变得异常麻烦,这个时候 Sourcegraph 便可以派上用场。

1. 安装 Sourcegraph

作为一个浏览器插件,Sourcegraph 的安装自然也很简单,打开 Chrome 浏览器 -> 右上角自定义 -> 更多工具 -> 扩展程序 -> 左上角扩展程序主菜单 -> 打开网上应用程序市场,搜索 Sourcegraph 并安装。(文末有领取方式

安装完成后,可以打开 Github,当在项目旁边出现 Sourcegraph 的图标时,说明插件安装成功了。点击这个图标便可以进入到 Sourcegraph 模式。

2. Sourcegraph 基本功能使用

1. 初识界面

进入到 Sourcegraph 模式,我们会发现左侧有一个列表列出了当前项目的所有文件,是不是觉得很熟悉了?没错,在这种模式下我们就可以查看项目代码树状结构了。

上图小编帮大家框出了 Sourcegraph 模式下几个主要的功能块,左边便是刚刚提到的项目树状结构,中间部分分为上中下三块,第一部分主要是项目的 commit、branch 等的跳转以及搜索框;第二部分是所有文件的列表,第三部分是最近提交的相关信息。

2. 搜索功能

我们来尝试一下搜索功能,比如我现在要搜索 Caffe 项目中的 bn 层相关代码:

可以看到在我输入 batch_norm 之后搜索框的联想提示速度还是比较快的,而且成功帮我定位到了头文件、cpp 实现和 cuda 文件,看来搜索功能基本可以满足需求。

3. 跳转功能

Sourcegraph 中另一个类似于 IDE 的功能便是他的跳转功能,也就是查找变量定义的位置和引用的位置,我们再一起来尝试一下。

在我们刚刚进入的 batch_norm 层实现中,看到了一个叫 channels_的变量,在谷歌的 C++ 代码规范中,变量名后加下划线一般是类内变量,我们来确认下这个项目是不是也遵循了这个命名规范呢?在 channels_这个变量上稍事停留一下鼠标或单击这个变量,便可以看到弹窗,选择 Go to definition:

可以看到浏览界面直接跳转到了 batch_norm 的头文件,发现 channels_这个变量确实是 BatchNormLayer 这个类的类内变量,跳转速度十分迅速。

同样的,如果想知道有哪些地方用到了 channels_这个变量,可以点击弹窗的另外一个选项 Find references:

由于引用这个变量的肯定不止一处,此时便不会直接跳转,而是在界面下方弹出一个新窗口,用户可以自行选择跳转到哪一个引用。另外在 reference 旁边还有一个 history 标签,切换过去可以看到与该变量相关的所有 commit history,怎么样是不是很方便?

3. Sourcegraph 扩展

在 Sourcegrah 模式下,可以看到右上角有一个 Explore 选项,点进去可以看到 Sourcegraph 也是有很多扩展功能可以使用的,如下图:

可以看到主要是对众多语言的支持,根据官网说明,确认了 Sourcegraph 可以支持 24 种编程语言,同时实现了多平台嵌入支持(Chrome、Firefox、VSCode 等),可见 Sourcegraph 还是比较强大的。

除此之外呢,也有很多其他功能的扩展。例如 token-highlights 这个扩展,可以更好的支持同一个变量的高亮显示:

那么更多 Sourcegraph 的相关功能也等待小伙伴们自己发掘咯,如果有发现十分好用的插件,欢迎在评论区留言~

后台回复『Sourcegraph』获取本文介绍的插件

今日话题

你有用过什么好用的浏览器插件?可以安利出来嘛~

转载文章请后台联系

侵权必究

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【好工具】Sourcegraph助你网页端快速浏览项目代码 的相关文章

  • ORA-00257 归档日志写入失败异常

    ORA 00257 归档日志写入失败异常 问题描述 应用程序连接数据库时提示 ORA 00257 错误 问题分析 oerr ora 00257 00257 00000 Archiver error Connect AS SYSDBA onl
  • 索引表简介

    索引表简介 1 索引的内部构造 因为在索引表中涉及到索引的内部构造知识 所以下面会进行简单的介绍 首先 如果没有索引 当你想要去查找某个值的时候 你不得不对数据进行顺序扫描 如果一张表有n行 那么使用顺序扫描的平均扫描行数为n 2 一旦表的
  • Linux_CentOS_/usr、/usr/share、/etc、目录下文件系统规则

    usr目录下的常用文件夹 usr share目录下的常用文件夹 etc目录下的常用文件夹 var log目录下的常用文件 usr local目录下常用文件夹
  • 1366 - Incorrect string value: ‘\xE8\xBE\xBD\xE5\xAE\x81...‘ for column ‘province_name‘ at row 1

    修改表的字符集编码 ALTER TABLE TABLE NAME CONVERT TO CHARACTER SET utf8mb4
  • 基于LinkedHashMap实现LRU Cache以及手写LRU

    public class LRUCache
  • FreeLibrary问题

    FreeLibrary问题 Delphi Windows SDK API http www delphi2007 net DelphiAPI html delphi 20061127162652164 html 释放动态库时报C盘下的系统文
  • QT学习之QMainWindow详解

    文章目录 1 菜单栏 2 工具栏 3 状态栏 4 铆接部件 5 核心部件 中心部件 6 资源文件 有关QT的学习我们会采取连载更新 传送门 有C 基础如何直接上手QT 最适合新手的第一个Qt小程序 今天更新内容为QMainWindow相关学
  • C++代理模式:Proxy Pattern

    代理模式 为另一个对象提供一个替身或者占位符以控制对这个对象的访问 这样做的好处是 可以在目标对象实现的基础上 增强额外的功能操作 即扩展目标对象的功能 代理需要做的 控制和管理访问 需要时可以扩展目标对象的功能 被代理的对象可以是远程的对
  • 实时音视频的那些事儿(三)—— 音频编码

    前言 上一篇文章 实时音视频的那些事儿 二 音频采集 中我们讲到了如何在iOS Android Windows平台实现音频采集 今天将介绍如何实现音频的编码 一 iOS 中使用 AudioUnit 实现音频编码的过程 AudioUnit 是
  • java IO、NIO、AIO详解

    目录 概述 一 IO流 同步 阻塞 二 NIO 同步 非阻塞 三 NIO2 异步 非阻塞 正文 回到顶部 概述 在我们学习Java的IO流之前 我们都要了解几个关键词 同步与异步 synchronous asynchronous 同步是一种
  • PE文件资源解析(四)光标资源的解析

    光标资源 在这里指的是资源类型为RT CURSOR的资源信息 通过ResHacker看到的效果图如下 解析代码如下 HRSRC hResrc FindResourceEx HMODULE hModule lpType lpName wLan
  • 将数组中的元素拼接为一个字符串

    join 方法 利用JS数组的join 方法即可完成将元素拼接为一个字符串 arrayObject join separator 备注 join 方法不给定分隔符的时候 默认以英文逗号作为分隔符 toString 方法 可以使用JS数组的t
  • 如何破解PDF文件密码(在线破解PDF密码)

    如何破解PDF文件密码 在线破解PDF密码 fcwgw 5d6d com 整理 凌空飞度社区 每当毕业临近的时候 毕业生都会忙着写论文 每逢此时 Adobe Reader就是最忙的了 但是有时候遇到一些加密的PDF文档 Adobe Read
  • Jenkins与git结合使用进行C++代码静态检查

    Jenkins与git结合使用进行C 代码静态检查 在软件开发过程中 静态代码检查是一种常见的工具和实践 可以帮助开发人员在编码阶段尽早发现和解决潜在的问题 本文将介绍如何使用Jenkins和git集成 利用cppcheck进行C 代码的静
  • 建站系列(一)--- 网站基本常识

    目录 相关系列文章 前言 一 因特网 二 网站 三 服务器 四 IP 五 域名 六 DNS 七 Hosts文件 八 端口号 九 URL 十 静态网站 十一 动态网站 相关系列文章 建站系列 一 网站基本常识 建站系列 二 域名 IP地址 U
  • Python 使用requests发送get请求

    get请求是常用的请求之一 相对于post请求简单些 对于传参数的get请求有的还是有难度的 和post请求一样 必须知道每个字段的含义 这样拿到的响应才是正确的 也是我们想要的 不带参数的get请求 import requests hea
  • 自学Android之路---笔记

    1 查看类的源码CTRL b 2 所有的活动即activity必须要在AndroidManifest xml中进行注册才能生效 3 布局多练习
  • 2023华为OD机试真题【缓存需要最少金币数/贪心算法】

    题目描述 静态扫描可以快速识别源代码的缺陷 静态扫描的结果以扫描报告作为输出 1 文件扫描的成本和文件大小相关 如果文件大小为N 则扫描成本为N个金币 2 扫描报告的缓存成本和文件大小无关 每缓存一个报告需要M个金币 3 扫描报告缓存后 后
  • JWT和token的区别

    什么是token token的意思是 令牌 是服务端生成的一串字符串 作为客户端进行请求的一个标识 当用户第一次登录后 服务器生成一个token并将此token返回给客户端 以后客户端只需带上这个token前来请求数据即可 无需再次带上用户
  • Mini-NDN 安装

    1 git clone https github com named data mini ndn 2 install sh 报错1 Traceback most recent call last File usr lib python3 d

随机推荐

  • Spring--IOC容器

    文章目录 Spring IOC容器 一 IOC概念和底层原理 1 官方概念 2 什么是IOC 3 IOC底层原理 4 降低耦合的历史演变 二 IOC接口 Beanfactory 1 IOC思想基于IOC容器完成 IOC容器底层就是对象工厂
  • java判断是否为序列二叉树 - Kaiqisan

    大家好 都吃晚饭了吗 我是Kaiqisan 是一个已经走出社恐的一般生徒 今天还是二叉树诶嘿嘿 首先还是明确一个概念 何为序列二叉树 答 中序遍历之后序列递增的二叉树为序列二叉树 比如这棵树 4 2 7 1 3 5 8 6 它的中序遍历结果
  • 图的深度遍历

    题目描述 请定一个无向图 顶点编号从0到n 1 用深度优先搜索 DFS 遍历并输出 遍历时 先遍历节点编号小的 输入 输入第一行为整数n 0 lt n lt 100 表示数据的组数 对于每组数据 第一行是两个整数k m 0 k 100 0
  • web前端开发自学书籍推荐这5本

    JavaScript权威指南 第6版 淘宝前端团队翻译的 看译者列表都是一堆大神 这本书又叫犀牛书 号称 Javascript 开发者的圣经 网上对此书评价很多 大概意思都是说这本书是一本 JavaScript 文档手册 没有完整看过一遍此
  • IMAP,POP3,SMTP协议

    1 IMAP 因特网报文存取协议IMAP Internet Message Access Protocol IMAP协议是由斯坦福大学的Mark Crispin教授在1986年开发的 后期版本是华盛顿州立大学进行开发的 IMAP4是TCP
  • spring-boot-starter-web(Web启动器)

    Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架 其本身就是 Spring 框架的一部分 可以与 Spring 无缝集成 性能方面具有先天的优越性 是当今业界最主流的 Web 开发框架之一
  • ZYNQ FreeRTOS使用双网口笔记与爬坑

    正点原子领航者7020的开发板上有两个网口 想着用起来 上面一个是PS网口 一个是外挂在PL网口 使用vitis版本为2019 2 PL网口通过emio挂载在网络控制器1上 PS网口挂载在网络控制器0上 配置串口0 踩坑1 在vivado里
  • orCAD下设置不同的GND网络

    对 PCB设计 而言 其中最重要 也是最基础的 就是 电源与地GND 列举例子如下 i 首先 对 简单电路 而言 其中的 电源与地GND 只有2个 大部分情况下 其被命名为 VCC 和 GND ii 其次 对 稍复杂电路 而言 其必须对GN
  • HTTPS的工作过程

    HTTPS就是对HTTP进行了加密 因为要保证数据安全 就需要进行加密 网络中不再直接传输明文了 而是加密之后的密文 加密的方法有很多 但是整体可以分为两大类 对称加密和非对称加密 对称加密 对称加密其实就是通过同一个 密钥 把明文加密成密
  • MMSegmention官方文档阅读系列之三(MMSegmentation 算法库目录结构、了解配置文件信息)

    1 MMSegmentation 算法库目录结构的主要部分 1 mmsegmentation configs 配置文件 base 基配置文件 datasets 数据集相关配置文件 models 模型相关配置文件 schedules 训练日程
  • python 字典的增删改查

    由于字典并不能像列表一样切片 所以字典并没有添加单一元素的 方法 但可以通过以下方法添加 dictory 猫 cat 狗 dog 狼 holf print dictory dictory 猪 pig print dictory 添加多个元素
  • 装多系统的U盘启动盘的制作

    制作安装多系统USB启动盘 下载做启动盘软件 建议linux和windows都支持的软件做系统盘 推荐YUMI或UltraISO 本教程用的yumi UltraISO 百度搜 图形化界面 收费 但破解版很多 YUMI 简单 免安装 下载链接
  • 软件测试复习03:动态测试——白盒测试

    作者 非妃是公主 专栏 软件测试 个性签 顺境不惰 逆境不馁 以心制境 万事可成 曾国藩 文章目录 逻辑覆盖法 最常用 程序插桩技术 基本路径法 点覆盖 边覆盖 边对覆盖 主路径覆盖 符号测试 错误驱动测试 习题 白盒测试常用技术有 逻辑覆
  • 支付宝生活号开发配置以及相应的流程

    由于最近公司涉及到支付宝服务号升级生活号 故有机会接触支付宝生活号的开发 前期准备 申请支付宝生活号 步骤 说实话 支付宝生活号管理后台涉及功能太多 所以找到相应的配置项还是比较绕的 1 登录支付宝生活号平台 找到 开发者 这个菜单 2 进
  • ​第一个C#互联网客户端

    开发环境 本文涉及到的C 工程是基于 Visual Studio 2019 Ver16 10 建议更新到Visual Studio 2019最新的版本 准备工作 首先需要下载 WebRuntime 二进制包 TheUniverse下载地址
  • jar包替换class文件方法

    直接打成非压缩的jar包或war包 先将对应的jar或war包使用unzip解压出来 再用java的jar命令再打个非压缩的包 如 unzip myapp war d myapp cd myapp jar cvfM0 myapp war
  • 详解HTTP协议版本(HTTP/1.0、1.1、2.0、3.0区别)

    HTTP 1 0 1 1 2 0 3 0区别 HTTP1 0 无连接 队头阻塞 缓存 HTTP 1 1 特点 优缺点 长连接 管道传输 HTTP 1 0 比较 HTTP 1 1 HTTP协议层次结构图 HTTP 2 0 头部压缩 二进制格式
  • 运输层---运输层概述 UDP协议与TCP协议

    运输层是面向通信功能中的最高层 又是面向用户功能中的最底层 一 运输层的作用 AP n 代表各个进程 通讯并不是主机和主机之间的通信 实际上是应用进程之间的通信 IP协议的作用范围 主机和主机之间进行通信 端口 端口实际上是一个标识符 标志
  • 放大器内部结构原理图解

    晶体管放大器结构原理图解 功率放大器的作用是将来自前置放大器的信号放大到足够能推动相应扬声器系统所需的功率 就其功率来说远比前置放大器简单 就其消耗的电功率来说远比前置放大器为大 因为功率放大器的本质就是将交流电能 转化 为音频信号 当然其
  • 【好工具】Sourcegraph助你网页端快速浏览项目代码

    欢迎大家来到 好工具 专栏 这个专栏面向所有希望获得高效生产力工具的朋友 在这个专栏里 我们会和大家聊聊那些狂拽酷霸炫的生产力工具 相信大家一定我一样 茫然于庞大的工具海洋 却仍找不到称心的它来使用 这也是 好工具 专栏存在的意义 发掘 折