首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何扩展代码评审

如何扩展代码评审
EN

Software Engineering用户
提问于 2020-09-27 22:24:09
回答 8查看 749关注 0票数 4

我的老板说我们应该找到一种方法来扩展我们公司的代码评审。就像现在一样,我们有大约16名软件开发人员分散在4个不同的团队/团队中,但很快公司将达成一项协议,这将使公司规模翻一番。有了它,我们最终会有几十个开发人员。他建议我检查一下自动化工具,比如这个:https://www.freecodecamp.org/news/how-to-automate-code-reviews-on-github-41be46250712/,但是我特别不喜欢自动化工具,因为:

  • 他们不理解上下文来检查变量/方法名称是好的、坏的,甚至是违反直觉的。
  • 他们无法判断所选择的建筑是否被遵循
  • 开发人员可以决定忽略机器注释(例如,PyLint,即使我们有它,每个人都忽略它)
  • 其中有些是有成本的
  • 其中一些(就像我提到的那样)需要对存储库/github组织进行特殊访问,而我没有这样的权限。

我们使用Python (主要是)、Lua和Go,以及开发人员(通常在公司)工作,尽管每个人都认为代码评审有价值,但大多数人只是执行“快速视图”,比如LGTM,而2或3(包括我在内)则喜欢唠叨可能出现的bug和改进。那么,你们建议如何扩展代码评审呢?微软、谷歌、亚马逊、甲骨文等大型公司如何与数十/数百名开发人员进行代码评审,让人们真正关心代码评审?创建一个像游戏平台/领导委员会这样的东西是否值得(也许有奖励)?

EN

回答 8

Software Engineering用户

发布于 2020-09-27 22:53:55

首先要接受的是,您不能完全自动化代码评审。但是,您可以在不同程度上自动化评审的特定方面,以减轻对审核人员的压力,并让他们专注于无法自动化的事情。使用链接找到(并希望纠正)风格问题。静态分析工具可以突出显示安全性或性能问题、未使用的代码和其他潜在问题。根据工具的不同,开发人员可以在打开代码评审之前在本地运行这些工具,或者可以将它们合并到您的构建过程中,使代码审阅者可以使用报告,甚至导致生成失败。取决于您的技术,可能会有各种解决方案,其中一些是免费的开源软件,另一些则是商业产品。

一旦实现了自动化,您的人就可以专注于系统的体系结构和设计以及代码的可读性等问题。这也将需要文化上的转变。快速检查可能还不够。尽管工具可以找到一些问题,但人类仍然需要花费大量的时间阅读代码并提出问题。我发现在评审中使用更高质量的代码是有帮助的,这无助于改变人们的态度。每个人都应该对团队和组织的代码评审的预期结果或目的保持一致。

票数 6
EN

Software Engineering用户

发布于 2020-09-28 03:10:13

大多数情况下,你通过让每个人对他们所写的每个拉请求检查一个拉请求来进行缩放。自动化工具并不能取代人工评审者,但是他们让人类关注更重要的事情。

如果你是一个在评论中经常有更多话要说的评论者,你可以通过评论的级别来衡量。我对我自己的团队(目前有3名其他开发人员)进行了全面的回顾。对于其他团队编写的拉请求,我查看所有的标题,但任何与例行的标题,我忽略了。一些标题值得快速浏览拉请求,而一些快速浏览则需要更深入的回顾。任何我没有深入复习的事情,我都会留给别人去批准。

这个系统让我每天在自己的团队之外有一两次评论。除此之外,是的,偶尔挑剔的事情会被错过,但大多数情况下,你是在判断你的时间花在哪里。

票数 4
EN

Software Engineering用户

发布于 2020-09-28 20:53:29

问问自己这个问题--代码审查阶段的意义是什么?

以下是一些可能的答案..。

  1. 为了确保代码的一致性--使用CI/CD管道中的自动代码链接器,并拒绝不遵循项目样式指南的代码提交。不需要人类。
  2. 审查实施方法-在过程中太晚了。您希望进行设计评审,并进行跟踪,以确保实现遵循设计。代码评审阶段发生在工作结束时,因此修复实现/设计差异的成本很高。
  3. 识别代码嗅探-这些是可以被良好的代码分析器识别的。在CI/CD管道中实现这一点,并在未解决这些问题的情况下失败构建。要求将所有豁免作为设计审查的一部分进行审查。
  4. 培训/指导练习-当某人在完成任务前开始表现出能力作为最终评审时,这是有一些好处的,但这应该只需要在一段时间内的变化中占一小部分。

简而言之,如果公司愿意花费工程上的精力来集成工具,那么在代码评审中的人工工作量就可以减少。

票数 3
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/416304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档