AI Code Review: Tôi đã để AI review code 1 tháng, đây là kết quả
Thử nghiệm thực tế: ChatGPT, Claude và Cursor review code PHP/Laravel trong 30 ngày. Kết quả nào khiến tôi bất ngờ nhất?
Tháng 12 vừa rồi, tôi quyết định làm một thử nghiệm: Mọi đoạn code tôi viết đều phải qua AI review trước khi commit.
Không phải vì tôi tin AI hơn con người. Mà vì tôi muốn biết: AI có thực sự giúp ích được gì, hay chỉ là hype?
Sau 30 ngày, 47 Pull Requests, và 3 AI tools khác nhau, đây là những gì tôi học được.
Setup: 3 AI tools, 1 quy trình
Tôi chọn 3 tools phổ biến nhất:
- ChatGPT-4o (via API)
- Claude 3.5 Sonnet (via Cursor)
- Cursor Composer (AI native IDE)
Quy trình review:
- Mỗi khi viết xong một feature, tôi paste code vào cả 3 tools
- Yêu cầu: “Review code này, tìm bugs, security issues, và đề xuất cải thiện”
- Ghi chép lại feedback của từng tool
- So sánh với kết quả review của Senior Dev trong team
Kết quả: Ai thắng?
Round 1: Tìm Logic Bugs
Test case: Hàm tính discount cho E-commerce
public function calculateDiscount($totalAmount, $userType)
{
if ($userType == 'vip') {
return $totalAmount * 0.2;
} elseif ($totalAmount > 1000000) {
return $totalAmount * 0.1;
}
return 0;
}
Bug thật: VIP user với đơn hàng > 1M chỉ được 20%, không được cộng dồn 30%.
Kết quả:
- ChatGPT: Không phát hiện
- Claude: Không phát hiện
- Cursor: Không phát hiện
- Senior Dev: Phát hiện ngay
Lý do: AI không hiểu business logic. Nó không biết discount có được cộng dồn hay không.
Round 2: Security Vulnerabilities
Test case: API endpoint nhận input từ user
public function search(Request $request)
{
$keyword = $request->input('keyword');
$results = DB::select("SELECT * FROM products WHERE name LIKE '%{$keyword}%'");
return response()->json($results);
}
Bug thật: SQL Injection vulnerability
Kết quả:
- ChatGPT: Phát hiện, đề xuất dùng Query Builder
- Claude: Phát hiện, giải thích chi tiết về SQL Injection
- Cursor: Phát hiện, tự động suggest fix
- Senior Dev: Phát hiện
Winner: Claude (giải thích rõ nhất) và Cursor (fix nhanh nhất)
Round 3: Performance Issues
Test case: N+1 Query Problem
public function getUserOrders()
{
$users = User::all();
foreach ($users as $user) {
echo $user->orders->count();
}
}
Kết quả:
- ChatGPT: Phát hiện, đề xuất eager loading
- Claude: Phát hiện, giải thích impact
- Cursor: Phát hiện, auto-fix với
User::with('orders') - Senior Dev: Phát hiện
Winner: Cả 3 AI đều tốt, nhưng Cursor tiện nhất (1 click fix)
Round 4: Code Style & Best Practices
Test case: Laravel Service class không follow convention
class UserService
{
public function get_user_data($id)
{
$user = User::find($id);
if (!$user) {
return null;
}
return [
'name' => $user->name,
'email' => $user->email,
];
}
}
Issues:
- Snake_case method name (nên dùng camelCase)
- Không throw exception khi user not found
- Không dùng Resource class
Kết quả:
- ChatGPT: Phát hiện 2/3 issues
- Claude: Phát hiện cả 3, suggest dùng UserResource
- Cursor: Phát hiện 2/3
- Senior Dev: Phát hiện cả 3 + gợi ý thêm type hint
Winner: Claude (detail nhất)
Những phát hiện bất ngờ
1. AI rất giỏi tìm “low-hanging fruits”
Những lỗi mà AI bắt được ngay:
- SQL Injection, XSS
- N+1 queries
- Missing validation
- Unused variables
- Inconsistent naming
Đây là những lỗi mà junior dev hay mắc phải. AI giúp bạn tự review trước khi gửi PR, tránh bị senior “chửi”.
2. AI yếu về Business Logic
AI không hiểu:
- Tại sao field này nullable
- Tại sao không validate field kia
- Tại sao logic này “weird” nhưng đúng
Ví dụ: Tôi có đoạn code tính thuế 8% cho một số sản phẩm, 10% cho số khác. AI cứ gợi ý “extract magic number”. Nhưng thực tế đó là luật thuế Nhật Bản, không thể extract.
3. Claude thắng về giải thích, Cursor thắng về tốc độ
- Claude: Giải thích chi tiết, dễ hiểu, phù hợp để học
- Cursor: Fix nhanh, integrate sâu vào IDE, phù hợp để làm
- ChatGPT: Cân bằng, nhưng không xuất sắc ở khía cạnh nào
Workflow thực tế tôi đang dùng
Sau 1 tháng, đây là quy trình tôi settle down:
Bước 1: Code xong → Cursor review ngay (Cmd+L)
- Nhanh, tiện, không phải rời IDE
- Fix các lỗi cơ bản
Bước 2: Trước khi commit → Claude review lần cuối
- Paste toàn bộ file vào Claude
- Hỏi: “Có security issue hoặc performance issue nào không?”
Bước 3: Tạo PR → Senior Dev review
- AI chỉ là “first pass”
- Human review vẫn là bắt buộc
Kết luận: AI Code Review có đáng không?
Có, nhưng với điều kiện:
Dùng AI khi:
- Bạn là junior/mid-level dev, cần “mentor” 24/7
- Bạn làm solo, không có ai review code
- Bạn muốn học best practices
Không dùng AI khi:
- Bạn nghĩ AI thay thế được human review
- Code liên quan đến business logic phức tạp
- Bạn đang làm cho công ty cấm upload code lên cloud
Lời khuyên cuối: AI Code Review giống như Grammarly cho code. Nó bắt được lỗi chính tả, ngữ pháp, nhưng không thể viết hộ bạn một bài văn hay.
Dùng nó như một công cụ, không phải cái nạng.
Điểm yếu lớn nhất của AI khi review code là gì?
Thử Thách Kiến Thức Lịch Sử?
Khám phá hàng trăm câu hỏi trắc nghiệm lịch sử thú vị tại HistoQuiz. Vừa học vừa chơi, nâng cao kiến thức ngay hôm nay!