当前位置: 首页 > 科技观察

这篇文章告诉你为什么代码提交需要关联需求和任务信息

时间:2023-03-21 01:26:53 科技观察

记得有一次听开发同学抱怨为什么每次commit都要填写commitmessage?他觉得这样很浪费时间,于是想出了各种办法来处理,比如打个句号,或者复制粘贴之前的commitmessage。这种懒惰会给其他合作开发伙伴带来很多麻烦。这些看不懂的commit消息不仅不能代表每次代码提交的目的,反而会成为垃圾邮件,干扰团队。gitcommit-m"."但是现在很多开发团队通过约定代码提交规范来约束提交信息的规范化,比如必须包含类型(新特性,修复bug,或者添加测试等)和主题(提交代码的简短描述)信息。gitcommit-m"feature:userqueryinterfacedevelopment"可以看到在代码提交信息中增加了目的描述,使代码的功能通过文本明确展示。比如你看提交信息就可以知道这段代码是开发一个新的需要的功能,而不是一行一行的浏览代码去理解它的意思。另一种方法是直接将代码提交与需求、任务或缺陷相关联。以GitHub为例,需求和缺陷都可以通过issue进行管理,每次在代码提交信息中只需要输入issue的ID,如下:gitcommit-m"#10issueid"也可以传入commit信息输入close等命令修改issue状态,??如下:gitcommit-m"close#10issueid"直接通过git命令关闭issue:为什么代码提交需要关联需求和任务信息看到这里,想你了你可能会问:为什么每次提交代码都要查IssueID,能带来什么好处?简单介绍一下:1.研发过程资产的可度量代码是非常重要的研发过程资产,其原始状态是一种非结构化的数据信息,无法直观地与项目或需求相关联进行管理。读者关心的问题。如果没有良好的数据管理和衡量机制,管理者只能通过开会和沟通的方式从一线工程师那里获得一些主观的描述。需求和任务的工作量,细化到需求和任务维度的代码质量和风险等数据,这些数据对于项目评审、资源评估、质量和风险评估等都是非常重要的参考。通过关联提交信息中的需求和任务ID,可以得到如下数据:以上是基础数据的汇总计算,可以得到需求和任务维度的代码复杂度、代码等价、测试覆盖率等数据也一一介绍。2.细化代码质量风控质量风控都需要投入成本,通过实现代码、需求、任务的关联,可以设计更细粒度的质量风控策略,防范早期质量风险、中期风险发现和后期的问题审查可以大大减少成本投入。目前大家热议的精准检测的方法就是基于这个策略。在设计测试策略时,可以根据需求划定代码变更的范围,然后针对一定范围的代码变更设计高覆盖的测试策略,避免全量测试带来的问题。执行测试用例的高成本。此外,代码扫描、单元测试、代码审查等质量卡点可以与需求和任务的流态关联,让需求和任务的内置质量和测试左移。3.开发者角度的收益如果你是一线工程师,看完以上两个收益,你肯定会觉得这是管理需求,那么站在工程师的角度你会得到什么收益呢?(1)减少一些研发绩效衡量的额外工作。研发绩效衡量需要衡量需求在每个阶段停留的时间,比如开发时间。比较传统的做法是要求R&D同学开始写代码。更新需求和任务的状态,编写并提交测试后更新状态。这些重复性的任务还是需要很多时间的,所以通过建立需求任务和代码提交的关联,可以通过代码提交等事件自动触发需求和任务状态的流转,这样对应的开始时间也可以自动设置和结束时间自动记录,便于高效准确的研发绩效衡量。(2)逐步从基于代码的技术视角扩展到关注需求价值的全局视角。由于管理者和业务方更关注需求价值和项目交付进度,一线研发工程师往往更关注技术细节,这很容易给管理者带来问题。业务视角获取的信息与工程师视角的分离,比如作为研发负责人,急于遇到紧急项目或需求,而作为一线工程师,沉浸在自己的代码世界中,不知道为什么。然后,通过代码提交和需求任务的关联,开发工程师可以在关注代码本身的同时,在代码仓库层面或版本上总结需求和完成的开发任务的价值,从而更加关注业务价值。观点的结合促进了技术职业更好的发展。代码关联需求和任务的功能扩展上一篇文章只介绍了命令行提交代码时如何关联需求和任务信息。要带来更多的好处,仅此功能是不能完全满足的。完整的功能一般是配合协作工具完成的。例如Jira实现了需求/任务与开发分支的关联,也可以在在线创建分支的同时配置工作流触发需求/任务的状态变化(进入开发状态)。).下图为需求/任务卡片详情页的开发信息展示。可以看到关联了一个开发分支,点击该分支可以进入代码库的分支详情页面。》功能扩展建议:在需求/任务已经关联到一个代码分支的前提下,可以通过规则设置自动关联该分支下的所有代码提交,这样就不用在里面填写需求和任务ID了每个Commit信息信息。目前很多协作平台不仅可以实现提交信息与分支、需求/任务的关联,还可以关联代码库的合并请求,还可以将需求/任务与测试流程资产关联,有两种具体实现方式:一是在协同平台的需求/任务卡片上手动选择需要关联的信息,二是通过代码仓库、等第三方工具平台主动上报关联信息。测试管理系统需求和任务信息结语虽然代码提交关联需求和任务的作用不大,但养成确实是一个好习惯,在此基础上,会逐步实现更丰富的代码流程资产与需求的关联和任务,从而为绩效衡量、质量和风险控制等提供更多便利。研发效率提升包括两个层面。一是环境部署、测试等单点任务的性能提升;数据可视化使专注于需求和任务的角色成员与专注于代码的工程师之间能够更好地协作。