AIコードレビューgreptileを試してみる

はじめに

AIコーディングツールの普及により、コード生成速度は大幅に向上しているが、その反面でコードレビューの負荷が増大し、コードレビューの大変さを味わっている…。

そこで、AIを活用したコードレビューツールを使ってみたいと思う。
以前、PR-Agentを使ってみたが今回は GreptileというコードレビューツールをGitHubでの開発フローに組み込んで試してみる。

以前の記事 ↓

Greptileとは

Greptileは、AIを活用したコードレビューサービスである。

主な特徴

  • リポジトリ全体のインデックス化: コードベース全体を理解した上でレビューを実施
  • GitHub/GitLab連携: PRに自動でレビューコメントを追加

PRレビューのサンプル

公式ページでサンプルとして紹介されているプルリクエストのページは以下となる。

導入手順

1. アカウント作成

Greptileの公式サイトからアカウントを作成する。 ※今回はGitHubアカウントでのサインアップを行った。

  • 2週間の無料トライアルが利用可能

サインアップし、組織を作成すると以下の管理画面となる。

introduction-greptile-01

2. GitHubリポジトリとの連携

AI Code Review BotSetting を選択し、 CONNECTを選択する。

introduction-greptile-02

Authorize Greptile Apps を選択する。

introduction-greptile-03

個人の方の katsuobushiFPGAに入れてみる。

introduction-greptile-04

All repositories にしておく。 ※範囲を限定したい場合は、Only select repositoriesにする。

introduction-greptile-05

連携が完了すると以下のページにリポジトリ一覧が表示される。

introduction-greptile-06

3. リポジトリを選択する

今回有効にしたいリポジトリを選択する。

リポジトリにチェックを入れた後、ENABLE SELECTEDを選択する。

introduction-greptile-07

4. PRの設定

PRに何を含めるかを設定できる。
今回は以下のように設定した。

項目説明設定内容
PR概要設定要約はコメントとして投稿されます✅ PRサマリーを生成する
要約の投稿場所別個のコメントの代わりに、PRの説明に要約を追加しますコメント形式で投稿
PR概要変更点のテキスト要約を含める✅ 有効
シーケンス図変更のシーケンス図を生成する✅ 有効
問題表評価が変更された重要なファイルの表を表示する✅ 有効
信頼スコアPRの信頼度評価を含める✅ 有効

PRサマリーは、Greptileによって生成されたPRの変更のサマリーであり、PRにコメントとして追加される。

introduction-greptile-08

5. レビューの開始

設定は完了した。
PRのコメントで @greptileをすれば再レビューができるようになっているとのこと。
というわけでリポジトリを見てみる。

introduction-greptile-09

もう閉じているPRに @greptileをしたら目の絵文字がきた!

introduction-greptile-10

ちょっとするとレビューがついてきた。
全文は以下の通り。

introduction-greptile-11

6. コメントレベル

Greptileの感度とコメントタイプを設定できる。

Strictness Level(厳密さレベル)

レベル説明設定内容
low低い感度での検出重要な問題のみ指摘
med中程度の感度での検出✅ バランスの取れたアプローチで重要な問題に焦点
high高い感度での検出細かい問題まで全て指摘

Comment Types(コメントタイプ)

タイプ説明設定内容
syntax構文エラーや文法の問題✅ 有効
logicロジックや実装の問題✅ 有効
styleコードスタイルや規約の問題✅ 有効
introduction-greptile-12

レビューのフィードバックについて

コメントに 👍や👎で良い/悪いかを評価できるとのこと

introduction-greptile-13

フィルターについて

フィルターは、どのプルリクエストがレビューされるかを制御するのに役立つ機能である。

フィルターの概要

  • 目的: レビュー対象のPRを絞り込み、不要なレビューを回避
  • 設定場所: 設定ページで新しいフィルターの追加・削除が可能
  • 効果: 特定の条件に合致するPRのみをレビュー対象とする

主なフィルター条件

フィルター種類説明使用例
Labels特定のラベルが付いたPRをフィルタdocumentation ラベルを除外
Authors特定のユーザーのPRを制御Bot作成のPRを除外
Branches特定のブランチ名のPRをフィルタmain ブランチのみ対象
KeywordsPRタイトルや説明の特定キーワードWIP を含むPRを除外
introduction-greptile-14

カスタムコンテキストについて

Greptileでは、チーム固有のルール(チーム独自のコーディング規約やレビュー方針)やガイドラインをCustom Contextとして設定できる。

introduction-greptile-15

設定方法

  1. 手動設定: 管理画面から直接ルールを記述
  2. 自動学習: 人間のレビューコメントから自動でルールを生成
  3. ファイル連携: リポジトリ内のドキュメントファイルを参照

Custom Contextの例

## コーディング規約

### 必須事項
- 関数には必ずJSDocコメントを付与する
- console.logは本番コードでは使用禁止
- 型定義は明示的に行う
- エラーハンドリングは必須

### 推奨事項
- 関数名は動詞から始める
- 変数名はcamelCaseを使用
- magic numberは定数として定義

### 禁止事項
- var文の使用禁止(let/constを使用)
- 直接的なDOM操作の禁止
- ハードコードされたURL・APIキー

設定時の注意点

項目説明推奨対応
自動追加ルール人間のレビューから自動生成される定期的な監視・調整が必要
重複ルール同じ内容のルールが複数追加される定期的な整理・統合
過剰指摘特定ルールで過度に指摘されるルールの調整・無効化
スコープ管理全リポジトリに適用されるプロジェクト固有設定の検討

実際の使用方法

基本的なワークフロー

  1. PR作成: 通常通りPull Requestを作成
  2. 自動レビュー: ドラフトからオープンに変更すると自動でレビューが開始
  3. 手動レビュー依頼: @greptile メンションでレビューを依頼

レビュー依頼の方法

# 方法1. Pull Requestを作成する
# 方法2. メンションをつけてPRにコメントする
  @greptile このPRをレビューしてください

実際のレビュー例

タイポの検出

Greptileは細かいタイポも検出する

- // Calcualte the total amount
+ // Calculate the total amount

デバッグコードの検出

- console.log("Debug: user data", userData);
  // 本番環境に不要なデバッグコードを指摘

コーディング規約違反の指摘

// 指摘例: JSDoc形式でのコメント推奨
/**
 * ユーザー情報を取得する
 * @param {string} userId - ユーザーID
 * @returns {Promise<User>} ユーザー情報
 */
function getUser(userId) {
  // ...
}

参考

おわりに

AIコードレビューツールは、現代の開発チームにとって必須のツールになりつつあると考えている。
手元のツールでもAIを使ってのコードレビューが可能であるが、強制力が低く、レビューを通したコードかどうかもレビュアーにとってはわからない。
なので、GitHub や GitLab などの ホスティングサービスでPRのコードレビューをAIが行うということが重要であると思っている。

今回は、GreptileというAIコードレビューツールを試してみたが、導入が簡単であったため、その部分での苦労はなかった。
カスタマイズ性も高そうなので、業務で試してみてもよさそうだなと思う。
資金がない個人開発には少しハードルが高そう。(というより個人であれば手元でレビューするという方法でよい気がする。)

Hugo で構築されています。
テーマ StackJimmy によって設計されています。