这是一篇分享我如何在命令行下做 code review 的短文。
我希望可以在命令行下完成 code review, 在浏览器、GUI 中看代码总归没有 vim 中舒服。
主要用到两个工具:
看代码这事总归是编辑器更在行。
比如说,用 vimdiff 来 review 代码改动时, 我们可以跳转定义、切分窗口、缩放窗口、就地添加修改意见等等, 方便做比对、检查确认,总之可以享受编辑器中已有的一切功能。
而且,一些改动在浏览器里是 “看不到” 的,比如 ^M
、空格和 tab 等。 相比之下,浏览器里 review 就 “蹩脚” 的多了。
diffview 插件给 vimdiff 添加了一个侧边栏, 以一览所有改动点。
gh 是 Github 官方的命令行客户端,它可以把 Pull Request 抓下来, 也可以提交 code peview 结果、创建 Pull Request 等,而不必离开终端。
结合二者,我的 code review 工作流大概是:
抓取远程 Pull Request , 切换到新分支:
gh pr checkout <pr-number>
打开 nvim,进入 diffview, 和主分支
master
进行比较:nvim -c "DiffviewOpen master... --imply-local"
Review 代码,同时直接在代码中编辑修改意见。
// REVIEW: 修改意见 XXXXX if (ch) dst[0] |= ((ch >> si << di) & ~(0xff << di << c));
将修改意见,提交到 PR 评论。
先将 diff 复制到剪切板:
git diff | pbcopy
再提交到评论:
gh pr comment -e
-e
参数以调起编辑器写 PR 评论,将改动内容粘贴到一个代码块内:LGTM, 但是有一些小意见: ```diff diff --git a/lib/c/bitproto.c b/lib/c/bitproto.c index d5d0d8b..ce73a66 100644 --- a/lib/c/bitproto.c +++ b/lib/c/bitproto.c @@ -272,6 +272,7 @@ void BpCopyBufferBits(int n, unsigned char *dst, unsigned char *src, int di, // benchmark on stm32 seems performance is improved by 2us by adding // an if statement that skip the Zero byte. unsigned char ch = src[0]; + // REVIEW: 修改意见 XXXXX if (ch) dst[0] |= ((ch >> si << di) & ~(0xff << di << c)); } ```
如果标注很多,可以考虑直接对此 PR 远程分支提一个新 PR,其改动项就是 review 内容。
我其实觉得这个思路蛮好,也以提新 PR 的形式来 Review.
git add . git commit -m "Review comments" gh pr create
稍微一提,gh
支持扩展,我在用的一个是 gh prs, 此自定义命令会调用 fzf 来模糊搜索所有 pull requests, 选中后即切换到对应分支。
(完)
相关阅读: 我的命令行开发环境 ❤️
本文原始链接地址: https://writings.sh/post/code-review-by-nvim-diffview