GitHubのコードレビュー用ヒートマップを付けてくれるdiffビューア「0github.com」 – GIGAZINE


プログラミングをする上で、ソースコードの差分を表示してくれるdiffツールは必要不可欠な存在です。とりわけ、バージョン管理ツールと連携させてバージョン間の変更差分を確認するのは、単にバージョン間の変更内容を知るのみならず、バグの発見に役立つことも多く、定番の使用法といえます。「0github.com」は、GitHubのプルリクエストからコード差分を抽出して比較することができ、さらにコードレビューすべき箇所を「ヒートマップ」として表示してくれるとのことなので、実際にアクセスして確認してみました。

コードレビュー用のヒートマップ差分ビューア
https://0github.com/


0github.comは、コードの差分行・トークンに対して、「どれだけ注意すべきか」に応じが色分け表示をする「ヒートマップ」が特徴的です。一般的なPRレビューbotは「バグかどうか」を着眼点としますが、0github.comはさらに以下のような「問題になりそうなコーディングだが構わないのか?」という点についてもチェックします。

・秘密鍵のような秘匿すべき情報がハードコーディングされていないか
・非推奨の暗号化方式が使われていないか
・奇妙なロジックになっていないか

内部動作については、対象のリポジトリをVM内にクローンし、差分ごとにGPT-5-Codexで処理しているとのこと。従って、対象のリポジトリはPublicである必要があります。使用方法は、GitHubのプルリクエストURLのドメイン名「github.com」を「0github.com」に置き換えてアクセスするだけです。サンプルのリンクがサイトにあるので、まずはGitHubにアクセスしてみます。

fp8 amd cstyle by b1tg · Pull Request #12999 · tinygrad/tinygrad · GitHub
https://github.com/tinygrad/tinygrad/pull/12999

実際に存在するプルリクエストであることが確認できたので、URLを置き換えて「0github.com」の方にアクセスしてみます。

fp8 amd cstyle · #12999 · tinygrad/tinygrad
https://0github.com/tinygrad/tinygrad/pull/12999

アクセスすると数秒間「Loading」が表示されます。


「0github.com」としての画面が表示されました。


画面の左側に「”Should review” threshold」というスライドバーがあり、左にすれば低いスコアの箇所でもヒートマップ表示され、右にすると高いスコアの箇所のみが表示されるようになります。


ヒートマップ表示されている箇所にマウスカーソルをホバーさせると、具体的にどういった問題点が挙げられているのかをヒント表示で教えてくれます。例えば、以下の指摘は「変数がリネームされているが問題ないか?」という指摘のようです。


対応する箇所が以下の場所。指摘は「リネームされた変数が使われている」です。先程の指摘箇所と合わせると「問題なし」と言えそうですが、他にリネーム前の変数が使われていないか注意が必要です。


以下の指摘はヒートマップの色によるとかなりスコアが高いようです。指摘内容は「ハードコーディングされたsliceは脆弱性の危険がある」とのこと。確かに、入力を正しく処理できるのか、予期せぬ入力を処理しようとして脆弱性の原因にならないか、十分に注意すべきです。


以下もスコアが高いです。指摘内容は「アクセスするプロパティがsrc[0].dtypeからsrg[2]に変わっている」。開発者が意図した通りの変更なのか気になります。


以下もやはりスコアが高いです。指摘内容は「ハードコーディングされたマジック値“AMD”を用いてタプルにアクセスしている」です。ハードコーディングやマジック値はスコアが高くなる傾向にあるようです。


以下は、「プライベート関数がモジュールレベルなのはおかしい」とのこと。指摘箇所を見ただけだと指摘内容が正しいのか判断できませんが、モジュール全体を検証した上で指摘していそうなので、コードレビューもモジュールレベルで行う必要があるでしょう。


かいつまんで見てきた通り、0githubのヒートマップでスコアが高い場所は「気を付けてコードレビューすべき箇所」になっていると確認できました。人間の目視では見逃してしまう細かな差異でもヒートマップには反映されるので、コードレビューをすり抜けた不具合をうっかり本番環境に混入させてしまう危険を減らす一助になります。

この記事のタイトルとURLをコピーする


ソース元はコチラ

この記事は役に立ちましたか?

もし参考になりましたら、下記のボタンで教えてください。

関連記事