rcrewai 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,660 @@
1
+ ---
2
+ layout: example
3
+ title: Code Review Crew
4
+ description: Automated code review system with specialized agents for security, performance, and quality analysis
5
+ ---
6
+
7
+ # Code Review Crew
8
+
9
+ This example demonstrates an automated code review system using specialized AI agents that analyze code for security vulnerabilities, performance issues, code quality, and documentation completeness. The system provides comprehensive feedback and suggestions for improvement.
10
+
11
+ ## Overview
12
+
13
+ Our code review crew consists of:
14
+ - **Security Analyst** - Identifies vulnerabilities and security best practices
15
+ - **Performance Specialist** - Analyzes code efficiency and optimization opportunities
16
+ - **Code Quality Reviewer** - Ensures coding standards and maintainability
17
+ - **Documentation Specialist** - Reviews and improves code documentation
18
+ - **Integration Tester** - Validates integration patterns and testing coverage
19
+
20
+ ## Complete Implementation
21
+
22
+ ```ruby
23
+ require 'rcrewai'
24
+ require 'json'
25
+
26
+ # Configure RCrewAI for code analysis
27
+ RCrewAI.configure do |config|
28
+ config.llm_provider = :openai
29
+ config.temperature = 0.2 # Lower temperature for consistent analysis
30
+ end
31
+
32
+ # ===== CODE REVIEW SPECIALISTS =====
33
+
34
+ # Security Analysis Agent
35
+ security_analyst = RCrewAI::Agent.new(
36
+ name: "security_analyst",
37
+ role: "Senior Security Code Reviewer",
38
+ goal: "Identify security vulnerabilities and ensure secure coding practices",
39
+ backstory: "You are an expert cybersecurity professional with deep knowledge of common vulnerabilities (OWASP Top 10), secure coding practices, and threat modeling. You excel at identifying security risks in code and providing actionable remediation advice.",
40
+ tools: [
41
+ RCrewAI::Tools::FileReader.new,
42
+ RCrewAI::Tools::FileWriter.new
43
+ ],
44
+ verbose: true
45
+ )
46
+
47
+ # Performance Specialist Agent
48
+ performance_specialist = RCrewAI::Agent.new(
49
+ name: "performance_specialist",
50
+ role: "Performance Optimization Expert",
51
+ goal: "Identify performance bottlenecks and optimize code efficiency",
52
+ backstory: "You are a performance engineering expert who understands algorithmic complexity, memory management, and system optimization. You excel at identifying inefficient code patterns and suggesting improvements.",
53
+ tools: [
54
+ RCrewAI::Tools::FileReader.new,
55
+ RCrewAI::Tools::FileWriter.new
56
+ ],
57
+ verbose: true
58
+ )
59
+
60
+ # Code Quality Reviewer Agent
61
+ quality_reviewer = RCrewAI::Agent.new(
62
+ name: "quality_reviewer",
63
+ role: "Senior Code Quality Specialist",
64
+ goal: "Ensure code maintainability, readability, and adherence to best practices",
65
+ backstory: "You are a senior developer with expertise in clean code principles, design patterns, and software architecture. You excel at identifying code smells and suggesting refactoring improvements.",
66
+ tools: [
67
+ RCrewAI::Tools::FileReader.new,
68
+ RCrewAI::Tools::FileWriter.new
69
+ ],
70
+ verbose: true
71
+ )
72
+
73
+ # Documentation Specialist Agent
74
+ documentation_specialist = RCrewAI::Agent.new(
75
+ name: "documentation_specialist",
76
+ role: "Technical Documentation Expert",
77
+ goal: "Ensure comprehensive and clear code documentation",
78
+ backstory: "You are a technical writer with deep programming knowledge who excels at creating clear, comprehensive documentation. You ensure code is well-documented for maintainability and knowledge transfer.",
79
+ tools: [
80
+ RCrewAI::Tools::FileReader.new,
81
+ RCrewAI::Tools::FileWriter.new
82
+ ],
83
+ verbose: true
84
+ )
85
+
86
+ # Integration Testing Specialist
87
+ testing_specialist = RCrewAI::Agent.new(
88
+ name: "testing_specialist",
89
+ role: "Software Testing and Integration Expert",
90
+ goal: "Validate testing coverage and integration patterns",
91
+ backstory: "You are a quality assurance expert specializing in automated testing, test coverage analysis, and integration patterns. You ensure code is properly tested and integrates well with existing systems.",
92
+ tools: [
93
+ RCrewAI::Tools::FileReader.new,
94
+ RCrewAI::Tools::FileWriter.new
95
+ ],
96
+ verbose: true
97
+ )
98
+
99
+ # Create code review crew
100
+ code_review_crew = RCrewAI::Crew.new("code_review_crew")
101
+
102
+ # Add agents to crew
103
+ code_review_crew.add_agent(security_analyst)
104
+ code_review_crew.add_agent(performance_specialist)
105
+ code_review_crew.add_agent(quality_reviewer)
106
+ code_review_crew.add_agent(documentation_specialist)
107
+ code_review_crew.add_agent(testing_specialist)
108
+
109
+ # ===== CODE REVIEW TASKS =====
110
+
111
+ # Security Review Task
112
+ security_review_task = RCrewAI::Task.new(
113
+ name: "security_analysis",
114
+ description: "Perform comprehensive security analysis of the provided code. Identify potential vulnerabilities including injection attacks, authentication issues, authorization problems, data exposure risks, and insecure configurations. Provide specific remediation recommendations for each issue found.",
115
+ expected_output: "Detailed security analysis report with vulnerability findings, risk ratings (Critical/High/Medium/Low), and specific remediation steps",
116
+ agent: security_analyst,
117
+ async: true
118
+ )
119
+
120
+ # Performance Review Task
121
+ performance_review_task = RCrewAI::Task.new(
122
+ name: "performance_analysis",
123
+ description: "Analyze code for performance issues including algorithmic complexity, memory usage, database query optimization, caching opportunities, and resource management. Identify bottlenecks and suggest optimization strategies.",
124
+ expected_output: "Performance analysis report with bottleneck identification, complexity analysis, and optimization recommendations with expected impact",
125
+ agent: performance_specialist,
126
+ async: true
127
+ )
128
+
129
+ # Code Quality Review Task
130
+ quality_review_task = RCrewAI::Task.new(
131
+ name: "code_quality_review",
132
+ description: "Review code for maintainability, readability, and adherence to coding standards. Identify code smells, design pattern violations, naming issues, and structural problems. Suggest refactoring improvements and architectural enhancements.",
133
+ expected_output: "Code quality assessment with maintainability score, identified code smells, and refactoring recommendations",
134
+ agent: quality_reviewer,
135
+ async: true
136
+ )
137
+
138
+ # Documentation Review Task
139
+ documentation_review_task = RCrewAI::Task.new(
140
+ name: "documentation_review",
141
+ description: "Evaluate code documentation completeness and clarity. Review function/method documentation, API documentation, README files, and inline comments. Identify missing documentation and suggest improvements.",
142
+ expected_output: "Documentation assessment with completeness score, missing documentation identification, and improvement suggestions",
143
+ agent: documentation_specialist,
144
+ async: true
145
+ )
146
+
147
+ # Testing and Integration Review Task
148
+ testing_review_task = RCrewAI::Task.new(
149
+ name: "testing_integration_review",
150
+ description: "Assess test coverage, test quality, and integration patterns. Review unit tests, integration tests, and mocking strategies. Identify testing gaps and suggest improvements for better reliability.",
151
+ expected_output: "Testing assessment with coverage analysis, test quality evaluation, and recommendations for improved testing strategy",
152
+ agent: testing_specialist,
153
+ async: true
154
+ )
155
+
156
+ # Add tasks to crew
157
+ code_review_crew.add_task(security_review_task)
158
+ code_review_crew.add_task(performance_review_task)
159
+ code_review_crew.add_task(quality_review_task)
160
+ code_review_crew.add_task(documentation_review_task)
161
+ code_review_crew.add_task(testing_review_task)
162
+
163
+ # ===== SAMPLE CODE FOR REVIEW =====
164
+
165
+ puts "šŸ“ Creating Sample Code for Review"
166
+ puts "="*50
167
+
168
+ # Sample Ruby application with intentional issues for demonstration
169
+ sample_code = <<~RUBY
170
+ # user_controller.rb
171
+ class UserController < ApplicationController
172
+ def show
173
+ @user = User.find(params[:id]) # Potential security issue: no authorization
174
+ render json: @user.to_json # Potential data exposure
175
+ end
176
+
177
+ def create
178
+ # SQL injection vulnerability
179
+ user_data = "INSERT INTO users (name, email) VALUES ('#{params[:name]}', '#{params[:email]}')"
180
+ ActiveRecord::Base.connection.execute(user_data)
181
+
182
+ # Performance issue: N+1 query problem
183
+ users = User.all
184
+ users.each do |user|
185
+ user.posts.each do |post| # N+1 queries
186
+ puts post.title
187
+ end
188
+ end
189
+
190
+ redirect_to users_path
191
+ end
192
+
193
+ def update
194
+ user = User.find(params[:id])
195
+
196
+ # Security issue: mass assignment
197
+ user.update(params[:user])
198
+
199
+ # Performance issue: expensive operation in loop
200
+ User.all.each do |u|
201
+ u.calculate_score # Expensive calculation
202
+ end
203
+
204
+ render json: { status: 'updated' }
205
+ end
206
+
207
+ # Missing documentation
208
+ def complex_calculation(data)
209
+ result = 0
210
+ data.each do |item|
211
+ if item > 0
212
+ result += item * 2
213
+ elsif item < 0
214
+ result -= item
215
+ else
216
+ result += 1
217
+ end
218
+ end
219
+ result
220
+ end
221
+
222
+ private
223
+
224
+ def user_params
225
+ params.require(:user).permit(:name, :email) # Good practice but not used
226
+ end
227
+ end
228
+
229
+ # user_service.rb
230
+ class UserService
231
+ def initialize
232
+ @api_key = "sk-1234567890abcdef" # Hardcoded secret
233
+ end
234
+
235
+ def process_users
236
+ users = User.where("created_at > ?", 1.month.ago) # Could be optimized
237
+
238
+ # Memory issue: loading all records at once
239
+ users.find_each(batch_size: 10000) do |user|
240
+ process_user(user)
241
+ end
242
+ end
243
+
244
+ def process_user(user)
245
+ # No error handling
246
+ response = HTTParty.get("https://api.example.com/users/#{user.id}",
247
+ headers: { 'Authorization' => @api_key })
248
+
249
+ # No validation
250
+ user.update(external_id: response['id'])
251
+ end
252
+ end
253
+ RUBY
254
+
255
+ File.write("sample_code_for_review.rb", sample_code)
256
+
257
+ # Sample test file with issues
258
+ sample_tests = <<~RUBY
259
+ # user_controller_spec.rb
260
+ require 'rails_helper'
261
+
262
+ RSpec.describe UserController, type: :controller do
263
+ # Missing setup and context
264
+
265
+ it "shows user" do
266
+ user = User.create(name: "Test", email: "test@example.com")
267
+ get :show, params: { id: user.id }
268
+ expect(response).to be_successful
269
+ # Missing assertions about response content
270
+ end
271
+
272
+ # Missing test cases:
273
+ # - Authorization tests
274
+ # - Error handling tests
275
+ # - Edge case tests
276
+ # - Security tests
277
+
278
+ it "creates user" do
279
+ post :create, params: { name: "New User", email: "new@example.com" }
280
+ expect(response).to redirect_to(users_path)
281
+ # Missing validation of actual user creation
282
+ # Missing test for SQL injection vulnerability
283
+ end
284
+ end
285
+ RUBY
286
+
287
+ File.write("sample_tests.rb", sample_tests)
288
+
289
+ puts "āœ… Sample files created:"
290
+ puts " - sample_code_for_review.rb (Ruby controller with various issues)"
291
+ puts " - sample_tests.rb (Test file with coverage gaps)"
292
+
293
+ # ===== EXECUTE CODE REVIEW =====
294
+
295
+ puts "\nšŸ” Starting Comprehensive Code Review"
296
+ puts "="*50
297
+
298
+ # Execute the code review crew
299
+ results = code_review_crew.execute
300
+
301
+ # ===== CODE REVIEW RESULTS =====
302
+
303
+ puts "\nšŸ“Š CODE REVIEW RESULTS"
304
+ puts "="*50
305
+
306
+ puts "Overall Review Completion: #{results[:success_rate]}%"
307
+ puts "Total Review Areas: #{results[:total_tasks]}"
308
+ puts "Completed Reviews: #{results[:completed_tasks]}"
309
+ puts "Review Status: #{results[:success_rate] >= 80 ? 'COMPLETE' : 'INCOMPLETE'}"
310
+
311
+ review_categories = {
312
+ "security_analysis" => "šŸ”’ Security Analysis",
313
+ "performance_analysis" => "⚔ Performance Analysis",
314
+ "code_quality_review" => "✨ Code Quality Review",
315
+ "documentation_review" => "šŸ“š Documentation Review",
316
+ "testing_integration_review" => "🧪 Testing & Integration"
317
+ }
318
+
319
+ puts "\nšŸ“‹ REVIEW BREAKDOWN:"
320
+ puts "-"*40
321
+
322
+ results[:results].each do |review_result|
323
+ task_name = review_result[:task].name
324
+ category_name = review_categories[task_name] || task_name
325
+ status_emoji = review_result[:status] == :completed ? "āœ…" : "āŒ"
326
+
327
+ puts "#{status_emoji} #{category_name}"
328
+ puts " Reviewer: #{review_result[:assigned_agent] || review_result[:task].agent.name}"
329
+ puts " Status: #{review_result[:status]}"
330
+
331
+ if review_result[:status] == :completed
332
+ word_count = review_result[:result].split.length
333
+ puts " Analysis: #{word_count} words of detailed feedback"
334
+ else
335
+ puts " Error: #{review_result[:error]&.message}"
336
+ end
337
+ puts
338
+ end
339
+
340
+ # ===== SAVE CODE REVIEW REPORTS =====
341
+
342
+ puts "\nšŸ’¾ GENERATING CODE REVIEW REPORTS"
343
+ puts "-"*40
344
+
345
+ completed_reviews = results[:results].select { |r| r[:status] == :completed }
346
+
347
+ # Create review reports directory
348
+ review_dir = "code_review_#{Date.today.strftime('%Y%m%d')}"
349
+ Dir.mkdir(review_dir) unless Dir.exist?(review_dir)
350
+
351
+ review_reports = {}
352
+
353
+ completed_reviews.each do |review_result|
354
+ task_name = review_result[:task].name
355
+ review_content = review_result[:result]
356
+
357
+ filename = "#{review_dir}/#{task_name}_report.md"
358
+ review_reports[task_name] = filename
359
+
360
+ formatted_report = <<~REPORT
361
+ # #{review_categories[task_name] || task_name.split('_').map(&:capitalize).join(' ')} Report
362
+
363
+ **Reviewer:** #{review_result[:assigned_agent] || review_result[:task].agent.name}
364
+ **Review Date:** #{Time.now.strftime('%B %d, %Y')}
365
+ **Code Files Reviewed:** sample_code_for_review.rb, sample_tests.rb
366
+
367
+ ---
368
+
369
+ #{review_content}
370
+
371
+ ---
372
+
373
+ **Review Methodology:**
374
+ - Static code analysis
375
+ - Best practices evaluation
376
+ - Industry standards compliance
377
+ - Security vulnerability assessment
378
+
379
+ *Generated by RCrewAI Code Review System*
380
+ REPORT
381
+
382
+ File.write(filename, formatted_report)
383
+ puts " āœ… #{File.basename(filename)}"
384
+ end
385
+
386
+ # ===== CONSOLIDATED CODE REVIEW SUMMARY =====
387
+
388
+ # Calculate overall scores and priorities
389
+ security_issues = completed_reviews.find { |r| r[:task].name == "security_analysis" }
390
+ performance_issues = completed_reviews.find { |r| r[:task].name == "performance_analysis" }
391
+ quality_issues = completed_reviews.find { |r| r[:task].name == "code_quality_review" }
392
+
393
+ summary_report = <<~SUMMARY
394
+ # Code Review Summary Report
395
+
396
+ **Review Date:** #{Time.now.strftime('%B %d, %Y')}
397
+ **Files Reviewed:** sample_code_for_review.rb, sample_tests.rb
398
+ **Review Completion:** #{results[:success_rate]}%
399
+
400
+ ## Executive Summary
401
+
402
+ The code review identified several areas requiring attention across security, performance,
403
+ code quality, documentation, and testing. While the code functions correctly, there are
404
+ important improvements needed before production deployment.
405
+
406
+ ## Critical Issues Found
407
+
408
+ ### šŸ”“ High Priority (Fix Immediately)
409
+ - **SQL Injection Vulnerability** - Direct string interpolation in SQL queries
410
+ - **Hardcoded API Keys** - Sensitive credentials in source code
411
+ - **Missing Authorization** - No access control on user data endpoints
412
+ - **Mass Assignment Vulnerability** - Unfiltered parameter updates
413
+
414
+ ### 🟔 Medium Priority (Fix Before Production)
415
+ - **N+1 Query Problem** - Inefficient database access patterns
416
+ - **Missing Error Handling** - No exception handling for external API calls
417
+ - **Insufficient Test Coverage** - Critical security scenarios not tested
418
+ - **Performance Inefficiencies** - Expensive operations in loops
419
+
420
+ ### 🟢 Low Priority (Improvement Opportunities)
421
+ - **Missing Documentation** - Method documentation incomplete
422
+ - **Code Organization** - Opportunities for better structure
423
+ - **Naming Conventions** - Some inconsistencies in naming
424
+
425
+ ## Review Details by Category
426
+
427
+ #{completed_reviews.map do |review|
428
+ category = review_categories[review[:task].name]
429
+ "### #{category}\n**Status:** Completed\n**Report:** #{review_reports[review[:task].name]}\n"
430
+ end.join("\n")}
431
+
432
+ ## Recommendations for Development Team
433
+
434
+ ### Immediate Actions Required
435
+ 1. **Fix Security Vulnerabilities** - Address all high-priority security issues
436
+ 2. **Remove Hardcoded Secrets** - Move API keys to environment variables
437
+ 3. **Add Authorization Checks** - Implement proper access controls
438
+ 4. **Sanitize Database Queries** - Use parameterized queries or ORM methods
439
+
440
+ ### Process Improvements
441
+ 1. **Automated Security Scanning** - Integrate tools like Brakeman or CodeQL
442
+ 2. **Performance Monitoring** - Add APM tools to catch performance issues
443
+ 3. **Code Quality Gates** - Implement automated quality checks in CI/CD
444
+ 4. **Security Training** - Team training on secure coding practices
445
+
446
+ ## Quality Metrics
447
+
448
+ - **Security Score:** #{security_issues ? 'C-' : 'Not Available'} (Critical issues found)
449
+ - **Performance Score:** #{performance_issues ? 'C+' : 'Not Available'} (Multiple inefficiencies)
450
+ - **Code Quality Score:** #{quality_issues ? 'B-' : 'Not Available'} (Good structure, needs cleanup)
451
+ - **Test Coverage:** Estimated 40% (Insufficient for production)
452
+ - **Documentation Coverage:** Estimated 30% (Needs significant improvement)
453
+
454
+ ## Next Steps
455
+
456
+ 1. **Developer Review Meeting** - Discuss findings with development team
457
+ 2. **Priority Issue Fixing** - Address critical and high priority items first
458
+ 3. **Process Integration** - Integrate automated code review into workflow
459
+ 4. **Follow-up Review** - Schedule review after fixes are implemented
460
+
461
+ ## Tools and Resources Recommended
462
+
463
+ ### Security Tools
464
+ - **Brakeman** - Rails security scanner
465
+ - **bundler-audit** - Gem vulnerability checking
466
+ - **OWASP ZAP** - Dynamic security testing
467
+
468
+ ### Performance Tools
469
+ - **Bullet** - N+1 query detection
470
+ - **Rack Mini Profiler** - Performance profiling
471
+ - **New Relic/DataDog** - APM monitoring
472
+
473
+ ### Code Quality Tools
474
+ - **RuboCop** - Ruby style and quality checker
475
+ - **Reek** - Code smell detection
476
+ - **SimpleCov** - Test coverage analysis
477
+
478
+ ---
479
+
480
+ **Next Review Date:** #{(Date.today + 14).strftime('%B %d, %Y')}
481
+ **Review Type:** Follow-up after issue remediation
482
+
483
+ *This comprehensive code review was conducted by the RCrewAI automated code review system, providing objective analysis across multiple quality dimensions.*
484
+ SUMMARY
485
+
486
+ File.write("#{review_dir}/CODE_REVIEW_SUMMARY.md", summary_report)
487
+ puts " āœ… CODE_REVIEW_SUMMARY.md"
488
+
489
+ # ===== ACTION ITEMS TRACKING =====
490
+
491
+ action_items = {
492
+ "critical_issues" => [
493
+ {
494
+ "title" => "Fix SQL Injection Vulnerability",
495
+ "description" => "Replace string interpolation with parameterized queries",
496
+ "priority" => "Critical",
497
+ "estimated_effort" => "2 hours",
498
+ "assignee" => "TBD"
499
+ },
500
+ {
501
+ "title" => "Remove Hardcoded API Keys",
502
+ "description" => "Move secrets to environment variables",
503
+ "priority" => "Critical",
504
+ "estimated_effort" => "1 hour",
505
+ "assignee" => "TBD"
506
+ }
507
+ ],
508
+ "high_priority" => [
509
+ {
510
+ "title" => "Add Authorization Checks",
511
+ "description" => "Implement proper access controls on all endpoints",
512
+ "priority" => "High",
513
+ "estimated_effort" => "4 hours",
514
+ "assignee" => "TBD"
515
+ },
516
+ {
517
+ "title" => "Fix N+1 Query Issues",
518
+ "description" => "Optimize database queries with includes/joins",
519
+ "priority" => "High",
520
+ "estimated_effort" => "3 hours",
521
+ "assignee" => "TBD"
522
+ }
523
+ ],
524
+ "medium_priority" => [
525
+ {
526
+ "title" => "Add Error Handling",
527
+ "description" => "Implement proper exception handling for external APIs",
528
+ "priority" => "Medium",
529
+ "estimated_effort" => "2 hours",
530
+ "assignee" => "TBD"
531
+ },
532
+ {
533
+ "title" => "Improve Test Coverage",
534
+ "description" => "Add security and edge case tests",
535
+ "priority" => "Medium",
536
+ "estimated_effort" => "6 hours",
537
+ "assignee" => "TBD"
538
+ }
539
+ ]
540
+ }
541
+
542
+ File.write("#{review_dir}/action_items.json", JSON.pretty_generate(action_items))
543
+ puts " āœ… action_items.json"
544
+
545
+ puts "\nšŸŽ‰ CODE REVIEW COMPLETED!"
546
+ puts "="*50
547
+ puts "šŸ“ Complete review package saved to: #{review_dir}/"
548
+ puts ""
549
+ puts "šŸ” **Review Summary:**"
550
+ puts " • #{completed_reviews.length} analysis areas completed"
551
+ puts " • Critical security issues identified and documented"
552
+ puts " • Performance bottlenecks highlighted with solutions"
553
+ puts " • Code quality improvements recommended"
554
+ puts " • Testing gaps identified with specific recommendations"
555
+ puts ""
556
+ puts "āš ļø **Critical Actions Required:**"
557
+ puts " • Fix SQL injection vulnerability (URGENT)"
558
+ puts " • Remove hardcoded API keys (URGENT)"
559
+ puts " • Implement authorization checks"
560
+ puts " • Address N+1 query performance issues"
561
+ puts ""
562
+ puts "šŸ“… **Recommended Timeline:**"
563
+ puts " • Critical fixes: Within 24 hours"
564
+ puts " • High priority: Within 1 week"
565
+ puts " • Medium priority: Within 2 weeks"
566
+ puts " • Follow-up review: In 2 weeks"
567
+ ```
568
+
569
+ ## Advanced Code Review Features
570
+
571
+ ### 1. **Multi-Dimensional Analysis**
572
+ Each specialist focuses on their expertise area:
573
+
574
+ ```ruby
575
+ security_analyst # OWASP Top 10, vulnerability analysis
576
+ performance_specialist # Algorithmic complexity, bottlenecks
577
+ quality_reviewer # Clean code, maintainability
578
+ documentation_specialist # Technical writing, completeness
579
+ testing_specialist # Coverage, integration patterns
580
+ ```
581
+
582
+ ### 2. **Parallel Review Process**
583
+ All review areas are analyzed simultaneously:
584
+
585
+ ```ruby
586
+ # All review tasks run in parallel
587
+ security_review_task.async = true
588
+ performance_review_task.async = true
589
+ quality_review_task.async = true
590
+ documentation_review_task.async = true
591
+ testing_review_task.async = true
592
+ ```
593
+
594
+ ### 3. **Comprehensive Reporting**
595
+ Generates detailed reports for each area plus consolidated summary:
596
+
597
+ - Individual specialist reports
598
+ - Executive summary with priorities
599
+ - Action items with effort estimates
600
+ - Tool recommendations
601
+ - Follow-up schedule
602
+
603
+ ### 4. **Actionable Recommendations**
604
+ Each finding includes specific remediation steps:
605
+
606
+ ```ruby
607
+ # Example security finding
608
+ "SQL Injection Vulnerability in UserController#create
609
+ Risk: Critical
610
+ Fix: Replace string interpolation with User.create(user_params)
611
+ Effort: 2 hours"
612
+ ```
613
+
614
+ ## Integration Patterns
615
+
616
+ ### CI/CD Integration
617
+ ```ruby
618
+ # Add to your CI pipeline
619
+ class CodeReviewPipeline
620
+ def self.review_pull_request(pr_files)
621
+ review_crew = CodeReviewCrew.new
622
+ review_crew.analyze_files(pr_files)
623
+
624
+ if review_crew.has_critical_issues?
625
+ fail_build_with_report(review_crew.report)
626
+ else
627
+ post_review_comments(review_crew.suggestions)
628
+ end
629
+ end
630
+ end
631
+ ```
632
+
633
+ ### IDE Integration
634
+ ```ruby
635
+ # Real-time code analysis
636
+ class IDECodeReview
637
+ def analyze_on_save(file_path)
638
+ quick_review = CodeReviewCrew.new(mode: :quick)
639
+ issues = quick_review.analyze_file(file_path)
640
+
641
+ display_inline_warnings(issues)
642
+ end
643
+ end
644
+ ```
645
+
646
+ ### Team Workflow Integration
647
+ ```ruby
648
+ # Slack notifications for review results
649
+ class ReviewNotifier
650
+ def notify_team(review_results)
651
+ if review_results.has_critical_issues?
652
+ send_urgent_slack_message(review_results.critical_issues)
653
+ end
654
+
655
+ create_jira_tickets(review_results.action_items)
656
+ end
657
+ end
658
+ ```
659
+
660
+ This automated code review system provides comprehensive analysis across all critical dimensions of code quality, helping teams identify and fix issues before they reach production while maintaining high development velocity.