显著改善GitHub中代码审查的工具和集成
在这篇文章中,我们将考虑五个可以显著改善GitHub中代码审查体验的工具和集成。
作为软件工程师,我们喜欢自动化。然而,代码审查往往是一个相当手动的过程,占用了我们大量的时间。我们该如何改进呢?有很多有效进行代码审查的技巧和窍门,所以我们不会在这里讨论这些。相反,让我们把重点放在我们可以自动化的代码审查部分。
在这篇文章中,我们将考虑五个工具和集成,它们可以显著改善你在GitHub中的代码审查体验。
1.Travis CI 或 CircleCI
首先,我们来谈谈持续集成(CI)。为你的仓库设置CI是实现代码审查过程自动化的第一步。有了CI管道,你可以运行任何你想要的东西至少,你应该让你的CI管道包括格式化、提示和单元测试的工作。你也可以考虑为构建工件、部署审查应用程序或运行端到端测试创建额外的工作。
持续集成可以帮助你在任何时候都保持你的主分支处于良好状态。它还可以通过处理所有计算机擅长而人类不擅长的繁琐事情来加速你的代码审查过程:在代码审查过程中不再为代码风格或最佳实践而争论不休了有了CI管道,你可以对你创建的每个新的拉动请求进行自动检查。
Travis CI和CircleCI都是持续集成的优秀选择。两者都允许你使用YAML文件来配置你的CI管道,使你能够把你的基础设施写成代码。在YAML文件中,你可以指定使用哪个Docker镜像,运行哪个版本的Node,以及遵循哪些安装和构建步骤。
最重要的是,Travis CI和CircleCI对开源项目是免费使用的。
2.Jest和Codecov
接下来,让我们看一下测试覆盖率。单元测试很重要。它们有助于防止回归,作为你的代码库的活的文档,并使你能够自信地进行修改。
测试在CI管道中是很容易执行的。如果任何测试失败,那么测试工作就会失败,拉动请求就会被阻止合并,直到测试被修复。
重要的是,不仅你的测试要通过,而且你的代码覆盖率也要高。如果测试只覆盖了代码库的20%,就不能合理地保证其他80%的代码库在进行任何特定的修改后处于良好状态。更高的代码覆盖率意味着更少的错误隐藏的地方。
像Jest这样的测试框架允许你收集代码覆盖率的结果,也可以强制执行某些代码覆盖率的阈值。如果你想让这些覆盖率报告更进一步,你可以在你的CI管道中添加一个像Codecov这样的工具。
Codecov将Jest生成的数据转化为报告,你可以在你的拉动请求中在线查看。Codecov可以让你了解每个拉动请求如何影响整体覆盖率,覆盖率是增加还是减少,以及哪些文件受到影响。Codecov很容易集成到你可能使用的任何CI工具中,无论是Travis CI、CircleCI、GitHub Actions、GitLab CI、Jenkins,还是其他什么。
此外,Codecov还可以免费用于开源项目。
3.SonarQube和SonarCloud
第三,我们来讨论一下静态分析检查器。像ESLint这样的Linters是任何项目的必备工具。Linters对于强制执行最佳实践和商定的编码风格非常好。
像SonarQube这样的静态分析工具,除了正常的Linter可以找到的东西,还可以提供额外的见解。SonarQube可以帮助识别代码气味、代码复杂性、代码重复和安全问题。
SonarQube可以作为一个自我管理的服务运行,或者你可以作为SonarCloud在云中运行。你也可以将SonarQube集成到你的CI管道中,这样它就可以在你的拉动请求上发表评论。
Sonar为企业公司和开源项目都提供了解决方案。像我们到目前为止讨论的其他工具一样,SonarQube和SonarCloud对开源项目是免费使用的。
4.CodeSee审查地图
第四,让我们来探讨一下如何将我们的代码库和我们在拉动请求中所作的修改可视化。如果能知道每个改变的方法或文件是如何影响应用中的其他功能的,那不是很好吗?
CodeSee Review Maps可以帮助你直观地了解哪些文件被修改了,以及这些修改对上游和下游的依赖关系有何影响。通过与GitHub repo的集成,CodeSee可以在每个拉动请求上自动发布评论和图示。
CodeSee审查图在拉动请求上的例子
CodeSee让你更容易按照逻辑顺序浏览修改过的文件,而不是仅仅按照字母顺序查看它们。它甚至可以让你--作为代码作者--创建你的代码的交互式导览,让审查者了解你的改动。
另外--你猜对了--CodeSee审查地图对开源项目是免费使用的。
5.GitHub行动
第五,如果我们不提GitHubActions,这就不是一篇关于在GitHub中实现代码审查自动化的文章。
GitHub Actions 允许你创建任何你能想象到的工作流程。这些工作流程可以作为作业或检查在 GitHub 中运行,因此它们的功能与其他 CI 工具(如 Travis CI 或 CircleCI)相似。
作为CI管道的一部分运行单元测试的GitHub Actions示例
GitHub 动作市场是寻找开源动作的好地方,可以在你的项目中使用。你可以按照 "代码质量"、"代码审查 "或 "持续集成 "等类别过滤结果。
作为一个预告,这些类别中吸引我注意的几个有趣的动作是语义拉取-请求和自动-数据库动作。
语义拉取请求(semantic-pull-request)动作 "确保你的PR标题与常规提交规范相匹配",如果你压制和合并你的拉取请求,然后在发布过程中依靠这些提交信息来实现进一步的自动化,这就非常有用。
Automatic-rebase动作允许你只需在你的拉动请求上评论/rebase
,就可以重新设置你的提交:重新设置变得很简单
有了GitHub Actions,我们就可以实现所有的自动化了而且--剧透一下--GitHub 动作在公共仓库中是免费使用的。
结论:改善GitHub代码审查的五个工具
总结一下,以下是改善GitHub中代码审查体验的五个工具:
- Travis CI 或 CircleCI (用于持续集成)
- Jest 和 Codecov(用于代码覆盖率)
- SonarQube和SonarCloud(针对代码气味和安全问题)
- CodeSee Review Maps (用于绘制代码图)
- GitHub行动(用于其他一切)
谢谢你的阅读,祝你编码愉快!