PHPライブラリの評価ポイント(レベル別)
0
- ライブラリが解決したい課題が分かる・コードがある
レベル 空のレポジトリでなければ… 動作しなくてもPoCなコードがあれば…
1
- ライブラリが目的通り動作する状態である
レベル 動作条件がある場合は、README に記載がある。
2
- composer.json ほか読み込み方法が用意されている
レベル - ライセンスが分かる。
- READMEファイルが存在する。
- 実行方法のサンプルがある。
3
- ユニットテストが行われている
レベル - メイン動作パスのテストは行われている。
- psalm plugin での codeception利用のように、"厳密な"ユニットテストでなくてもよいと思います。
4
- CI のセットアップが行われている
レベル ユニットテストのCIが行われた上でマージされている
GitHub Actions でも。CircleCI とかででも。
異常系含めたテストが行われている
テストカバレッジで言うと8割ぐらいのテストを行っている。
packagist への登録が行われている
5
- バージョニング運用がされている
レベル そのライブラリのバージョンがタグ付けされてる
いわゆる 0ver運用 するのは心情としてわかりますので、この段階ではメジャーバージョンは0でもよいと思います。後述のレベル7ぐらいのタイミングで作成者の方は メジャーバージョンを上げたほうが信頼性が高いです。
動作確認対象のPHPバージョンが明確であり、CIでテストされている
- composer.json で
"php": "~8.1.0 || ~8.2.0"
などと書かれていて、そのマイナーバージョンがCIでテストされているか。- 「
"php": "^8.1.0"
」 で良いのではないか?と思った方、8.3や8.4で動作保証できるのであれば・・・
- 「
-
"php": ">=7.0"
とか書いてて PHP 8 でテストしてないとか論外
6
- ユニットテスト以外でのQAチェックが行われている
レベル コーディングスタンダードのチェックが行われている
PSR-12(deprecated)はある程度の最低基準なので、doctrine/coding-standard などのよくメンテされている・詳細な追加設定がされているルールを適用されているのが望ましいです。
静的解析が行われている
Psalm だとレベル3、PHPStanだとレベル5ぐらいは欲しいところ
composer-require-checker でのチェック・依存管理が行われている、かもポイント
依存ライブラリについてmatrixチェックが行われている
composer での --prefer-lowest
ならびに highest
(update
) でのテストが行われてないライブラリよく見かけます。特に、--prefer-lowest
でのテストでこける場合はあるので、見つかったら依存ライブラリのバージョンを上げておきましょう。
7
- レポジトリのリリース方法が的確である
レベル Github Community Standards に沿っている
- Security policy ファイルがあるか、など
配布データが必要十分である
- テストコードは .gitattributes でexport-ignore されているか、など
バージョンごとのリリースノートが記載されている
8
- バージョニングが自動化されている
レベル 依存ライブラリのアップデートや、PHPマイナーバージョンアップデートへの追随を考えると、自動化ツールを導入してない方が、そのプロジェクトの継続性に疑問が出てきます。
以下のような自動化ツールを導入されていれるのをおススメします。
- https://github.com/laminas/automatic-releases
- softprops/action-gh-release
依存パッケージの自動更新が行えている
renovateとかdependabotとか
9
- QAチェックがかなり出来ている。常時アップデートされている
レベル 秋には 次のPHPマイナーバージョンのテストが出来ている
2023年で言うと、11月には PHP 8.3 でのテストが行われている
静的解析最高レベルでのチェックがある程度出来ている
加えて、
Psalm の Type coverage だと 99%以上
Infectionでのミューテーションスコアだと90%ぐらいは…
BCチェックが自動化されている。BCについてドキュメントに明示されている
https://github.com/Roave/BackwardCompatibilityCheck でチェックされていたり、
Backward Compatibility Promise などで記載されていたり。
Discussion