dependabotのcompatibilityとは何か

dependabotがGitHubに買収された ので、これを機に最近dependabotの利用を始めた方も多いはず。
しかしいざdependabotからPRが飛んで来ると見方に困ったので記録に残します。

f:id:komajou:20190529202945p:plain

タイトルの通り、「compatibility」って書いてるけどこれ何??状態になった。
公式の説明はこちら。
https://dependabot.com/compatibility-score/

まとめると、
「①dependabotを導入していて ②同じ内容のアップデートをdependabotが作成した を満たす世界中のプロジェクトのうち、
更新後のCIテストがグリーンになった確率」。

具体的にいくつのプロジェクトを母数としているかは、PRのnoteに含まれるdependabotのバッジをクリックすることで確認することができる。
こんな感じ。
https://dependabot.com/compatibility-score/?dependency-name=django&package-manager=pip&previous-version=2.1.7&new-version=2.2.1

↑のページにはCIテストで失敗している公開リポジトリ一覧も表示される。
もしそれらが同じ原因で失敗しているなら、何が悪かったのかの原因究明の役に立つかも。

というわけで、dependabotの言う互換性(compatibility)とは、他のプロジェクトでの移行成功確率の実績値でした。
コードベースで機械的に何かを判別しているわけではない。
なので、リファレンスに倣ってお作法通りの使い方をしている場合は、スコアが高ければおそらく大丈夫といえるでしょう。
そうじゃないときは、スコアを過信すると事故があるかもしれない。
かもしれない、しか言えないけど。

この説明でいくと、ときどきでる compatibility unknown は、同じ内容の更新を反映したプロジェクトが他にない or 母数が少ないことが原因だと推測。