JavaRush /Java 博客 /Random-ZH /GitHub 代码搜索:查找更多,搜索更少 - GitHub 推出搜索引擎
Roman Beekeeper
第 35 级

GitHub 代码搜索:查找更多,搜索更少 - GitHub 推出搜索引擎

已在 Random-ZH 群组中发布
大家好,亲爱的朋友们!作为 GitHub 新功能的爱好者,我非常有兴趣知道很快我们都将能够快速有效地搜索 GitHub 代码库。这可能非常方便,特别是当您需要找到一种复杂的方法来使用工具时。 《GitHub 代码搜索:查找更多,搜索更少》 - GitHub 推出的搜索引擎 - 1这尤其与 GitHub 未来的竞争对手在俄罗斯开设这一事实产生了共鸣。因此,GitHub绝对不应该固步自封,尽管他们毫无疑问是市场的领导者。我们需要继续前进和发展,否则不到一个小时,竞争对手就会迎头赶上并横扫而去。并让它看起来不那么令人难以置信。举个例子:有多少人还在使用诺基亚手机?谁知道他们制造了手机?曾经,它们简直是遥不可及、无可争议的市场领导者……而现在它们却出现在统计错误的领域。

第一印象

GitHub 创建了一个项目,您可以在其中搜索、导航和分析您的代码以及 GitHub 上发布的数十亿行代码。值得注意的是,搜索是可扩展的、快速且准确的。它是专门为代码搜索而从头开始创建的。导航适用于 10 种主​​要编程语言,无需设置(我们希望这个列表将来会增长)。您可以使用正则表达式进行搜索,这非常酷。还可以使用其他过滤器:
  • 按组织划分;
  • 通过编程语言;
  • 由特定所有者;
  • 按文件扩展名;
  • 通过正则表达式。
这份名单已经令人印象深刻了!事实证明,搜索引擎使我们有机会创建复杂的搜索查询,在其中我们可以清楚地定义搜索所需的边界。引擎的第二个重要部分是代码导航 😳 开发环境有哪些方便以及为什么人们要为此付费?因为它们让我们的生活更轻松,帮助我们浏览代码,从而提高开发和阅读代码的速度。GitHub 现在为我们提供了这个很酷的功能。这难以置信。是的,我知道目前 GitHub 上已经有类似导航的东西了,但是功能还很短而且很粗糙。也就是说,无需开发环境,您就可以搜索某些方法在哪里使用、在哪里定义。这真是太棒了。GitHub 你让我很开心。还可以在类中进行导入导航。这解决了在 GitHub 上查找和研究特定库的许多问题。现在这个过程加速了很多倍。而且这一切都是免费的。非常棒。他会受欢迎吗?我确信是的!

让我们更详细地讨论搜索

很有趣,自己看一下,尝试一下:是不是像他们说的那么方便?目前,此功能尚未公开提供,您可以使用链接将自己添加到等待名单中。我们把所有的点都填在那里,问题很简单,我这里就不描述了。结果,我们被添加到等待名单中并继续前进。结果,答案将是这样的: 《GitHub 代码搜索:查找更多,搜索更少》 - GitHub 推出搜索引擎 - 2你只需要等待。只要我加入,我一定会把一切都给你看。不要拖延,添加你自己,以便你稍后可以弄清楚并使用它来让你高兴)当然,遗憾的是你不能立即尝试这个新工具,所以让我们分析一下他们的文档并在更详细地说明我们如何在工作中使用此工具。现在关于搜索。它将使用在我正在编写的库中有意义的类和构造。这会让我更清楚、更容易,我希望你也能更容易。

基本搜索

ImageComparison是最简单的搜索,它可以使用文件名及其内容中的查询进行精确搜索。这里一切看起来都很简单。如果我们想通过类名清楚地找到它的声明位置和使用位置,这样的搜索将帮助我们做到这一点。当您输入以空格分隔的多个单词时,结果将分别搜索所有这些单词: Image Comparison ,这意味着它将查找ImageComparison的文件和代码。如果您需要搜索包含空格的字符串,那么您只需要使用引号即可。例如: “ImageComparison Comparison = new ImageComparison()”,然后搜索将匹配整个字符串。为了转义,我们一如既往地使用“\”。到目前为止,一切都是直观的,而且通常就是这样做的。此外,我们可以向此基本搜索添加过滤器。因此,让我们逐一讨论一下。这些将是我们已经创建的过滤器的逻辑“AND”。

按存储库过滤

一旦我们的基本过滤器准备好了,我们就可以缩小搜索范围并按特定存储库进行搜索,这非常方便。你不需要寻找类位于哪个文件夹,你可以直接写:
仓库:romankh3/image-comparison ImageComparisonResult
我们需要指定repo:${user_name}/${repo_name}。您还可以通过简单地添加 OR 来搜索多个存储库:
仓库:romankh3/image-comparison 或 仓库:romankh3/usage-image-comparison ImageComparisonResult
正如 GitHub 上所述,目前他们不支持在名称被指定为正则表达式的存储库中进行搜索...这意味着他们计划添加这样的功能,并且意味着该项目不会停留在声明的位置功能,并将进一步发展。

按组织过滤

按组织或用户搜索与按存储库搜索的方式相同,只是关键字不会是repo,而是org
org:romankh3 图像比较
然后搜索将遍历用户/组织的所有存储库。

按编程语言过滤

您还可以指定以特定编程语言搜索文件。这里的构造与存储库和组织相同,只是关键字是language
语言:java ImageComparison
就像存储库一样,它支持使用 OR 关键字同时以多种语言进行搜索:
语言:java 或 语言:ruby ImageComparison
可以在此处 找到 GitHub 支持的语言的完整列表。我想知道BrainFuck有吗?😂

按文件路径过滤

项目中的每个文件都有自己的路径,您也可以通过添加过滤器来搜索它。例如,有一个文件ImageComparisonResult,它的路径为:
src/main/java/com/github/romankh3/image/comparison/model/ImageComparisonResult.java
因此,要查找路径以src/main/java/com/github/romankh3/image开头的所有类,您需要:
路径:src/main/java/com/github/romankh3/image
当我们不希望测试类被排除在搜索结果之外的情况下,这非常有用。反之亦然,仅测试。这使您的搜索更加灵活。可以使用正则表达式指定按文件路径的过滤器。例如,我们需要找到
路径:src/*/*.js

布尔运算

当然,所有过滤器构建的最终目的是使用布尔运算将这些内容组合在一起。为此,我们有 AND、OR、AND NOT。我想这对我们来说应该足够了。例如,让我们创建一个复杂的搜索查询:针对特定用户/组织的 Java 或 Kotlin 生产代码:
repo:romankh3 AND (语言:java OR 语言:kotlin) AND NOT 路径:*/test/*
我告诉你,这简直令人难以置信。检索请求写得如此简单、快速、简洁、清晰,检索和阅读请求不会有任何问题。

一个小小的撤退

虽然我们的喜悦尚未冷却,但我想回到2018年,记住一些事情……还记得,当大家发现微软正在收购GitHub时,大家都以为这个项目会被埋没吗?他的命运就是第二个Skype的道路吗?每个人都是如何开始将他们的项目迁移到 GitLab 的?但说实话,在这种炒作之后,我创造了一些东西,也遭受了一些痛苦。但说实话,我再也没有去过搬项目的地方。但不知怎的,我不想这么做。为什么?对此也有一些想法。让我提醒您,在将 GitHub 出售给比尔盖茨之后,该项目添加了免费拥有私人存储库的功能,为 CI/CD 流程发布了 GitHub Actions 等等。现在还有一个强大的搜索引擎。这听起来不像是想要毁掉这个项目。更像是微软不想缴纳利润税,并在年底以超过 90 亿美元的价格成功收购了😁,然后他们决定开发这个项目。对于开源开发人员来说,这确实是存储代码的好地方。您无需离开 GitHub 即可全面开发您的产品。

在最后

我一口气写完这篇文章。我真的很喜欢言语和情感像间歇泉一样流动。这就是推动技术进步的动力。因此,我们要密切关注局势,不要放弃。我相信我们每个人都应该学会使用它。对于尚未注册 GitHub 的人,我强烈建议您注册。这很值得。 一如既往,朋友们,不要忘记订阅我的电报频道,我在其中结合了所有公共活动。除了我在这里发布的文章之外,我还在那里写了一些较短的文章,其中涉及到我对开发和 IT 领域感兴趣的主题。那里已经有超过800名订阅者了! 当然,还有我的GitHub 帐户,我在其中发布文章的所有演示项目、更新我的库并开发开源组织。 就这样,谢谢大家的阅读,我们不说再见了👌
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION