使用 Sourcegraph 搜索 34,000+ Fedora 存储库

2021 年 10 月,一个 Fedora Linux 用户 问了一个关于许可的问题. Fedora 项目负责人马修·米勒 留下了回应:“因为我们没有一个完整的、展开的、可搜索的存储库,其中包含所有包 Fedora,我没有快速检查的方法。”

其次是:“……或者可能支付 Sourcegraph 为我们做这件事。 他们看起来都是好人。” 他是对的,我们(Sourcegraph)是好人,但我们不想要你的钱。 相反,我们想与 Fedora 社区。

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

代码搜索简介

对于那些不熟悉的概念的人 代码搜索,它使团队能够加入新的代码库并更快地找到答案,帮助识别安全风险以及许多其他用例。 Sourcegraph 已经为 GitHub 和 GitLab 等多个代码主机上的超过 200 万个存储库建立了索引。 本文将严格关注 src.fedoraproject.org 的代码搜索。 Sourcegraph 提供了一个 网络应用 命令行界面 界面。

使用网络应用程序

使用 Sourcegraph 时 网络应用 您将需要开始每次搜索 回购:^src.fedoraprojects.org 在输入任何搜索查询之前。 使用此链接到 网络应用 将包括此初始字符串,如下所示:

Sourcegraph Web 应用程序界面

以下部分将提供一些可能感兴趣的搜索 Web 应用示例。

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

以下查询将扫描与“开源定义”(OSD)兼容的软件的所有存储库。

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

试试吧!

使用 TODO 查找文件

以下查询可以在 34k 存储库中找到 TODO。 这对于那些希望为需要帮助的项目做出贡献的人来说非常有用。

repo:^src.fedoraproject.org/ "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 还有一个命令行界面工具,叫做 源代码,它允许您执行我刚才提到的所有操作,以及其他有用的命令,例如以 JSON 格式获取结果以供编程使用。

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

JSON 输出

JSON 输出

试试吧!

搜索语法

所示示例可能是一个很好的起点,但绝不是唯一可以进行的查询。 你可以 查看所有搜索查询语法 并根据需要创建自己的。

结论

如您所见,使用 Sourcegraph, Fedora Linux 社区现在可以快速搜索托管在 src.fedoraproject.org,无论它们是文字查询还是复杂的正则表达式查询。

我很欣赏 Fedora Linux 社区非常乐于助人和热情。 如果您有任何要添加的内容或问题,我和我的团队将在下面的评论部分中。 你也可以 加入我们的 Slack.

特别感谢 凡妮莎·奥尔蒂斯 为了 使这种合作发生, 本·文克 感谢他帮助修复我损坏的正则表达式(多次),以及 丽贝卡·多德尼克·摩尔 感谢他们在编辑方面的帮助。