翻訳者 |ブガッティ レビュー | Chonglou コードレビューは、現代のソフトウェア開発において重要な側面です。 GitHubワークフローでは、コードレビューはマージリクエスト( PR )が作成されたときに開始され、 PRが承認、マージ、または拒否されたときに終了します。レビュー担当者は通常、上級開発者またはアーキテクトです。これらは、コードリポジトリにコミットされたコードが正確で、保守可能、スケーラブル、かつ安全であることを保証するのに役立ちます。寄付されたコードの多くはコミュニティから来る可能性があるため、これはオープンソース プロジェクトにとって特に重要です。 しかし、マージリクエストにおけるコードレビューは、ソフトウェア開発の世界で最も大きな問題点となることがよくあります。
26,000 人の開発者が作成した700,000 件を超えるマージリクエストの調査によると、マージ リクエストのレビューには平均4日以上かかります。開発者は、マージリクエストを送信するたびに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 にそれらを確認して要約するように依頼します。結果はマージリクエストへのコメントとして返されます。 ボットは、新しいコミットと更新のマージ リクエストを継続的に監視します。必要に応じて、マージリクエスト内のコードレビューコメントを更新(上書き)します。 ボットは、マージリクエストのコメントセクションにあるマジックフレーズによってトリガーされます。たとえば、レビュー担当者がロボットに要約を更新してほしい場合は、 「フロー要約」と注釈を付けるだけで済みます。 独自のボットを作成する独自のコードレビュー ボットを作成して展開するには、 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にあるソース コード ファイルを変更するだけです。 flows.network が変更を取得できるように、必ず変更を GitHub にプッシュしてください。 1.別のモデルを選択します。ボットはデフォルトで GPT 3.5 モデルを使用します。より高度な GPT-4モデルにアクセスできる場合は、以下のソースコードで「 GPT35Turbo 」を「 GPT4 」に変更してください。 GPT4 はより優れたコードレビューを提供しますが、コストが高くなります。 2. ChatGPT プロンプトを設計します。たとえば、経験豊富なJava 開発者である ChatGPT に Java ソース コード ファイルのレビューを依頼することができます。カスタムヒントを使用すると、ボットがコードの特定の側面(たとえば、セキュリティの問題やパフォーマンス)に焦点を当てるようにすることができます。また、提案された変更のコード スニペットやセキュリティの問題の箇条書きなど、特定の種類のレビューコメントを提供するようにボットに指示することもできます。次のコードはテンプレート内のプロンプトです。インスピレーションを与えるプロンプトのライブラリが多数あります。 3.ロボットプログラムをより使いやすくします。以下のソース コード内の「Hello , I am a code review bot on flows.network 」で始まる文を変更することで、ボットのマージリクエストコメントの内容とスタイルを変更できます。たとえば、コミュニティのメンバー向けにカスタマイズされた挨拶を追加できます。 4.レビュー戦略をカスタマイズします。デフォルトでは、ボットはマージリクエスト内のすべての変更されたファイルとすべてのコミットを確認します。ソース コードを編集して、特定のファイルのみを確認したり、特定の開発者が行った変更のみを確認したりできます。 複数のリポジトリでボットを使用する1 つのリポジトリでボットが正常に実行されたら、すべてのリポジトリでコードレビューを実行することをお勧めします。もちろん、テンプレートを使用してリポジトリごとに異なるボットをデプロイすることもできます。しかし、これは各ボットが独自のソースコードを管理することを意味し、管理不能になる可能性があります。同じロボットソースコードを使用して複数のロボットを作成できます。 flows.network では、各ボットを「フロー」と呼びます。 まず、 「フローの作成」をクリックして、そのフローのボットソース コードをインポートします。ボットのソースコードは、テンプレートからクローンされたGitHubリポジトリで入手できます。これを、マージ リクエストのレビュー用のボットをデプロイするリポジトリと混同しないでください。 次に、 [詳細設定]セクションで、 github_owner および github_repo 設定を追加して、ボットがマージ リクエストを確認するターゲット GitHubリポジトリを指すようにすることができます。 次の図は、テンプレート (フロー)から複製された既存のボットソース コード リポジトリから新しいボットを作成する手順を示しています。 最後に、ボット (フロー)が OpenAI API キーとボットをデプロイするターゲット GitHub リポジトリにアクセスできるようにするプロセスを実行します。 次は何ですか?AI 支援によるコードレビューは急速に成長している分野です。 CNCF の WasmEdge は、コード レビュー ロボット アプリケーションに効率的なランタイム環境を提供します。コミュニティはボット テンプレートを改善するために多くの新しいアイデアを試しています。近い将来に期待できる改善点をいくつかご紹介します。
今すぐオープンソース ソフトウェア リポジトリのコード品質と開発者の生産性を向上させましょう。 元のタイトル:オープンソース プロジェクト向けの ChatGPT 搭載コード レビュー ボット、著者: Miley Fu |
<<: 黄仁勲のNVIDIAの1兆ドル規模のビジネスを管理するクレイジーな方法:計画なし、レポートなし、階層なし
みなさん、こんにちは!昨日、プログラミング面接の準備をしていて、アルゴリズムの基礎を学ぼうとしている...
地元警察は、ここ数日話題になっている「グーグルの人員削減により清華大学の夫婦が自殺」事件の詳細を発表...
今年も大学入試シーズンがやってきました。私が大学受験をしていた頃には、この言葉が流行っていたのを覚え...
今日、人工知能について話すとき、私たちは数学モデルを使用してデータからパターンの表現を抽出することで...
この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...
GPT-4V はすでに、Web サイトのコード設計やブラウザの制御に役立っています。これらのアプリケ...
2021年を迎え、私たちは新しい働き方や新しい労働環境に慣れてきました。多くの人は、デジタル通信手段...
一言で言えば、ハルクに VR メガネをかけさせるのです。 4K品質。パンダのファンタジーの旅これは、...
動画生成AIはここまで進化したのか? !写真をスワイプするだけで、選択したターゲットが動きます。明ら...
3月10日、Appleは2022年春のカンファレンスで、M1 Maxチップのアップグレード版であるM...
[[382357]] 1990年代、米国はコンピュータ産業の早期発展の機会をいち早く捉え、デジタル...
この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...
10 年前、ほとんどの人は、今日では現金やカードを持ち歩かずに携帯電話だけを持って街を歩き回り、買...