Skip to main content

AI-powered code reviewer using OpenRouter LLMs

Project description

Iara - AI Code Reviewer 🧜‍♀️

Iara é uma ferramenta de revisão de código automatizada, agnóstica a projetos e configurável, projetada para rodar em pipelines de CI/CD ou localmente via CLI. Ela utiliza a API OpenRouter para acessar diversos modelos de LLM (Llama 3, Gemini 2.0, etc.) gratuitamente ou em planos pagos.

🚀 Funcionalidades

  • Agnóstica: Configure o contexto do seu projeto (Tech Stack, Regras) via JSON.
  • Multi-Modelo: Suporte a múltiplos provedores via OpenRouter.
  • Fallback Inteligente: Tenta modelos gratuitos automaticamente se o preferido falhar.
  • Rules-Based (Estático): Identifica padrões perigosos instantaneamente sem gastar tokens (ex: GetComponent em loops no Unity).
  • LLM-Based (Inteligente): Usa IA para entender a lógica, segurança e contexto, indo além da sintaxe.
  • GitHub + GitLab: Integração nativa com ambas as plataformas, com comentários automáticos em PRs/MRs.

🧠 Capacidades

A Iara combina diferentes tipos de análise para uma revisão completa:

Tipo O que faz? A Iara cobre? Como?
Análise Estática Caça bugs lendo o código (rápido). Sim Via Extensões (Regex) e LLM.
Linting Corrige estilo e formatação. Sim LLM pode sugerir Clean Code.
SAST Caça falhas de segurança no código. Sim Foco primário na busca por vulnerabilidades.
Análise Dinâmica Caça bugs rodando o app (lento). ❌ Não Foco em CI/CD rápido (Code Review).

O que ela detecta?

  1. Unity / Game Dev:

    • Uso de APIs lentas (Find, GetComponent) em loops críticos (Update).
    • Alocação excessiva de memória (Garbage Collection).
    • Excesso de logs (Debug.Log) em builds finais.
  2. Segurança (Geral):

    • Credenciais hardcoded (Senhas, API Keys).
    • Vulnerabilidades de Injeção (SQL, Command).
    • Falta de validação de inputs.
  3. Qualidade de Código:

    • Lógica complexa ou confusa.
    • Erros de tratamento de exceções.
    • Sugestões de refatoração para legibilidade.

📦 Instalação

Via pip (Recomendado)

pip install iara-reviewer

Após instalar, o comando iara fica disponível globalmente:

git diff main | iara

Via clone (Desenvolvimento)

git clone https://github.com/felipefernandes/iara.git
cd iara
pip install -e .

Configurar chave de API

# Linux/Mac
export OPENROUTER_API_KEY="sk-or-..."

# Windows (PowerShell)
$env:OPENROUTER_API_KEY="sk-or-..."

Obtenha sua chave gratuita em openrouter.ai.


⚙️ Configuração

Crie um arquivo .iara.json na raiz do seu projeto:

{
  "project": {
    "name": "Meu Projeto",
    "description": "Descrição do projeto.",
    "tech_stack": ["Python"]
  },
  "review": {
    "focus_areas": ["Performance", "Security"],
    "ignore_patterns": []
  },
  "model": {
    "preferred": "google/gemini-2.0-flash-exp:free",
    "fallback_enabled": true
  }
}

Exemplo pronto disponível em iara-example.json.


🏃 Como Usar

Via Pipe (Git Diff)

git diff main | iara

Via Variável de Ambiente

export PR_DIFF=$(git diff main)
iara

Modo Scan (Análise Estática)

iara --scan ./caminho/do/projeto

Forçando um Modelo

export IARA_MODEL="meta-llama/llama-3.2-3b-instruct:free"
git diff | iara

Retrocompatibilidade

O script ai-codereview.py continua funcionando para quem já o utiliza:

git diff | python ai-codereview.py

🐙 Integração GitHub

Adicione a Iara ao seu repositório GitHub em 2 passos:

1. Configurar o secret

Vá em Settings > Secrets and variables > Actions > New repository secret e adicione:

  • Nome: OPENROUTER_API_KEY
  • Valor: sua chave da API OpenRouter

2. Criar o workflow

Crie o arquivo .github/workflows/iara-review.yml:

name: Iara Code Review

on:
  pull_request:
    types: [opened, synchronize]

permissions:
  pull-requests: write
  contents: read

jobs:
  review:
    runs-on: ubuntu-latest
    name: AI Code Review
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Run Iara Code Review
        uses: felipefernandes/iara@v1
        with:
          openrouter_api_key: ${{ secrets.OPENROUTER_API_KEY }}
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

A Iara vai automaticamente:

  • Revisar o diff do Pull Request
  • Postar um comentário com o resultado da review

Opções adicionais

- uses: felipefernandes/iara@v1
  with:
    openrouter_api_key: ${{ secrets.OPENROUTER_API_KEY }}
    model: 'google/gemini-2.0-flash-exp:free'   # Forçar modelo
    config_path: '.iara.json'                     # Caminho do config
    post_comment: 'true'                          # Postar comentário (default: true)

🦊 Integração GitLab

1. Configurar variáveis

Vá em Settings > CI/CD > Variables e adicione:

  • OPENROUTER_API_KEY: Chave da API OpenRouter
  • GITLAB_TOKEN: Personal/Project Access Token com scope api (necessário para comentários no MR)

2. Adicionar ao .gitlab-ci.yml

stages:
  - review

iara_code_review:
  stage: review
  image: python:3.11-slim
  script:
    - apt-get update && apt-get install -y --no-install-recommends git curl
    - pip install iara-reviewer
    - git fetch origin $CI_MERGE_REQUEST_TARGET_BRANCH_NAME
    - export PR_DIFF=$(git diff origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME...$CI_COMMIT_SHA)
    - REVIEW=$(iara 2>/tmp/iara_stderr.txt) || true
    - echo "$REVIEW"
    - |
      if [ -n "$REVIEW" ] && [ -n "$GITLAB_TOKEN" ]; then
        PAYLOAD=$(python3 -c "
      import sys, json
      review = '''$REVIEW'''
      body = '## 🧜‍♀️ Iara Code Review\n\n' + review + '\n\n---\n*Reviewed by Iara - AI Code Reviewer*'
      print(json.dumps({'body': body}))
      ")
        curl -s -X POST \
          -H "PRIVATE-TOKEN: $GITLAB_TOKEN" \
          -H "Content-Type: application/json" \
          -d "$PAYLOAD" \
          "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/merge_requests/${CI_MERGE_REQUEST_IID}/notes"
      fi
  allow_failure: true
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"

A Iara vai automaticamente:

  • Revisar o diff do Merge Request
  • Postar um comentário com o resultado da review no MR

Um template completo está disponível em gitlab-ci.yml.


🔧 Qualquer CI (Jenkins, CircleCI, etc.)

pip install iara-reviewer
export OPENROUTER_API_KEY="sk-or-..."
git diff main...HEAD | iara

🧪 Testes

python -m unittest discover tests

📜 Licença

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iara_reviewer-1.0.0.tar.gz (15.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

iara_reviewer-1.0.0-py3-none-any.whl (13.8 kB view details)

Uploaded Python 3

File details

Details for the file iara_reviewer-1.0.0.tar.gz.

File metadata

  • Download URL: iara_reviewer-1.0.0.tar.gz
  • Upload date:
  • Size: 15.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for iara_reviewer-1.0.0.tar.gz
Algorithm Hash digest
SHA256 547959bc26617da687eb526186a0ecc7f160a28ab405ea4208905f6339a757d0
MD5 e7a465369b87e4b920c62cc48cf62f67
BLAKE2b-256 bca48e12425d0564eec8021b1d6ba793f7e940fcd6e1a080cf21ec8e64cdfb32

See more details on using hashes here.

File details

Details for the file iara_reviewer-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: iara_reviewer-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 13.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for iara_reviewer-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a6c23940a88dc586bec2d4b60f1f0c60bd83fc79f15c191bd3c33bc0ee933f67
MD5 6f3dc3ad776cd4a7475f7a5cfaa6c97c
BLAKE2b-256 ca03e05c67e7722714088296e9c485859bf0758c74b60a03c71f243bbae1b8d2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page