How ussamarei/ai-powered-code-review-assistant works
AI Code Review Assistant is a GitHub Action that turns pull-request changes into severity-filtered inline review findings. The documented flow fetches changed files, parses diffs and Java structure, enriches each review with related code, calls an LLM with Gemini-to-Groq failover, aggregates findings, and publishes a GitHub review or Actions job summary. App and ReviewOrchestrator are the wiring and coordination layers. Some runtime details are documented but their implementation was not sampled; links for those steps follow the README’s stated architecture.
Main entry points: FileReviewTask.java Per-file review · ReviewOrchestrator.java Review orchestrator · ContextBuilder.java Context enrichment · App.java Application wiring
Components 24
Action entry
- GitHub Action
action.yml - Application wiring
src/main/java/dev/codereviewer/App.java - Review configuration
src/main/java/dev/codereviewer/config/ReviewConfig.java
GitHub integration
- PR data service
src/main/java/dev/codereviewer/github/PullRequestService.java - Review publisher
src/main/java/dev/codereviewer/github/ReviewPublisher.java
Code analysis
- Diff parser
src/main/java/dev/codereviewer/parser/DiffParser.java - AST analyzer
src/main/java/dev/codereviewer/parser/AstAnalyzer.java - Structural context
src/main/java/dev/codereviewer/parser/CodeContext.java - Context enrichment
src/main/java/dev/codereviewer/context/ContextBuilder.java - Context chunking
src/main/java/dev/codereviewer/context/ContextChunker.java
Review pipeline
- Review orchestrator
src/main/java/dev/codereviewer/review/ReviewOrchestrator.java - Per-file review
src/main/java/dev/codereviewer/review/FileReviewTask.java - Prompt builder
src/main/java/dev/codereviewer/llm/PromptBuilder.java - Response parser
src/main/java/dev/codereviewer/llm/ResponseParser.java - Review findings
src/main/java/dev/codereviewer/llm/ReviewFinding.java - Aggregated results
src/main/java/dev/codereviewer/review/ReviewResult.java
LLM providers
- LLM failover router
src/main/java/dev/codereviewer/llm/LlmRouter.java - Provider interface
src/main/java/dev/codereviewer/llm/LlmClient.java - Gemini client
src/main/java/dev/codereviewer/llm/GeminiClient.java - Groq client
src/main/java/dev/codereviewer/llm/GroqClient.java
Other components
- Pull request event
- GitHub API
- LLM APIs
- Actions job summary
Connections 29
- Pull request event → GitHub Action: triggers
- GitHub Action → Application wiring: runs
- Application wiring → Review configuration: loads
- Application wiring → Review orchestrator: starts
- Review orchestrator → PR data service: fetches files
- PR data service → GitHub API: reads PR data
- Review orchestrator → Context enrichment: creates context
- Context enrichment → PR data service: fetches source
- Context enrichment → AST analyzer: analyzes source
- Review orchestrator → Per-file review: dispatches files
- Per-file review → Diff parser: parses patch
- Per-file review → AST analyzer: analyzes changes
- AST analyzer → Structural context: produces structure
- Per-file review → Context enrichment: gets related code
- Per-file review → Context chunking: fits context
- Per-file review → Prompt builder: builds prompt
- Per-file review → LLM failover router: requests review
- LLM failover router → Gemini client: tries primary
- LLM failover router → Groq client: fails over
- Gemini client → Provider interface: implements
- Groq client → Provider interface: implements
- Gemini client → LLM APIs: sends request
- Groq client → LLM APIs: sends request
- Per-file review → Response parser: parses response
- Response parser → Review findings: creates findings
- Review orchestrator → Aggregated results: aggregates findings
- Review orchestrator → Review publisher: publishes results
- Review publisher → GitHub API: posts review
- Review publisher → Actions job summary: writes fallback