您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[极狐]:2023中国企业研发高效能白皮书-Code Review篇 - 发现报告
当前位置:首页/行业研究/报告详情/

2023中国企业研发高效能白皮书-Code Review篇

信息技术2023-06-27极狐见***
2023中国企业研发高效能白皮书-Code Review篇

CodeReview篇,待调整 中国企业 研发⾼效能⽩⽪书 近年来中国企业研发正在从粗放型⾛向精益型,研发⼯作的“⾼效能”成为⼏乎每个研发团队共同的追求。 中国软件服务产业也在近5-10年中得到了⻜速发展,技术服务的边界不断拓展,赋能研发⾼效的产品层出不穷,适合中国研发环境的技术服务体系在不断完善。从结果上看,中国企业正在⾼效能研发的路径上快速前进。 本份报告以中国⾼效能研发企业为研究对象,尝试解读市场中具有代表性的⾼效能研发解决⽅案。本次报告由五个篇章组成,如CI/CD、企业级软件架构、研发效能管理等主题。研究⼩组期待可以通过研究,帮助中国企业研发团队获得⾼效能研发新知。 3 ⽬录CONTENTS CodeReview的定义与背景04 CodeReview的定义05 CodeReview的价值与挑战07 CodeReview发展现状13 CodeReview发展历程14 CodeReview⼯具市场的参与者16 极狐GitLabCodeReview的特征与优势18 CodeReview最佳实践23 中海庭24 ⻬碳科技26 智众医疗27 CodeReview的定义与背景 5 CodeReview的定义 CodeReview(也称代码评审)是软件开发中对编写的代码进⾏检查、评审和修改的过程。它是软件开发中⼀项⾮常重要的质量保证⼯作,可以帮助程序员发现潜在的错误、漏洞和缺陷,提⾼代码质量,降低软件维护成本和运⾏⻛险。 6 “让⾕歌的代码如此出⾊的最重要的因素⾮常简单:CodeReview。并不只有⾕歌在做这件事——业界⼴泛认为CodeReview是 ⼀种⾮常好的做法,并且很多企业也都在做。但我从未⻅过其他⼤公司如此普遍地实⾏这 ⼀做法。在⾕歌,任何产品、任何项⽬的代码,都不会在有效的评审之前被提交到代码库⾥。” ——MarkCC,前⾕歌开发者 “CodeReview的好处是显⽽易⻅的:有⼈会仔细检查你的⼯作是否有错误,反过来,他们也可以从你的解决⽅案中学到东⻄。这样的合作有助于提⾼组织整体的⾃动化⽔平。如果你的组织⽬前没有进⾏CodeReview,那么现在就开始吧。这会让每个⼈都成为更好的⼯程师。” ——GergelyOrosz,优步⼯程主管 CodeReview 7 CodeReview的价值 的价值与挑战 使⽤正规 CodeReview的项⽬,发现潜在缺陷率约在 60-65% 发现率⾼ ⾮正规的CodeReview流程能发现的潜在缺陷不到 50% 远低于正规CodeReview CodeReview可以找到 并且移除的错误约 65-85% 移除率⾼ CodeReview发现的各种缺陷类型中 50% 与安全隐患有关 降低安全隐患 数据来源: C.EbertandC.Jones,“Embeddedsoftware:Facts,figures,andfuture.,”IEEEComputer,vol.42,no.4,2009. 8 CodeReview的价值 02提升团队能⼒,实现知识流转 CodeReview的⼀个重要功能就是可以让知识在团队 ⾥⾼效流通。 01 沉淀⾼质量代码资产 •降低后期成本 CodeReview可以在代码合并前,有效地检查出代码漏洞并及时修复。这在很⼤程度上,可以降低后期修复问题的难度与维护代码仓库的成本。 •通⽤代码沉淀 通⽤算法和数据结构复⽤,提⾼整体开发效率。 助⼒开发者快速成⻓开发者可以收到⾼质量的反馈并及时调整问题, 从中快速成⻓并得到良好的实践体验。 助⼒开发者融⼊团队可以在拉⻬团队技术认知的同时,帮助新加⼊ 的开发者快速融⼊团队。 9 实施CodeReview的挑战 01企业⾯临的挑战 缺失的CodeReview CodeReview是⼀种通过及早发现并解决代码中的潜在问题从⽽保证代码质量的最佳实践。 代码提交CodeReview合并主分⽀ 在实际研发过程中,由于缺乏⾃动化⼯具,或者业务难以忍受⼈⼯CodeReview带来的额外成本,企业可能会选择直接忽略CodeReview环节,等到问题暴露再进⾏返⼯。 流于形式的CodeReview 这种研发模式下,企业是推崇CodeReview的,但是缺乏有效的流程将CodeReview强制执⾏起来。因此经常会出现: 直接通过:评审者时间不充 ⾜或者碍于“⾯⼦”,很有可能直接进⾏合并操作。 ⾃⾏合并:如果找不到评审者,⽽开发者有合并权限,则会出现⾃提⾃合的情况。 在这种情况下,CodeReview往往流于形式,很难真正实践落地,发挥作⽤。 10 实施CodeReview的挑战 01企业⾯临的挑战 低效的CodeReview •缺少数据⽀撑的CodeReview 缺乏来⾃测试、安全扫描、规范扫描等报告数据⽀撑的CodeReview,容易耗费评审者较⻓的时间,既难以满⾜业务对于CodeReview的时间要求,同时也增加了安全⻛险。 •单⼀评审者的CodeReview 虽然部分企业建⽴了CodeReview环节,并且需要评审者进⾏评审以后代码才可以合并,但是评审环节只能指定单⼀评审者,⽆法同时指定多个评审者。这导致对于⼀些重要的代码,单⼀评审者模式很难对变更代码进⾏多⽅位和全⾯的评审,可能会漏掉⼀些代码缺陷。 11 实施CodeReview的挑战 02评审者⾯临的挑战 ⼯作难以平衡 CodeReview常常需要评审者花费额外时间。如果时间不够充裕,就会导致评审者CodeReview不够彻底或敷衍处理。 CodeReview 本职⼯作 如何⾼效沟通 在进⾏CodeReview时,如果评审者与开发者的沟通⽅式不当,可能会对同事之间的关系产⽣负⾯影响。因此,评审者需要尽量展现善意并避免负⾯词汇的使⽤,以确保能够有效地提供有建设性的反馈,同时保持良好的团队合作氛围。 12 实施CodeReview的挑战 03开发者⾯临的挑战 •选择合适的评审者 01 CodeReview经常涉及协同更⾼级别的开发者。这对于⼀些经验不够丰富的开发者⽽⾔,如何选择合适的评审者往往会成为整个评审流程能否顺利推进的重要原因。 •如何推动及时评审 02 当需要将评审发送给更⾼级别的多位开发者时,更低级别的开发者经常⾯临⽆法按时推进流程的挑战。因此,如何有效地推动评审流程成为⼤部分初级开发者⾯临的重要挑战。 •理解并接受建议 03 评审者和开发者的技术背景及经验可能不同,这可能导致双⽅在沟通和问题理解上存在障碍。在这种情况下,开发者需要尽可能清晰地表达⾃身的想法,并充分理解评审者的意⻅和建议。 CodeReview发展现状 14 CodeReview发展历程 在CodeReview的整体发展过程中,企业对CodeReview的要求在逐渐增⾼,CodeReview⼯具也在使⽤需求变化与技术迭代下,不断改进和升级。 阶段⼀:初始 开始于线下审查:CodeReview与编程相伴⽽⽣。CodeReview最初的形式为线下审查或结对编程。 线下审查流程 代码打印纸笔修改⾯对⾯沟通和指导确认后合并 虽然效率相⽐于现在低很多,但⼀些企业仍在积极推⼴,⾜以看出CodeReview的重要性。 电⼦邮件开始承担代码传输功能:随着电⼦邮件的兴起,邮件开始承担起代码传输的功能。 变更代码发送修改建议反馈代码合并 阶段⼆:数字化 CodeReview⼯具出现:在2000年左右,随着正式CodeReview⼯具的出现,邮件的使⽤频率逐渐下降,并逐渐不再承担代码传输功能,⽽是更多地⽤于公告和讨论。这个时期的CodeReview⼯具通常包括代码静态分析、代码⻛格检查、代码重构建议等功能。 版本控制系统通知变更内容 电⼦邮件承担讨论交流功能 开发团队通过电⼦邮件讨论 (问题讨论、进⼀步修改) 确认后合并 15 CodeReview发展历程 阶段三:集成化&⾃动化 2006年开始,CodeReview⼯具逐渐出现集成化与⾃动化的趋势,对于CodeReview的关注度也有⼤幅地增加。 CodeReview前移:CodeReview与开发环境⾼度集成,以便在变更代码合并到主代码库之前启动CodeReview。这可以减少⼤量重复性劳动,并且帮助评审者更专注于⼈⼯检查更为关键的地⽅。 要求减少重复性劳动: •确认构建是否成功 •确认是否通过了⾃动化测试 •确认编写⻛格是否符合团队 专注于⼈⼯检查更为关键的内容: •业务逻辑是否合理 •功能是否正确实现 •代码是否⾜够可读与可扩展 电⼦邮件开始承担代码传输功能:随着电⼦邮件的兴起,邮件开始承担起代码传输的功能。 阶段四:智能化 CodeReview⼯具出现:2021年以后,随着⼈⼯智能技术的积累与爆发,⼯具开始集成机器学习和⾃然语⾔处理等⼈⼯智能技术,来提⾼CodeReview的准确性和效率。 智能CodeReview⼯具兴起:智能化的CodeReview⼯具市场也会随软件开发的普及和需求的增⻓⽽扩⼤。这些⼯具将越来越受到开发者和企业的⻘睐,并成为软件开发过程中不可或缺的⼀部分。 CodeReview⼯具主要分为独⽴CodeReview⼯具和⼀站式 CodeReview⼯具。 以Gerrit、Crucible为代表的独⽴CodeReview⼯具 以极狐GitLab、GitHub为代表的⼀站式CodeReview⼯具 16 CodeReview⼯具市场的参与者 独⽴CodeReview⼯具 ⼀站式CodeReview⼯具 17 独⽴CodeReview⼯具 以Gerrit为代表的独⽴CodeReview⼯具,在传统的源码管理协作流程中引⼊了CodeReview机制:通过⼈⼯评审和⾃动化验证,将不符合要求的代码屏蔽在代码库之外。此外,还可以通过多⼈校验、多⼈互备和⾃动化构建核验来进⼀步保障核⼼代码的质量和可靠性。 由于独⽴CodeReview⼯具不具备完整的开发集成⽣态,在开发的便利度上相对于⼀站式CodeReview⼯具⽽⾔有所不⾜。 ⼀站式CodeReview⼯具 01⾼功能灵活度和定制化程度 通过使⽤⼀站式CodeReview⼯具: 02内置了丰富的代码扫描⼯具 数千⼯程师⼯作时间节省 ⼩时 03相关问题直接展示 例如,极狐GitLab还可以将扫描出的问题在合并请求的界⾯上直接展示出来,让开发者先⾃⾏修复,这有助于提⾼评审效率并树⽴开发者信⼼。 20% 30% 60% 代码质量感知提升CodeReview过程优化CodeReview时间节省 极狐GitLabCodeReview 的特征与优势 18 深度嵌⼊⼯作流:标准化研发流程,代码⼯作质量前置 ⾼度定制化评审:更专注,更⾼效 19 深度嵌⼊⼯作流:标准化研 发流程,代码⼯作质量前置 极狐GitLab⼀体化DevOps平台,将CodeReview融⼊到JiHuFlow中,不仅能够⼤⼤减轻评审者的⼯作量,还能够缩短整个CodeReview周期,⾼质量完成企业代码质量内建,并且提升研发效率,同时通过硬性规定实现CodeReview,助⼒企业形成CodeReview⽂化。 CI 提交Pipeline更改运⾏ CodeReview前置 应⽤检查 Feature 批准更改 创建合安全讨论、编程、合并、议 并请求扫描安全审查题关闭 Main 创建议题 CD 监控应⽤⽹络 Pipelineapp环境安全 运⾏防护 极狐GitLabCodeReview前置于代码合并,在功能上线前完成评审 保证安全,提升效率 ⼀体化DevOps平台能够让代码变更、CI/CD、CodeReview和合并等操作⽆需在多个⼯具之间来回切换。 适配不同⼈员需求 新的合并请求 ⾃动创建独⽴实时的测试环境 展示该合并请求所带来的变化 01避免了数据孤岛的问题。 开发者 02 有效降低了因认证授权等带来的安全⻛

你可能感兴趣

hot

中国企业研发高效能白皮书-CI/CD篇

信息技术
InfoQ研究中心2023-01-04
hot

中国企业研发高效能白皮书-ChatOps篇

信息技术
InfoQ研究中心2023-02-22