使用 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

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
2024 开年,LLUG 和你... Hi,Linuxer,2024 新年伊始,不知道你是否已经准备好迎接新的一年~ 2024 年,Lin...
什么是 KDE Connect... 什么是 KDE Connect?它的主要特性是什么?它应该如何安装?本文提供了基本的使用指南。科技日...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...