cocoa-mhlw / cocoa

Mozilla Public License 2.0
990 stars 113 forks source link

ライセンス通知の自動付与ツールを作成する #255

Open Takym opened 3 years ago

Takym commented 3 years ago

その機能リクエストは何らかの問題に関連しますか

本リポジトリではファイルの先頭にライセンス通知を記述する決まり(#80)になっていますが、書き忘れてしまう事も少々あります。例えば DateTimeUtility.cs (#229) 等があります。 https://github.com/cocoa-mhlw/cocoa/blob/b185621f4ba09ebe549811541e0d93828689f93c/Covid19Radar/Covid19Radar/Common/DateTimeUtility.cs#L1-L18

解決策についてお書きください

236 (Windows版)、#237 (Linux版) により既に解決策となる PR が作成されています。

あなたが考える代替案についてご説明ください

今のところは特にありません。

その他

keiji commented 3 years ago

ありがとうございます。 最終的にはツールで自動化したいですね。一方、PreCommitでコードを強制的に変更するスクリプトには経験上、抵抗があり、ライセンス通知を追加する頻度を考えれば、手動で実行する方向で考えています。そういう意味では #236 #237 どちらもあって良い感じです(動作仕様は統一しないといけませんが)。

全部自動処理する前の段階として、CIで「ライセンスが追加されていないファイルが追加されていたらエラーにしすることでマージされるのを防ぐ」手当かなと思います。これなら内部リポジトリからのSyncをPull Requestという扱いでチェックするようにすれば、DateTimeUtility.csのようなことが起きる可能性は小さくなると考えていますが、いかがでしょうか。

そういう意味ではこのIssueとも話がずれるわけですが…ひとまず2つのPull Request( #236 #237 )でGitHub Actionsで実行できて、ライセンス通知がないファイルの「追加」を検出できるものはありそうでしょうか。特に #237 は

Commit 時に ライセンスの記載漏れがないか確認する

という記述があるので、そういった使われ方を想定しているのかなと思っています。

Meiryo7743 commented 3 years ago

ライセンス通知を追加する頻度を考えれば、手動で実行する方向で考えています。

確かに,その頻度はあまり高くありませんから,わざわざ pre-commit でチェックするまでもないと言えそうです。

237 は将来的に GitHub Actions 等の CI で実行することも想定しています。

イメージとしては,「Create Pull Request」と組み合わせることで,[スクリプトを実行]→[Base branch に対し,通知漏れの修正 PR を自動作成する]……といった具合です。よろしければ別途 PR を作成いたしましょうか……?

Takym commented 3 years ago

「ライセンスが追加されていないファイルが追加されていたらエラーにしすることでマージされるのを防ぐ」

ライセンス通知が付与していないファイルの検出であればより単純な機構で動くと思います。

236 は手動で動かす事を前提に実装したため、標準出力にログを書き込んでいます。

keiji commented 3 years ago

@Meiryo7743 @Takym ありがとうございます。ライセンス通知を自動で付加する前段階として、「ライセンス通知の必要なファイルを」を正しく検出できる機能が必要と考えています。おそらくですが、ホワイトリストを作って特定のディレクトリやファイル(他のライセンスが適用されているXamarin.ExposureNotificationなど)を除外するなど必要と思います。

検出の機能をまずはGitHub Actionsに組み込む。問題なく動けばPull Requestに対するコメントであったり、 @Meiryo7743 さん提案のPull Reqeustに対して追加でPull Requestを出すなどができそうですね。

Takym commented 3 years ago

提案します。#236 (#245)、#237、#261 の向き先を feature ブランチへ変更して頂けますでしょうか。

keiji commented 3 years ago

feature/license_tools でいいですか?

Takym commented 3 years ago

はい。よろしくお願いします。

keiji commented 3 years ago

変更しました!