ChatGPT与Gerrit的邂逅:或者说,我是如何学会不再担心并喜爱AI助手的。

Image generated by DALL·E from a prompt by the author

迟早会发生的事情。

而现在你来到这里,噩梦变成现实了:ChatGPT 已经进入了你的 Gerrit 服务器!

它的存在是为了指导您的编程技巧,关注细节,并始终不断地指导您,就像谢尔顿式的人物一样。

Image generated by DALL·E from a prompt by the author

......还是不?

实际上,一点也不。

实际上,使用Gerrit的ChatGPT就像处理任何其他强大工具一样——只要有效利用,它更可能是一个梦想而不是噩梦。

Image generated by DALL·E from a prompt by the author

动力

Gerrit是一个基于Web的用于Git仓库的代码审核和项目管理工具。它通过允许开发人员将他们的更改提交到一个中央服务器,为协作编码提供便利,其他人可以审核、讨论和最终批准这些更改,然后再将它们合并到项目中。这个过程使得多个人可以仔细检查每一行代码。

在Amarula,我们广泛使用Gerrit进行开发流程,利用其强大的代码审查和协作功能。鉴于其特点,我们得出结论,将Gerrit和ChatGPT配对已经是一个很好的组合。在我们对于提升代码质量和改善项目管理效率的不懈追求中,我们相信将ChatGPT整合到Gerrit中可以优化审查流程,并引入一个基于人工智能的额外维度。

作为一个虚拟的 Gerrit 用户,ChatGPT 应该被授权增强能力。

  • 提供见解和建议
  • 提供自动化代码分析
  • 回答开发人员的问题

控制是关键

说到工具,将梦想与噩梦分割开来的是“控制”。

牢记这一重要原则,对于特定的项目、用户、组和主题,赫里特管理员有能力选择性地启用 ChatGPT 评审功能是非常重要的。

开发人员紧紧掌握着控制权,如下所示的工作流程。

  1. 一个启用了ChatGPT审查功能的Gerrit Patch Set被提交到Gerrit服务器。
  2. ChatGPT 在 Patch Set 上提供初始见解,并在 Gerrit 用户界面中显示这些见解。
  3. 开发人员可以选择忽视或者实施这个见解。
  4. 开发者还可以决定在Gerrit UI中与ChatGPT继续对话,以获得额外的见解。

或者,开发者也可以使用Gerrit UI与ChatGPT开始任何对话,无论是关于一般讨论还是特定部分的修补代码。

所设计的Gerrit插件可作为开源项目在https://github.com/amarula/chatgpt-code-review-gerrit-plugin/上获取。

即将开始生产

这个倡议不仅仅是一次简单的实验。它是一个在真实的生产环境中经过严格测试的全面实施。这个实时测试场景为我们提供了一个黄金机会,通过实际反馈和对功能增强的需求来完善集成。

我们意识到现在是转入生产阶段的合适时机。让我们来看一下最终结果。

补丁集审核

ChatGPT作为一个警惕的监督者,会在选定的Gerrit项目提交PatchSets后进行审核。这个功能确保每个提交都经过初步的人工智能驱动分析,从一开始就确立了高质量和连贯性的标准。

ChatGPT’s insight on a patched code segment in Kotlin

在幕后,通过精心构建提示的方式,ChatGPT回答质量的提升之路得以实现。这一重要进展不仅涉及调整算法,而且侧重于理解开发者相互作用的微妙动态,并根据这些细微差别调整回答。

另一个功能允许检查提交消息与补丁集的更改的一致性,确保提交的叙述与实际修改保持一致。

ChatGPT’s insight on a Patch Set commit message

交互式协助

ChatGPT不仅仅是一个工具,更像是一个虚拟同事。它随时准备回应用户的询问,提供建议和解答疑虑。这一功能类似于有了另一个团队成员,总是可以提供见解和解释,就像一个知识丰富的人类同行。

可以直接从行内注释中开始与ChatGPT对话的能力为交互添加了一层活力。用户可以请求对代码特定部分的审查,甚至可以超出当前补丁集,并提出改进建议。这一功能本质上将一个按需的代码审查助手带入工作流中,只需点击一个按钮即可使用。

在下面的例子中,作者进一步探讨了如何实施ChatGPT建议的变更,展示了该功能的交互和响应能力。

ChatGPT’s interaction with the author on a patched code segment in Java

在接下来展示的示例中,ChatGPT被询问关于一种不直接与Patch Set中的更改相关的代码段的不同实现方法。

ChatGPT interaction with the author in response to an inquiry about a code line from a Python project

调整冗长程度

通过特别请求多个替代方案和代码示例,可以进一步增加冗长程度。

ChatGPT interaction with the author in response to an inquiry about a code line from a Python project

也可以就有关整个补丁集的更广泛问题进行提交。

ChatGPT answer to a broad query related to a Kotlin project

安全与隐私

最后但肯定不是最不重要的是,我们非常重视安全和隐私。

认识到代码保密至关重要的情况,我们引入了一个新的配置选项(gptFullFileReview)。当设置为false时,它将限制ChatGPT仅审查所做的更改,而不包括整个文件。这个功能确保敏感信息保留在组织的范围内,从而保护知识产权并遵守隐私标准。

结论

我们将ChatGPT集成到Gerrit中的探索突出了几个关键点:

  • 虚拟 Gerrit 协作者:我们已经讨论了将 ChatGPT 集成到 Gerrit 插件中的创新性整合,展示它不仅作为一个工具,更是发展过程中的虚拟合作者。
  • 控制与定制:我们强调了控制的重要性,允许Gerrit管理员有选择地为特定项目、用户、群组和主题激活ChatGPT,并使开发人员能够牢牢把握控制的权力。这确保了ChatGPT的见解与开发人员的需求相关且保持一致。
  • 互动和响应性的特性:该插件允许开发人员在初始洞察的基础上继续对话或独立启动新的对话,展示了其互动和响应性的特性。
  • 安全与隐私:在使用Gerrit中的ChatGPT时,我们共享了维护安全与隐私的最佳实践。

通过将ChatGPT集成到Gerrit中,我们旨在提升代码质量,简化项目管理,并在软件开发生命周期中引入基于AI的智能。此集成是迈向更加高效、协作和智能的编码环境的一步,凸显了我们在软件开发中创新和卓越的承诺。

对于对测试此插件感兴趣的任何人,包含快速入门指南的这篇文章的版本可在https://wiki.amarulasolutions.com/opensource/chatgpt-gerrit.html找到。

2024-01-30 04:20:17 AI中文站翻译自原文