资料来源:通用代码搜索和情报

世界上的代码量正在爆炸式增长。 随着软件成为几乎每个行业中创新的基本动力,软件开发人员发现自己正在处理更大,更相互依赖的代码库。 大多数组织每天都为其代码库的大小设置新记录。

在这个世界上,传统的开发人员工具(例如编辑器和IDE)不足。 它们是为处理单个代码的个人开发人员设计的,而不是为大规模开发大型代码库的软件团队设计的。 在现代软件组织中,跨庞大的代码库进行搜索,理解陌生的代码以及共享机构知识成为头等大事。 软件团队需要一种工具来实现这种通用代码智能。

[ 同样在InfoWorld上:什么是CI / CD? 持续集成和持续交付的解释 ]

代码搜索必须具有通用性才能生效-它必须包含所有语言,所有存储库,所有代码宿主和所有配置文件。 仅限于Python或仅GitHub的搜索就像Google仅对使用Ruby on Rails或Apache HTTP Server构建的网站建立索引一样,对于在现代代码领域中工作的开发团队而言,这是一门开门红。

诸如Uber,Lyft和Yelp之类的领先技术公司正在使用Sourcegraph来纠缠这一系列代码。 像Google和Facebook这样的公司已经花费了数亿美元来构建类似于Sourcegraph的内部工具。 代码托管和开发人员公司GitLab最近宣布与Sourcegraph建立合作关系,以将Sourcegraph的某些功能本地集成到GitLab的UI中。

使用Sourcegraph的主要理由

Sourcegraph是一个开发平台,旨在解决现代软件团队面临的问题。 Sourcegraph解决了软件工程师和工程主管的关键痛点。

对于个人开发人员,以下是使用Sourcegraph的主要原因:

  1. 保持顺畅,避免因上下文切换造成死亡
  2. 在代码库干草堆中找到问题
  3. 快速,彻底,轻松地进行代码审查-不再需要TL; DR
  4. 通过示例学习,而不要学习不良或不存在的文档
  5. 使大型重构和代码更改易于处理
  6. 轻松共享和讨论代码,尤其是与远程同事共享和讨论代码
  7. 它是开源的

以下是工程负责人向其组织介绍Sourcegraph的最常见原因:

  1. 提高团队的日常生产力
  2. 鼓励知识共享
  3. 推动组织范围内对新工具的采用
  4. 加快新工程师的入职
  5. 减少事件响应时间
  6. 维护并传播代码质量标准
  7. 使用“代码即数据” API构建更好的内部开发人员工具
  8. 您的团队和代码库易于部署和扩展

保持流动

编程生产力通常因一千个上下文切换而丧命。 熟悉的场景是,开发人员正在实施功能或错误修复,但是突然需要跳入代码库的不同部分。 也许他们需要查找某个库函数或弄清楚如何使用它。 也许一位同事对其他代码有疑问。 现在,开发人员必须在其IDE中打开这些文件,并破坏它们的当前工作状态,这将在以后被痛苦地回忆和重建。

[ 同样在InfoWorld上:CI / CD入门:使用CI / CD管道自动执行应用程序交付 ]

这些中断是破坏性的,因为它们使开发人员脱离Flow State ,并且对生产率的负面影响非常明显。 Sourcegraph的基于浏览器的代码搜索和浏览界面使开发人员可以在浏览代码的其他部分时维护其编辑器状态。 这种工作状态的保留使上下文切换的成本大大降低,从而使单个开发人员能够以更少的麻烦完成更多工作。

原始图01 原始图

在大海捞针中找针

日常软件工程中的常见任务是在代码中查找特定的字符串或模式。 这可能是生产日志中显示的错误消息,应该删除的反模式,或者仅仅是开发人员与源代码中特定关注点相关联的一些唯一字符串。

原始图02 原始图

找到这些针头通常很痛苦。 IDE具有搜索功能,但是有问题的代码可能存在于IDE尚未打开的地方。 命令行工具也无法访问本地文件系统之外的代码,并且使用起来很麻烦。 代码托管者仅在其托管的代码上进行搜索,并且通常搜索速度慢或质量低。 代码搜索必须通用才能有效。

借助Sourcegraph,开发人员可以在整个代码范围内进行代码搜索,并全面支持正则表达式和Comby语法等更高级的模式匹配。 Sourcegraph的搜索引擎针对源代码进行了优化,因此速度非常快。 它也是从头设计的,可以扩展到大型代码库和组织。 一些组织拥有成千上万的存储库,而Sourcegraph则将它们全部置于开发人员的指尖。

强大而富有表现力的搜索语法使用户可以按文件,语言,存储库和无数其他属性来过滤结果。 Sourcegraph还了解代码语义,并允许直接搜索符号。

原始图03 原始图

通过例子学习

“我该如何使用?” 开发人员每天要问数十遍这个问题。 最好的文档通常是一个用法示例。 即使理想的用法示例存在于另一个存储库中,Sourcegraph的全局查找引用功能也可以使开发人员在整个代码范围内查找用法示例。 这对于旧的,不熟悉的或记录不良的代码库特别有用。

[ 也在InfoWorld上:如何将测试自动化与敏捷和devop结合使用 ]

快速彻底地检查代码

关于代码审查的一个常见笑话说,如果您提交一个10行的变更集,将获得10条注释,但是如果您提交一个1000行的变更集,则将没有任何注释,并且会自动获得批准。

由于传统工具缺乏许多基本功能来帮助审阅者快速了解代码更改,因此高质量的代码审阅通常是痛苦而缓慢的。 Sourcegraph在开发人员的现有代码检查工作流程中添加了类似IDE的代码导航和工具提示。

Sourcegraph悬停工具提示使审阅者可以快速查看功能定义和文档,而不必将更改集下拉至本地IDE。 在不离开代码审阅界面的情况下,Sourcegraph允许您跳转到定义以更全面地了解所引用的代码的工作方式。

原始图04 原始图

Sourcegraph将这些代码导航功能直接集成到流行的代码审查工具的用户界面中,例如GitHub Pull Requests,GitLab Merge Requests和Phabricator,因此开发人员的体验得到了改善,而没有任何转换成本。

更好的代码审查可减少错误,维护代码质量标准并增加机构知识在整个工程组织中的传播。

原始图05 原始图
原始图05 原始图

使大型重构易于处理

随着代码库的增长,大规模重构成为提高代码质量和实现新功能的不可避免的瓶颈。 例如,共享库的API可能需要更新以支持新功能,但是这样做可能需要更新数十个甚至数百个下游从属。 由于更新一个共享的依赖关系而必须更改的代码位数可以轻易地膨胀到数千个点,这些点分布在不同团队拥有的不同组件上。

[ 同样在InfoWorld上:每个开发人员都应避免的8个职业陷阱 ]

Sourcegraph不仅帮助开发人员了解重构的影响(通过让他们搜索并发现使用特定库函数的所有位置),而且还提供了一种执行重构并管理变更集和代码审查活动的设备。 Sourcegraph Campaigns是所有软件企业均可使用的第一个此类工具。 与Sourcegraph代码搜索类似,Campaigns支持新的Comby模式匹配语法 ,该语法比正则表达式更加用户友好和更具表现力。

原始图06 原始图

鼓励组织内的知识共享

现代软件团队合作共享代码的机构知识。 但是出于以下原因,讨论代码通常很困难:

  • 您无法共享指向在IDE中打开的文件的超链接
  • 传统的浏览器代码查看工具没有良好的代码导航

Sourcegraph提供了两全其美的方法:在Web界面中进行精确的代码导航。 这使得共享链接变得容易,接收者也可以立即开始探索和理解链接到的代码,而无需在本地IDE中将其上载的麻烦和磨擦。

原始图07 原始图

对于远程工程团队而言,代码链接共享变得更加重要。 每天通过聊天,问题跟踪器以及官方文档和Wiki共享Sourcegraph链接数百次。 这些成为知识的重要渠道,尤其是当不可能召集同事到办公桌前时。

[ 同样在InfoWorld上:如何停止讨厌吉拉 ]

它是开源的

Sourcegraph是开源软件。 问题跟踪器是公开的,团队对错误报告和功能请求非常敏感。 现代软件开发人员应出于对开放源代码库的青睐,而偏向于使用开放式工具:建立软件和团队的基础知识应向所有人开放,以使所有人都可以了解其工作原理并有助于改善它。

提高团队的整体生产力

一个软件项目如何落后一年? 一次一天。 Sourcegraph通过简化日常任务来帮助您的团队提前完成任务。 它使开发人员可以最大程度地减少上下文切换的影响,保持流程流畅,执行更快的代码审阅并找到诸如“如何使用此功能?”之类的问题的答案。 每天被问几十遍。 这些效率的提升Swift加起来。

推动组织范围内对新工具的采用

大多数Sourcegraph用户每天都会使用它多次,但是许多开发人员工具的使用频率却要低得多。 对于首席信息官和开发人员生产力总监来说,推动采用新工具可能是一个挑战。

可观察性和性能监视器,分布式应用程序跟踪器,代码覆盖率分析器-这些都是团队中的所有成员都不容易发现或访问的工具。

原始图08 原始图

Sourcegraph的扩展API使第三方工具可以将注释添加到Sourcegraph Web UI以及GitHub和GitLab等代码主机的UI中。 存在对流行的现成工具(如Codecov,Datadog和Sentry)的扩展,内部开发人员工具团队也可以为内部工具创建私有扩展。

[ 也在InfoWorld上:如何在敏捷软件开发中脱颖而出 ]

加快新工程师的入职

聘请新工程师可能会很困难,尤其是在工程组织或代码库很大的情况下。 Sourcegraph通过启用对现有代码的更快理解,缩短了从开始日期到首次提交的时间。 新员工经常将大部分时间花费在代码库的不熟悉部分上,以建立组织代码的思维模型。 Sourcegraph的通用代码导航使他们能够以最少的上下文切换来浏览整个代码库,并且共享链接的能力使他们可以提出特定的问题,而不会浪费高级工程师的时间。

减少事件响应时间

响应生产事件时,每一分钟都很重要。 通过在源代码中进行搜索,可以轻松地在源代码中查找错误消息,从而减少了引起问题的根本原因。 通常,错误消息源自上游依赖性,因此很难使用IDE或命令行搜索工具来查找。 Sourcegraph对与您的组织相关的所有代码进行索引,并使错误消息立即可发现。

Sourcegraph扩展API还支持将devops工具集成到Sourcegraph中。 例如,Sentry扩展程序显示特定仪器代码行正在生成的生产警报的数量。 在调试事件时,这提供了有价值的上下文知识。

原始图09 原始图

维护并传播代码质量标准

Sourcegraph使组织可以通过以下几种方式来维护和传播代码质量标准:

  • 高效而透彻的代码审阅以及Sourcegraph代码导航和工具提示,可防止合并质量较差的代码。
  • 可以通过Sourcegraph扩展API将自动代码质量检查器(例如Codecov)集成到代码审查中。 Sourcegraph将这些注释添加到现有的代码查看工具中。
  • 浏览器中的代码链接共享和代码导航使开发人员可以引用要模拟的模式示例,并建议不要使用反模式。

[ 通过InfoWorld的App Dev Report新闻通讯了解软件开发中的热门话题 ]

通过API将您的代码库公开为数据集

Sourcegraph公开了功能强大的GraphQL API。 内部开发人员工具团队使用该API来构建利用Sourcegraph功能(例如通用代码搜索,代码导航和代码统计信息)的内部工具。 访问令牌使受信任的工具可以安全地对Sourcegraph进行身份验证。 Sourcegraph附带了一个交互式API资源管理器,可以轻松学习和试验API。

原始图10 原始图

From: https://www.infoworld.com/article/3514213/sourcegraph-universal-code-search-and-intelligence.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值