2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

私達、株式会社よりそう のシステム部では、エンジニア全員が Cursor の有料版を利用して開発を行っています。
本記事では、普段私が実践している、Cursor を使ったセルフコードレビューの方法を紹介します。

@Git コマンドで変更差分を渡す

まず、ctrl + L でチャットを開きます。
(Composer では勝手に修正までされてしまうので、レビューが目的であれば、こちらから許可しない限り変更されない Chat を選択するのがより良いです。)

@ を入力して表示されるメニューの中から Git を選択します。

image.png

image.png

PR は main ブランチとの変更差分をプロンプトとして渡すことができます。
PR を出す前に変更差分をレビューさせたい時はこちらを選択します。
(現状 main 以外のブランチとの差分は渡せないのが惜しい…)

Commit は作業中の差分をプロンプトとして渡すことができます。
コミットする前に変更差分をレビューさせたい時はこちらを選択します。

image.png

プロンプトは「レビューして」のような簡易的なもので十分です。
出力結果に合わせて追加の依頼や質問をしましょう。

.cursorrules ファイルでレビュー方針を伝える

Cursor の設定画面から、.cursorrules の利用を有効化します。
(設定画面は、 ctrl + shift + P で表示されるメニューから Cursor Settings で開けます。)

image.png

.cursorrules はプロンプトを送信したときに自動で読み込まれるファイルで、プロジェクト固有のルールを AI に伝えることができます。

.cursorrules というファイルをプロジェクトに作成し、コーディング規約やレビュー方針を記載します。

実際に私達が使っているファイルの一部を抜粋したものが以下です。

# コーディング規約
## 基本
- このプロジェクトは nuxt3 で作成されています。
- コンポーネントライブラリは Vuetify3 を使っています。components/Ui ディレクトリ以外では原則直接利用を禁止しています。
- コンポーネントの import 文は不要です。
- ref や computed のような vue の基本的な関数は import 不要です。
- イベントなどに使う関数は handleXxx よりも onXxx の命名が望ましいです。

## defineProps の使い方
### 非推奨
defineinterface Props {
  label: string;
}
defineProps<Props>();

### 推奨
defineProps({
  label: {
    type: String,
    required: true,
  },
});

# コメント規約
- コメントがなくても意図が伝わるコードを書くことを目指す
- コードと重複するコメントは避ける
- コードだけでは意図が伝わらない部分にのみコメントを書く
- コード生成時に生成される説明的なコメントは不要

このファイルがある状態で、@Git を使って AI にレビューさせることで、チームの方針に従ったレビューが実現できます。

チームのノウハウや方針をこのファイルに蓄積していくことで、AI のレビュー精度をより高めることができます。

おわりに

私達のチームでは、Cursor を活用し、目下 PR の精度向上に取り組んでいます。
さらに効果的な方法が見つかったり、具体的な成果が確認できた場合には、随時記事を更新していく予定です。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?