Skip to content

limem01/coderev

Repository files navigation

CodeRev

PyPI version Python 3.10+ License: MIT CI

An intelligent CLI tool that uses AI to review your code, analyze pull requests, and suggest improvements.

Features

  • Code Analysis: Review individual files or entire directories
  • Git Diff Review: Analyze staged changes before committing
  • GitHub PR Integration: Review pull requests directly from the command line
  • Multi-Language Support: Works with Python, JavaScript, TypeScript, Go, Rust, and more
  • Configurable Focus: Choose between security, performance, style, or bug detection
  • Rich Output: Beautiful terminal output with syntax highlighting

Installation

From PyPI (Recommended)

pip install coderev

With OpenAI support:

pip install coderev[openai]

With all optional dependencies:

pip install coderev[all]

From Source

git clone https://github.com/limem01/coderev.git
cd coderev
pip install -e ".[dev]"

Quick Start

# Review a single file
coderev review app.py

# Review a directory
coderev review src/ --recursive

# Review staged git changes
coderev diff

# Review a GitHub PR
coderev pr https://github.com/owner/repo/pull/123

# Focus on security issues
coderev review app.py --focus security

# Output as JSON
coderev review app.py --format json

GIF Demos

CodeRev CLI demo

Configuration

Create a .coderev.toml in your project root or home directory:

[coderev]
api_key = "your-api-key"  # Or use CODEREV_API_KEY env var
model = "claude-3-sonnet"
focus = ["bugs", "security", "performance"]
ignore_patterns = ["*.test.py", "migrations/*"]
max_file_size = 100000  # bytes
language_hints = true

[github]
token = "ghp_xxx"  # Or use GITHUB_TOKEN env var

Usage

Review Files

# Basic review
coderev review main.py

# Review with specific focus areas
coderev review main.py --focus security --focus performance

# Review multiple files
coderev review src/api.py src/models.py src/utils.py

# Recursive directory review
coderev review ./src --recursive --exclude "*.test.py"

Review Git Changes

# Review staged changes
coderev diff

# Review changes between branches
coderev diff main..feature-branch

# Review last N commits
coderev diff HEAD~3

GitHub PR Review

# Review a PR by URL
coderev pr https://github.com/owner/repo/pull/42

# Review a PR by number (requires GitHub remote)
coderev pr 42

# Post review comments directly to PR
coderev pr 42 --post-comments

Output Formats

# Rich terminal output (default)
coderev review app.py

# JSON output for CI/CD pipelines
coderev review app.py --format json

# Markdown output
coderev review app.py --format markdown

# SARIF output for GitHub Security
coderev review app.py --format sarif

Focus Areas

Focus Description
bugs Logic errors, null references, off-by-one errors
security SQL injection, XSS, hardcoded secrets, unsafe deserialization
performance N+1 queries, unnecessary loops, memory leaks
style Code style, naming conventions, documentation
architecture Design patterns, SOLID principles, coupling
testing Test coverage suggestions, edge cases

CI/CD Integration

GitHub Action (Marketplace)

The easiest way to use CodeRev in your CI/CD pipeline is via our official GitHub Action:

name: AI Code Review
on: [pull_request]

permissions:
  contents: read
  pull-requests: write

jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Run CodeRev
        uses: limem01/coderev@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          github_token: ${{ secrets.GITHUB_TOKEN }}
          model: 'claude-3-sonnet-20240229'
          focus: 'bugs,security,performance'
          fail_on: 'critical'
          post_review: 'true'

Action Inputs

Input Description Required Default
anthropic_api_key Anthropic API key for Claude models No* -
openai_api_key OpenAI API key for GPT models No* -
github_token GitHub token for posting reviews Yes ${{ github.token }}
model Model to use No claude-3-sonnet-20240229
focus Focus areas (comma-separated) No bugs,security,performance
fail_on Fail on severity level No -
post_review Post review to PR No true
max_files Max files to review No 20
ignore_patterns Patterns to ignore No *.test.*,*.spec.*

*Either anthropic_api_key or openai_api_key is required.

Action Outputs

Output Description
score Code quality score (0-100)
issues_count Total issues found
critical_count Critical issues
high_count High severity issues
medium_count Medium severity issues
low_count Low severity issues
review_url URL to posted review

Advanced Example

name: AI Code Review
on:
  pull_request:
    types: [opened, synchronize, reopened]

permissions:
  contents: read
  pull-requests: write

jobs:
  coderev:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      
      - name: Run CodeRev
        id: review
        uses: limem01/coderev@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          github_token: ${{ secrets.GITHUB_TOKEN }}
          focus: 'bugs,security,performance,architecture'
          fail_on: 'high'
          max_files: '30'
          ignore_patterns: '*.test.*,*.spec.*,*.min.js,package-lock.json'
      
      - name: Quality Gate
        if: always()
        run: |
          if [ "${{ steps.review.outputs.score }}" -lt 70 ]; then
            echo "::error::Code quality score is below 70"
            exit 1
          fi

Manual GitHub Actions Setup

If you prefer more control, you can install CodeRev directly:

name: Code Review
on: [pull_request]

jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: '3.11'
      - run: pip install coderev
      - run: coderev diff origin/main...HEAD --format sarif > results.sarif
        env:
          CODEREV_API_KEY: ${{ secrets.CODEREV_API_KEY }}
      - uses: github/codeql-action/upload-sarif@v3
        with:
          sarif_file: results.sarif

Pre-commit Hook

# .pre-commit-config.yaml
repos:
  - repo: local
    hooks:
      - id: coderev
        name: AI Code Review
        entry: coderev diff --staged --fail-on high
        language: system
        pass_filenames: false

API

CodeRev can also be used as a Python library:

from coderev import CodeReviewer

reviewer = CodeReviewer(api_key="your-key")

# Review code string
result = reviewer.review_code("""
def get_user(id):
    query = f"SELECT * FROM users WHERE id = {id}"
    return db.execute(query)
""", language="python", focus=["security"])

for issue in result.issues:
    print(f"[{issue.severity}] Line {issue.line}: {issue.message}")

Examples

The examples/ directory contains practical code samples:

Development

# Clone and install dev dependencies
git clone https://github.com/limem01/coderev.git
cd coderev
pip install -e ".[dev]"

# Run tests
pytest

# Run linting
ruff check .

# Run type checking
mypy src/

Publishing

CodeRev is automatically published to PyPI when a new GitHub release is created:

  1. Update the version in pyproject.toml
  2. Commit and push to main
  3. Create a new release on GitHub
  4. The CI will automatically build and publish to PyPI

For this to work, you need to configure trusted publishing on PyPI:

  1. Go to PyPI → Your projects → coderev → Publishing
  2. Add a new trusted publisher with:
    • Owner: limem01
    • Repository: coderev
    • Workflow name: publish.yml
    • Environment name: pypi (and testpypi for TestPyPI)

Comparison with Other Tools

Not sure if CodeRev is right for you? Check our detailed comparison with other AI code review tools including:

  • Codium PR-Agent - Open source PR-focused tool
  • CodeRabbit - Commercial SaaS solution
  • Amazon CodeGuru - AWS ML-powered reviews
  • Sourcery - Python-focused AI assistant

TL;DR: Choose CodeRev for CLI-first workflows, self-hosting, custom rules, and transparent pricing.

License

MIT License - see LICENSE for details.

Contributing

Contributions are welcome! Please read our Contributing Guide for details.

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors