Automated Pre-Review
AI catches issues before human review
Transform code reviews from bottlenecks into accelerators. Learn AI-powered review workflows that catch more issues, provide better feedback, and turn reviews into learning opportunities.
Traditional code review challenges:
AI-powered review benefits:
Impact: Complete reviews 5x faster while catching 3x more issues.
Automated Pre-Review
AI catches issues before human review
Review Enhancement
Augment human reviews with AI insights
Learning Reviews
Turn reviews into teaching moments
Review Automation
Automate repetitive review tasks
Automatic PR Analysis
name: AI Code Reviewon: pull_request: types: [opened, synchronize]
jobs: ai-review: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Run AI Review run: | cursor review \ --pr ${{ github.event.pull_request.number }} \ --checks "bugs,security,performance,style" \ --comment-on-issues
BugBot Configuration
## Review Focus Areas
### Security Critical
- SQL injection vulnerabilities- XSS attack vectors- Authentication bypasses- Exposed secrets or keys
### Performance Issues
- N+1 query problems- Memory leaks- Inefficient algorithms- Missing indexes
### Code Quality
- Complex functions (>50 lines)- Deep nesting (>4 levels)- Magic numbers- Missing error handling
AI Review Results
## 🤖 AI Review Summary
### 🚨 Critical Issues (2)
1. **SQL Injection Risk** - Line 45 in `user.controller.js`
```javascript // Vulnerable code const query = `SELECT * FROM users WHERE id = ${userId}`;
// Suggested fix const query = 'SELECT * FROM users WHERE id = ?'; db.query(query, [userId]); ```
DELETE /api/users/:id
endpoint
# AI-Assisted Review Process
## Step 1: Get AI Summary@pr #1234 Provide a comprehensive summary of this PR:1. What problem does it solve?2. What are the main changes?3. What are the risks?4. What needs careful review?
## Step 2: Deep Dive on Complex Areas@file src/payments/processor.jsAnalyze this payment processing logic:- Are there edge cases not handled?- Could this cause double charges?- Is error handling comprehensive?
## Step 3: Security CheckReview all changes for security issues:- Authentication/authorization- Input validation- Data exposure- Third-party dependencies
# Pre-Submission Self-Review
## Before Creating PR@git diff mainReview my changes and:1. Identify potential issues2. Suggest improvements3. Check for breaking changes4. Verify test coverage
## PR Description GenerationGenerate a comprehensive PR description:- Problem statement- Solution approach- Testing performed- Breaking changes- Deployment notes
## Review Response Helper@comment "Please add more tests"Help me address this review comment:1. What tests should I add?2. Generate the test code3. Explain the coverage improvement
## Review with Teaching Focus
@pr #1234@file src/auth/jwt.js
Provide an educational review that:
1. **Explains Issues** (not just identifies them) - Why is this a problem? - What could go wrong? - Real-world examples of failures
2. **Teaches Best Practices** - Industry standards for this pattern - Links to authoritative resources - Alternative approaches with trade-offs
3. **Provides Examples** - Show the corrected code - Demonstrate edge cases - Include test cases
4. **Suggests Learning Resources** - Documentation to read - Similar well-implemented code in the codebase - External tutorials or courses
Example Output:"""
### Security Issue: JWT Secret Handling
**What's wrong:** The JWT secret is hardcoded in the source file.
**Why it matters:** Anyone with access to your code (including public repos) can forge valid tokens, completely bypassing authentication.
**Real incident:** In 2019, a major app exposed JWT secrets in their public repo, leading to unauthorized access to millions of accounts.
**Best practice:** Store secrets in environment variables or a secure vault.
**How to fix:**
```javascript// Badconst secret = 'my-secret-key';
// Goodconst secret = process.env.JWT_SECRET;if (!secret) { throw new Error('JWT_SECRET environment variable not set');}```
Learn more:
src/config/database.js
## Pattern 4: Automated Review Actions
### Streamline Repetitive Review Tasks
1. **Auto-Fix Simple Issues** ```javascript // Cursor review action configuration { "autoFix": { "enabled": true, "issues": [ "formatting", "imports", "simple-linting", "obvious-typos" ], "requireApproval": false } }
Auto-Approve Safe Changes
# Auto-approve certain PRsrules: - name: 'Documentation Only' conditions: - files: '**/*.md' - no-files: '**/*.{js,ts,py,java}' action: 'auto-approve'
- name: 'Dependency Updates' conditions: - author: 'dependabot' - files: '**/package-lock.json' - ci-status: 'passing' action: 'auto-approve'
Smart Review Assignment
Use Cursor Agent to analyze PRs and suggest reviewers:
Workflow:
Ctrl+I
) with this prompt:Analyze @Git changes and suggest appropriate reviewers based on:
- Files modified and their ownership- Technical domains affected (auth, database, UI, etc.)- Complexity of changes- Required expertise
Consider our team structure:
- Security team: auth, crypto, permissions- Database team: migrations, queries, schema- Frontend team: UI components, styling, UX
GitHub Integration Script:
#!/bin/bash# Get PR filesPR_FILES=$(gh pr view $1 --json files -q '.files[].path')
# Create analysis promptecho "Analyzing PR #$1 for reviewer suggestions..."echo "$PR_FILES" > pr-files.txtcursor pr-files.txt
# Review Quality Metrics Workflow in Cursor
## Analyze PR Quality with Agent Mode:
1. Open PR in Cursor2. Use Agent (`Ctrl+I`) to analyze: - "Evaluate the quality of this PR based on @Git changes" - "Check test coverage for @Recent Changes" - "Identify potential issues in @Files"
## Track Metrics Using Cursor Rules:
Create `.cursor/rules/review-metrics.md`:
```javascriptreturn { // Time metrics timeToFirstReview: pr.firstReviewTime - pr.createdAt, timeToMerge: pr.mergedAt - pr.createdAt,
// Quality metrics issuesFoundByAI: aiAnalysis.issues.length, issuesFoundByHumans: pr.comments.filter(c => c.isIssue).length, issuesMissedByHumans: aiAnalysis.issues.filter(i => !pr.comments.some(c => c.line === i.line) ).length,
// Coverage metrics filesReviewed: pr.filesChanged, linesReviewed: pr.additions + pr.deletions, testCoverage: aiAnalysis.testCoverage,
// Outcome metrics bugsInProduction: await trackPostMergeBugs(pr), requiredHotfixes: await trackHotfixes(pr) };
}};
## Advanced Review Techniques
### Technique 1: Architecture Review Automation
```markdown## AI Architecture Review
@pr #1234@folder src/
Perform an architecture review:
1. **Dependency Analysis** - New dependencies added - Circular dependencies - Dependency security audit - Bundle size impact
2. **Design Pattern Compliance** - Follows established patterns? - Introduces new patterns? - Maintains consistency?
3. **Performance Impact** - Database query analysis - API call patterns - Frontend bundle impact - Memory usage patterns
4. **Scalability Concerns** - Will this scale to 10x users? - Database index requirements - Caching opportunities - Rate limiting needs
5. **Maintenance Impact** - Code complexity increase - Documentation needs - Testing requirements - Monitoring additions
Using Cursor for Cross-Team Impact Analysis:
Create Impact Analysis Template
Save as .cursor/templates/cross-team-review.md
:
# Cross-Team Review Analysis
## Check for Breaking Changes:
Use @Git to analyze changes for:
- API contract modifications- Database schema changes- Shared library updates- Configuration changes
## Team-Specific Analysis:
### Mobile Team Impact:
- Check @Files in /api/\* for endpoint changes- Review @Recent Changes for response format updates
### Data Team Impact:
- Check @Files in /migrations/\* for schema changes- Review @Recent Changes in database models
### Frontend Team Impact:
- Check @Files in /shared/\* for component changes- Review @Recent Changes for UI library updates
Workflow Script
#!/bin/bash# Generate impact report using Cursorecho "Analyzing PR #$1 for cross-team impact..."
# Open Cursor with the review templatecursor .cursor/templates/cross-team-review.md
# In Cursor Agent, use prompts like:# "Analyze @Git changes for breaking changes that affect other teams"# "Check if @Recent Changes impact mobile API contracts"# "Review database @Files for schema changes requiring migration"
// Learn from review patternsclass ReviewLearningSystem { async learnFromReview(pr) { // Collect what was missed const missedIssues = await this.findProductionIssues(pr);
if (missedIssues.length > 0) { // Update AI rules await this.updateReviewRules({ pattern: this.extractPattern(missedIssues), description: 'Check for similar issues', examples: missedIssues, });
// Alert team await this.notifyTeam({ title: 'New review pattern detected', pattern: pattern, action: 'Please review and acknowledge', }); } }}
## Pull Request Description
### 🎯 Purpose
<!-- AI will help summarize the purpose -->
### 🔄 Changes
<!-- AI will list all significant changes -->
### 🧪 Testing
- [ ] Unit tests added/updated- [ ] Integration tests passed- [ ] Manual testing completed- [ ] AI test generation run
### 🔍 Review Checklist
- [ ] Code follows style guidelines- [ ] Self-review completed- [ ] AI pre-review addressed- [ ] Documentation updated- [ ] No security issues
### 🤖 AI Review Summary
<!-- Automatically populated by AI -->
### 📝 Additional Notes
<!-- Any special instructions for reviewers -->
Metric | Before AI | With AI | Improvement |
---|---|---|---|
Review time | 45 min | 15 min | 67% faster |
Issues found | 3-5 | 10-15 | 3x more |
Security issues | 20% missed | 2% missed | 90% better |
Review consistency | Variable | High | Standardized |
Learning value | Low | High | Educational |
Master review workflows to:
Continue with:
Remember: The best code review is one that catches bugs, teaches developers, and ships quickly. Use AI to handle the mechanical parts while humans focus on design and knowledge sharing.