Created
August 17, 2019 05:20
-
-
Save xlune/51e38d874a91b3598a8fef97f0691c7c to your computer and use it in GitHub Desktop.
Danger-JSのルールセットファイル
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* dangerfile.js | |
* Danger-JS: https://github.com/danger/danger-js | |
*/ | |
import { danger, fail, message, warn } from 'danger' | |
const limitDiffSize = 500; | |
const limitFileCount = 10; | |
const failArr = []; | |
const warnArr = []; | |
const _fail = (message) => { | |
failArr.push(message); | |
fail(message); | |
} | |
const _warn = (message) => { | |
warnArr.push(message); | |
warn(message); | |
} | |
/** | |
* 変更が必須、または推奨される項目 | |
*/ | |
// WIP判定(タイトル先頭に`[WIP]`がある場合。若干空白を許容する) | |
if (/^ *\[ ?WIP ?\]/i.test(danger.github.pr.title)) { | |
_warn( | |
`このPRは作業進行中(WIP)です。マージしないように注意してください。` | |
); | |
} | |
// 担当者がセットされていない場合は警告 | |
if ((danger.github.pr.assignees || []).length === 0) { | |
_warn( | |
`担当者が設定されいません。忘れずに設定してください。` | |
); | |
} | |
// レビュアー必須、複数の場合は警告 | |
const reviewers = danger.github.requested_reviewers; | |
const reviewersCount = (reviewers.users || []).length + (reviewers.teams || []).length; | |
if (reviewersCount === 0) { | |
_fail(`レビュアーがいません。忘れずに追加してください。`); | |
} else if (reviewersCount > 1) { | |
_warn( | |
`多くのレビュアーがいるのは素晴らしいことです。ただし、個々のレビュアーの担当意識が低下することに注意しましょう。` | |
); | |
} | |
// マイルストーンがセットされていない場合は警告 | |
if (danger.github.pr.milestone === null) { | |
_warn( | |
`マイルストーンが設定されいません。設定して進捗を確認しやすくしましょう。` | |
); | |
} | |
// 指定行以上の差分がある場合、警告を出す | |
const diffSize = Math.max(danger.github.pr.additions, danger.github.pr.deletions); | |
if (diffSize > limitDiffSize) { | |
_warn( | |
`変更箇所が${limitDiffSize}行を超えています。可能であればPRを分割しましょう。` | |
); | |
} | |
// 指定個以上のファイルを編集している場合、警告を出す | |
if (danger.github.pr.changed_files > limitFileCount) { | |
_warn( | |
`変更ファイルが${limitFileCount}ファイルを超えています。可能であればPRを分割しましょう。` | |
); | |
} | |
/** | |
* アチーブメント項目 | |
*/ | |
// 無駄なコードを削れた場合 | |
if (danger.github.pr.deletions > danger.github.pr.additions) { | |
message( | |
`素晴らしい!より多くの無駄なコードを減らせましたね。ありがとう!` | |
); | |
} | |
// 問題が一つもなかった場合 | |
if (failArr.length === 0 && warnArr.length === 0) { | |
message( | |
`未対応の問題はありません。お疲れさまです。` | |
); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment