はじめに
「コードレビュー、毎回時間がかかって大変で」
え、まだコードレビューを全部人力でやってるんですか?初期チェックをAIに任せると1PRあたり平均20分の節約になります
この記事で解決すること
動画「【AI】AIでコードレビューを自動化」の補足記事です。
動画では時間の都合で触れられなかった詳細を解説します。
問題:なぜこれが危険なのか
え、まだコードレビューを全部人力でやってるんですか?初期チェックをAIに任せると1PRあたり平均20分の節約になります
解決策:明日から使えるベストプラクティス
PR作成時にAIへコードを貼り、『バグ・セキュリティ・可読性を観点にレビューして』と依頼する
以下は、「AIを活用したコードレビュー」というテーマで、危険性とベストプラクティスを伝えるための具体的なコード例です。
問題:なぜこれが危険なのか
え、まだコードレビューを全部人力でやってるんですか?
人によるコードレビューは重要ですが、単純なミスやセキュリティ上の問題まで人が最初から確認すると時間がかかります。
AIに初期レビューを任せることで、
- バグの可能性
- セキュリティリスク
- 可読性
- ベストプラクティス違反
を事前に洗い出し、人間は設計や仕様のレビューに集中できます。
PRのコード(Before)
def login(user, password):
sql = f"SELECT * FROM users WHERE name='{user}' AND password='{password}'"
result = db.execute(sql)
if len(result) > 0:
print("Login Success")
return True
return False
人力レビューだけだと見落としやすい点
- SQLインジェクション
- パスワード平文比較
- エラー処理なし
- ログなし
- 型ヒントなし
- 戻り値の説明なし
AIへのレビュー依頼
以下はPull Requestのコードです。
以下の観点でレビューしてください。
・バグ
・セキュリティ
・可読性
・パフォーマンス
・Pythonベストプラクティス
・保守性
・改善案
修正コードも提示してください。
AIレビュー結果(例)
【重大】
SQLインジェクションがあります。
f文字列でSQLを組み立てています。
プリペアドステートメントを利用してください。
------------------------
【重大】
パスワードを平文比較しています。
ハッシュ化(password_hash等)してください。
------------------------
【改善】
型ヒントを追加してください。
------------------------
【改善】
例外処理を追加してください。
------------------------
【改善】
認証ログを記録してください。
AIが提案する改善コード
from werkzeug.security import check_password_hash
def login(username: str, password: str) -> bool:
sql = """
SELECT password_hash
FROM users
WHERE name = ?
"""
user = db.execute(sql, (username,)).fetchone()
if not user:
return False
return check_password_hash(
user["password_hash"],
password
)
AIにさらに依頼する
このコードについて
・重大
・中
・軽微
に分類してください。
修正優先順位も教えてください。
GitHubレビューコメント形式で出力してください。
GitHubレビューコメント例
🔴 Critical
SQLインジェクションがあります。
parameter bindingを利用してください。
--------------------
🟠 Medium
認証ログを追加してください。
--------------------
🟢 Minor
変数名userはrecordの方が分かりやすいです。
--------------------
🟢 Minor
関数コメントを追加してください。
明日から使えるベストプラクティス
PRを作成したら、その差分をAIに貼り付け、次のようなプロンプトで一次レビューを依頼すると効率的です。
このPull Requestをレビューしてください。
【レビュー観点】
・バグ
・セキュリティ(OWASP Top 10を考慮)
・パフォーマンス
・可読性
・保守性
・SOLID原則
・設計上の問題
・例外処理
・命名規則
・テスト不足
以下の形式で回答してください。
1. 問題点
2. 影響度(Critical / High / Medium / Low)
3. 修正理由
4. 修正コード
5. ベストプラクティス
このようにAIを「一次レビュアー」として活用し、その後に人が仕様・設計・ビジネスロジックを中心に確認する運用にすると、レビューの質と効率を両立しやすくなります。
まとめ
全人力レビューを卒業して、AIを初期レビュアーとして活用しましょう!
#まだやってるんですか #コードの女神はみた #プログラミングスキル
動画で見る
YouTubeショート動画でも同じテーマを解説しています👇
チャンネル登録・高評価もよろしくお願いします 🔔
この記事は「コードの女神は見た!」チャンネルの連動記事です。