Help us understand the problem. What is going on with this article?

DangerとGitHub suggested changesを使ってレビューコストを減らす

More than 1 year has passed since last update.

Suggested changesとは

GitHubにはSuggested changesという機能があります。
これはPull Requestのコメントの形で変更を提案して、PR上でその変更を簡単に反映できるものです。

image.png

  • suggestionのマークダウンを記述することで、対象の行に対しての変更の提案ができます。
  • 複数行に対しては現在できないようです。
  • 逆に提案は複数行にすることができます。

Dangerと組み合わせる

No newline at end of file

No newline at end of fileというメッセージを一度は見たことがあるかと思いますが、これをsuggested changesを使って簡単に修正できるようにします。

image.png

Dangerfile

実装したDangerfileの例です。
gitのdiffからテキストファイルを抽出して、最終行が改行で終わっていなければsuggestするようにしています。

Dangerfile
require "open3"
def text_file?(filename)
  file_type, status = Open3.capture2e("file", filename)
  status.success? && file_type.include?("text")
end

files = (git.added_files + git.modified_files)
  .select { |file| !file.include?(".idea") && text_file?(file) }
targets = []
files.each do |file|
  lines = File.readlines(file)
  last_line = lines.last
  next if !last_line
  targets.push({ file: file, line: last_line, line_num: lines.size }) if !last_line.end_with?("\n")
end

targets.each do |target|
  markdown("```suggestion\n#{target[:line]}\n\n```", file: target[:file], line: target[:line_num])
end

結果

このような感じでEOFに改行がない場合、Dangerがサジェストしてくれるようになります。

image.png

ちなみにCommit suggestionはPR作成者しか押すことができないので注意してください。

まとめ

レビューのコストを減らすDangerと修正コストを減らすSuggested changesを組み合わせることで、レビュー全体のコストを減らすことができるのではないかと思います。
今回紹介した方法以外にも、各種Lintツールによる自動修正など、いくつか活用方法がありそうな気がするので、ぜひ応用してみてください。

kubode
wantedly
「シゴトでココロオドル」ためのビジネスSNS「Wantedly」の開発・運営をしています。
https://wantedlyinc.com/ja/presentations
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした