|
翻訳者 |ブガッティ 校正者 | Chonglou コードレビューは、現代のソフトウェア開発において非常に重要な側面です。GitHubのワークフローでは、コードレビューはマージリクエスト( PR )の作成から始まり、 PRが承認、マージ、または拒否された時点で終了します。レビュー担当者は通常、上級開発者またはアーキテクトです。彼らは、リポジトリに送信されたコードが正確で、保守性、拡張性、そしてセキュリティに優れていることを確認します。これは、オープンソースプロジェクトにとって特に重要です。なぜなら、提供されるコードの多くはコミュニティから提供される可能性があるからです。 しかし、マージ リクエストにおけるコード レビューは、ソフトウェア開発業界における最大の問題点の 1 つとなることがよくあります。
26,000人の開発者による70万件以上のマージリクエストを対象とした調査では、 1件のマージリクエストのレビューに平均4日以上かかることが明らかになりました。提出されたマージリクエスト1件につき、開発者の自由時間が2日間も無駄になり、生産性に重大な影響を与えています。 このブログ記事では、 Cloud Native Computing Foundation ( CNCF )のWasmEdgeコミュニティが作成したGitHub PRコードレビューボットについて説明します。このボットはオープンソースのWasmEdgeランタイム環境上で動作し、 ChatGPT/GPT4を使用してコードレビュータスクを実行します。WasmEdgeコードリポジトリに既にデプロイされており、すべてのマージリクエストを自動的にレビューできます。時間がない場合でも、 5分以内にGitHubに独自のコードレビューボットを作成してデプロイできます。 実例しかし、 ChatGPT/4はコードレビューをするほど賢いのでしょうか?それは上級開発者の仕事ではないでしょうか?話を元に戻して、例を見てみましょう。下の画像は、WasmEdgeオープンソースリポジトリの1つに送信されたマージリクエストです。入力された数値が素数かどうかを確認するためのcheck_prime()関数が追加されています。実装は非常に標準的です。2からnの平方根までループし、各整数が割り切れるかどうかを試します。 図 1. n が素数かどうかをチェックするこのコードに問題を見つけましたか? ChatGPT が見つけました! ロボットプログラムは、以下のコードレビューコメントを提供します。そのパフォーマンスは紛れもなく驚異的です! 図2. ChatGPTからのコードレビュー 会話を続けると、 ChatGPT/4を使用してコードをさらに改良し、ループ内ですでに見つかった素数の倍数をすべてスキップするソリューションを提案できます。 マネージャー/メンテナーとして、コードレビューボットプログラミングの技術的な概要は非常に役立つと思います。 図3. マージリクエストにおけるコード変更の概要 どのように機能しますか?コードレビューボットはRustで記述されたサーバーレス関数(ストリーム関数)で、近々 JavaScriptでも記述される予定です。Wasmにコンパイルされ、flows.networkがホストするWasmEdgeランタイム環境で実行されます。 flows.networkは、WasmEdgeの機能を実行し、外部API( GitHubなど)に接続するためのユーザーインターフェース( UI )とホスティングサービスを提供するPaaSです。無料版も提供しています。もちろん、ご希望に応じて独自のWasmEdgeクラウドサービスを実行することもできます。 接続されたGitHubリポジトリにマージリクエストが作成されると、ストリーム関数がトリガーされます。ストリーム関数はマージリクエストからパッチとファイルを収集し、ChatGPT/4にレビューと要約を依頼します。その結果はコメントとしてマージリクエストに返されます。 ボットはマージリクエスト内の新しいコミットと更新を継続的に監視し、必要に応じてマージリクエスト内のコードレビューコメントを更新(上書き)します。 ボットは、マージリクエストのコメント欄にマジックフレーズを入力することで起動できます。例えば、レビュアーがボットにサマリーを更新させたい場合は、 「 flows summarize 」とコメントするだけです。 独自のロボットプログラムを作成する独自のコード レビュー ボットを作成して展開するには、 5 分以内に次の3 つの簡単な手順に従ってください。 ロボットテンプレートは2種類から選択できます。1つはマージリクエスト内の各コミットを要約するもの(つまりロボットを作成するもの)です。もう1つはマージリクエスト内の変更された各ファイルをレビューするもの(つまりロボットを作成するもの)です。前者の方法の手順は以下のとおりです。 図4. テンプレートからロボットプログラムを作成する 1. flows.network にコードレビューボットテンプレートを読み込みます。このテンプレートにはボット自体のソースコードが含まれています。ソースコードはGitHubアカウントにクローンされているので、後で変更やカスタマイズが可能です。 「作成してデプロイ」をクリックしてください。 2. OpenAI APIキーをロボットプログラムに提供します。以前にAPIキーを保存している場合は、この手順をスキップしてキーを再利用できます。 3.ボットにGitHubへのアクセスを許可します。`github_owner`と`github_repo`は、ボットがマージリクエストをレビューする対象のGitHubリポジトリを指します。 「承認」をクリックして、ボットにGitHub上で必要な権限を付与します。 下の画像は上記の手順2と3を示しています。 GitHub が提供する OAuth UI を使用して、ボット プログラムがWasmEdge/WasmEdge-db-examples GitHubコード リポジトリにアクセスできるように承認します。 これで完了です。github_owner /github_repoリポジトリに新しいマージリクエストを作成して、ボットがどのように動作するかを確認しましょう。 カスタマイズされたロボットプログラム上記のプロセスでは、まずテンプレートからボットのソースコードを自分のGitHubアカウント(例: your_id/summary-GitHub-pull-requestsリポジトリ)にクローンします。次に、このソースコードからボットを作成します。自分のアカウント内でソースコードを変更することで、ボットの動作をカスタマイズまたは変更できます。 flows.network が変更を受信してボット プログラム (つまり、ストリーム関数)を再構築するには、ボット プログラムのソース コードへの変更を GitHub にプッシュする必要があります。 ボットプログラムをカスタマイズするために、いくつかの簡単なコード変更を加えることができます。ご自身のクローンリポジトリにあるソースコードファイル`src/github-pr-summary.rs`を以下のように変更してください。変更内容を GitHub にプッシュして、flows.network がそれを受信できるようにしてください。 1.別のモデルを選択してください。ロボットプログラムはデフォルトでGPT 3.5モデルを使用します。より高度なGPT-4モデルを使用できる場合は、以下のソースコードで「 GPT35Turbo 」を「 GPT4 」に変更してください。GPT4はコードレビューの精度が向上しますが、コストは高くなります。 2. ChatGPTのヒントを設計します。例えば、ChatGPTを経験豊富なJava開発者のように動作させ、Javaソースコードファイルをレビューさせることができます。カスタムヒントを使用すると、ボットがコードの特定の側面(セキュリティ問題やパフォーマンスなど)に焦点を当てるように指示できます。また、変更を提案するコードスニペットを提供したり、セキュリティ問題の重要なポイントを列挙したりするなど、特定の種類のレビューコメントにヒントを与えることもできます。以下のコードはテンプレートからのヒントです。多くのヒントライブラリからヒントを得ることができます。 3.ボットをよりユーザーフレンドリーにしましょう。以下のソースコード内の「 Hello, I am a code review bot on flows.network 」で始まる文を変更するだけで、ボットのマージリクエストコメントの内容とスタイルを変更できます。例えば、コミュニティメンバー向けのカスタムグリーティングを追加できます。 4.レビュー戦略をカスタマイズします。デフォルトでは、ボットはマージリクエスト内のすべての変更されたファイルとコミットをレビューします。ソースコードを編集することで、特定のファイルのみ、または特定の開発者による変更のみをレビューするように設定できます。 複数のコードリポジトリでボットを使用する1つのコードリポジトリでボットが正常に動作するようになったら、各リポジトリのコードを確認することをお勧めします。もちろん、テンプレートを使用してリポジトリごとに異なるボットをデプロイすることも可能です。ただし、この場合、各ボットが独自のソースコードを管理する必要があり、管理が困難になる可能性があります。同じボットのソースコードを使用して複数のボットを作成することもできます。flows.networkでは、各ボットを「フロー」と呼びます。 まず、 「ストリームを作成」をクリックして、ボットプログラムのソースコードをそのストリームにインポートします。ボットプログラムのソースコードは、テンプレートからクローンしたGitHubリポジトリにあります。マージリクエストのレビューのためにボットプログラムをデプロイするリポジトリと混同しないようにご注意ください。 次に、 「詳細」セクションで、ボットがマージリクエストを確認する対象の GitHubリポジトリを指すように github_owner と github_repo 設定を追加できます。 以下の図は、「テンプレートから複製された既存のロボット プログラムソース コード ライブラリから新しいロボット プログラム (フロー)を作成する」手順を示しています。 最後に、ボット プログラム (ストリーム)に OpenAI API キーへのアクセスを許可し、ボット プログラムを対象の GitHub コード リポジトリにデプロイするプロセスを完了します。 次は何?AI支援によるコードレビューは急速に進化する分野です。CNCFのWasmEdgeは、コードレビューボットアプリケーションのための効率的なランタイム環境を提供します。コミュニティはボットテンプレートの改善に向けて、多くの新しいアイデアを実験しています。近い将来に期待される改善点をいくつかご紹介します。
オープンソース ソフトウェア リポジトリのコード品質と開発者の生産性を向上させるには、今が最適なタイミングです。 原題:オープンソースプロジェクト向けの ChatGPT 搭載コードレビューボット、著者: Miley Fu |