プロジェクトに興味を持っていただきありがとうございます! このドキュメントでは、プロジェクトに貢献する際に必要な情報をまとめています。
機能追加やバグ修正をしたいときは、まずIssueなどで設計、方針をレビューしてもらいましょう(無い場合は作ってください)。このステップがないと、せっかく実装してもPRがマージされない可能性が高くなります。
また、実装に取り掛かるときは当該Issueに自分をアサインしてください(自分でできない場合は他メンバーに自分をアサインしてもらうようお願いしてください)。 自分が実装するという意思表示をすることで、作業がバッティングするのを防ぎます。
このプロジェクトではテストフレームワークとしてVitestを導入しています。
テストは/test
ディレクトリに置かれます。
テストはCIにより各コミット/各PRに対して自動で実施されます。
ローカル環境でテストを実施するには、npm run test
を実行してください。
このプロジェクトではAPI Extractorを導入しています。API ExtractorはAPIレポートを生成する役割を持ちます。
APIレポートはいわばAPIのスナップショットで、このライブラリが外部に公開(export)している各種関数や型の定義が含まれています。npm run api
コマンドを実行すると、その時点でのレポートが/etc
ディレクトリに生成されるようになっています。
exportしているAPIに変更があると、当然生成されるレポートの内容も変わるので、例えばdevelopブランチで生成されたレポートとPRのブランチで生成されたレポートを比較することで、意図しない破壊的変更の検出や、破壊的変更の影響確認に用いることができます。 また、各コミットや各PRで実行されるCI内部では、都度APIレポートを生成して既存のレポートと差分が無いかチェックしています。もし差分があるとエラーになります。
PRを作る際は、npm run api
コマンドを実行してAPIレポートを生成し、差分がある場合はコミットしてください。
レポートをコミットすることでその破壊的変更が意図したものであると示すことができるほか、上述したようにレポート間の差分が出ることで影響範囲をレビューしやすくなります。
このプロジェクトではカバレッジの計測にCodecovを導入しています。カバレッジは、コードがどれくらいテストでカバーされているかを表すものです。
カバレッジ計測はCIで自動的に行われ、特に操作は必要ありません。カバレッジはここから見ることができます。
また、各PRに対してもそのブランチのカバレッジが自動的に計算され、マージ先のカバレッジとの差分を含んだレポートがCodecovのbotによりコメントされます。これにより、そのPRをマージすることでどれくらいカバレッジが増加するのか/減少するのかを確認することができます。
PRを作成するときのテンプレートに色々書いてあるので読んでみてください。(このドキュメントに移してもいいかも?) また、後述の「レビュー観点」も意識してみてください。
- 直して欲しい点だけでなく、良い点も積極的にコメントしましょう。
- 貢献するモチベーションアップに繋がります。
- セキュリティ
- このPRをマージすることで、脆弱性を生まないか?
- パフォーマンス
- このPRをマージすることで、予期せずパフォーマンスが悪化しないか?
- もっと効率的な方法は無いか?
- テスト
- 期待する振る舞いがテストで担保されているか?
- 抜けやモレは無いか?
- 異常系のチェックは出来ているか?
以降の規則はmemberが何をしてよいか明示するものであり、何かを禁止するものではありません。(禁止のための条項が必要になれば別に作ります)
- バグ修正、ドキュメントの編集、バージョン更新、dependabotのPRはmember1人の判断でマージしてよい
- ソースコード、テスト、本規則自体の変更は、member 2人以上のapproveを受けてから1日の経過を待ち、非memberを含む反対者が賛成者の半数以下ならマージしてよい
- 上記以外の変更はmember 1人以上のapproveを受けてから1日の経過を待ち、非memberを含む反対者が賛成者の半数以下ならマージしてよい
- リポジトリの所有者(@syuilo)の同意がある場合、以上の規則によらずにマージしてもよい
- 大前提としてすべてのマージはCI Checkを通過し、全てのreviewにPR主から何らかの返答がある必要がある
- 後でrevertになっても泣かない