使用 Sourcegraph 搜索 34000 多个 Fedora 仓库
创始人
2024-03-02 10:28:44
0

在 2021 年 10 月,一个 Fedora Linux 用户 问了一个关于许可的问题。Fedora 项目负责人 Matthew Miller 回复道:“我不能快速地检查(这个问题),因为我们没有一个完整的、庞大的、可搜索的存储库来检索 Fedora 中所有软件包。”

接着他说:“……或许我们可以付钱给 Sourcegraph,让他们帮我们做这个。他们看起来乐于助人。” 他说的没错,我们(Sourcegraph)的确是乐于助人,而且我们还不想要你的钱,相反,我们想与 Fedora 社区合作。

Fedora 社区现在可以在他们的开源代码世界中尽情搜索 —— 目前有超过 34,000 个存储库,而且还在不断增加。

代码搜索简介

如果你还不熟悉 代码搜索 的概念,我现在就来告诉你。代码搜索可以让团队更快地掌握一个新的代码库,在里面找到答案,帮助团队识别安全风险,以及许多其他用例。Sourcegraph 已经在 GitHub 和 GitLab 等多个代码托管服务上,索引了 200 多万个存储库。本文只关注 src.fedoraproject.org 的代码搜索。Sourcegraph 同时提供了一个 Web 应用命令行客户端

使用 Web 应用

在使用 Sourcegraph Web 应用 时,你需要先输入初始字符串 repo:^src.fedoraprojects.org,然后再开始查询。这个 Web 应用 链接中包括了上面的初始字符串,点击这个链接后,搜索界面如下图所示:

Sourcegraph Web 应用界面

下面我将提供几个使用 Web 应用程序进行搜索的例子,大家可能会对它们感兴趣。

查找使用流行的经 OSI 批准的许可证的存储库

下面的查询语句将扫描所有兼容 “ 开源定义 Open Source Definition ”(OSD) 的软件存储库。

repo:^src.fedoraproject.org/ lang:"RPM Spec" License: ^.*apache|bsd|gpl|lgpl|mit|mpl|cddl|epl.*$

许可证搜索

试一下!

查找带有 TODO 的文件

下面的查询语句将在 34,000 多个仓库中找到 TODO 文件。对于那些希望为需要帮助的项目做出贡献的人来说,是一个非常棒的功能。

repo:^src.fedoraproject.org/ "TODO"

搜索 TODO

试一下!

查找 FTP 服务器上的文件

我的一个前同事告诉我 “FTP 是一个死协议”。真的是这样吗?你也可以在这个查询中加入任何其他协议,如 irc、https 等。

repo:^src.fedoraproject.org/ (?:ftp)://[A-Za-z0-9-]{0,63}(.[A-Za-z0-9-]{0,63})+(:d{1,4})?/*(/*[A-Za-z0-9-._]+/*)*(?.*)?(#.*)?

搜索协议

试一下!

查找使用有漏洞的 Log4j 版本的文件

这个查询语句将找到任何可能存在 CVE-2021-44228(也就是 Log4j)漏洞的文件(可能会有误报)。你也可以搜索其他漏洞,然后报告给项目维护者。

repo:^src.fedoraproject.org/ org.apache.logging.log4j 2.((0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15)(.[0-9]+)) count:all

搜索 log4j

试一下!

使用命令行

Sourcegraph 还有一个叫做 src 的命令行客户端,它可以让你完成我刚才提到的所有事情。此外,它还有其他一些有用的命令。比如说,它可以把结果用 JSON 格式输出,方便你在编程中使用。

src search -json 'repo:^src.fedoraproject.org/ lang:"RPM Spec" License: ^.*apache|bsd|gpl|lgpl|mit|mpl|cddl|epl.*$'

输出 JSON

输出 JSON

试一下!

搜索语法

就入门而言,上面的例子是很好的起点,但 Sourcegraph 还支持更多的查询语句。你可以 查看所有的搜索查询语法,并根据需要创建你自己的查询语句。

总结

正如你所看到的,有了 Sourcegraph,Fedora Linux 社区现在可以快速搜索托管在 src.fedoraproject.org 上的所有代码,无论是使用普通查询还是复杂的正则查询。

感谢 Fedora Linux 社区的慷慨帮助和热情欢迎。如果你有任何想补充的内容或问题,我和我的团队都会在下面的评论区回复。你也可以 在 Slack 上找到我们

特别感谢 Vanesa Ortiz 促成了这次合作,还有 Ben Venker 帮助修复了我的正则表达式(多次),以及 Rebecca DoddNick Moore 在编辑上的帮助。


via: https://fedoramagazine.org/using-sourcegraph-to-search-34000-fedora-repositories/

作者:Justin Dorfman 选题:lujun9972 译者:lkxed 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

按内置属性代码搜索主数据服...
要通过内置属性代码搜索主数据服务成员,可以使用以下解决方法:使用主...
2024-11-03 12:31:33
微软加码对 GitHub ...
微软,你在 GitHub 上的行为究竟是何目的?许多用户对 微软收...
2024-03-02 18:03:23
如何从 Ubuntu 中删...
从 apt-add-repository 到“软件及更新”工具,这...
2024-03-02 16:20:53
使用 Sourcegrap...
在 2021 年 10 月,一个 Fedora Linux 用户 ...
2024-03-02 10:28:44
用开源工具 Pulp 管理...
这篇文章介绍 Pulp,一个开源仓库管理解决方案,它的使用范围和功...
2024-03-02 05:49:29
如何在 RHEL 中使用订...
了解如何在 RHEL 中使用订阅管理器来启用软件仓库。 这篇文章还...
2024-03-01 23:12:42

热门资讯

“Linux 中国” 开源社区... 这是一个艰难的决定 —— 这不是调侃,而是当你真正做出改变了你十几年生活轨迹的决定时,你就会明白这个...
硬核观察 #1263 德国铁路... #1 德国铁路公司招聘 Windows for Workgroups 3.11 管理员该职位要求了解...
人工智能教程(七):Sciki... 在本系列的 上一篇文章 中,我们用 TensorFlow 构建了第一个神经网络,然后还通过 Kera...
关闭 WSL 中正在运行的 L... 以下是使用 WSL 关闭在 Windows 内运行的 Linux 系统的不同方法。你使用 WSL 在...
MX Linux 23.2 “... 最新的 MX Linux 23.2 小版本更新带来了基本的改进和新增功能。MX Linux 推出了 ...
硬核观察 #1262 网络上最... #1 网络上最古老的软件存档库之一即将关闭美国新墨西哥州立大学(NMSU)最近宣布,即将于 2024...
如何在 RHEL 上通过绑定配... 在 Linux 中,你可以根据自己的需要创建高级网络设置,如 网络绑定 Network Bondin...
Linux Matrix 消息... Matrix 用户可以升级 Fractal 6 了!Fractal 是目前 最好的 Matrix 客...
如何通过 VLC 使用字幕 使用 VLC 媒体播放器播放和管理字幕的新手指南。我是一个超级动漫迷,如果你想观看最新的剧集,那么你...
硬核观察 #1261 X 计划... #1 X 计划在奥斯汀建立内容审核总部据报道,该部门将招聘 100 名全职员工,将主要关注 CSE ...