Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
f875d99
Adicionando um novo agente e sua respectiva task
Pedrordsm Oct 7, 2025
e7c4e47
flexibilização da escolha de llm
saraivagustavo Oct 27, 2025
72aa32d
tentando flexibilizar api keys
Pedrordsm Oct 29, 2025
48731b2
padronizando caminho da api
Pedrordsm Oct 29, 2025
cc49e24
adicionando arquivo para selecionar llm e atualizando crew
Pedrordsm Oct 29, 2025
98ae061
implementation of the policy_analytics task and agent
magnagomatheus Nov 1, 2025
c068f04
Criacao de um time para analises e julgamentos LGPD e arquivos justif…
magnagomatheus Nov 2, 2025
1520d1b
Adding crewai tools (search) for the policy documentation of the prov…
magnagomatheus Nov 2, 2025
1454e17
atualização do readme com as novas mudanças, correção mensagem de err…
saraivagustavo Nov 2, 2025
5480cb2
testing with all tasks together
magnagomatheus Nov 2, 2025
9de382d
lgpd crew working perfectly. Just running 2 times, on commit and then…
magnagomatheus Nov 3, 2025
f1d1bb9
Adding verification to see with already exists a LGPD analysics from …
magnagomatheus Nov 4, 2025
98bb65f
fixing bugs
magnagomatheus Nov 4, 2025
df09427
Merge branch 'lgpd_verify'
magnagomatheus Nov 4, 2025
9b1da71
Fixing the task output prompt
magnagomatheus Nov 4, 2025
c9b8dcc
atualizando requirements e agente de lgpd
Pedrordsm Nov 5, 2025
36f6a9a
fix commit
Pedrordsm Nov 19, 2025
85df4b4
LGPD user input verify
magnagomatheus Nov 19, 2025
4281ecd
atualizando main e escolha do usuário
Pedrordsm Nov 24, 2025
f7b73a6
correção das versões do crewAI
saraivagustavo Nov 24, 2025
e56d1bb
Merge branch 'main' of https://github.com/Pedrordsm/code-wise-push-re…
saraivagustavo Nov 24, 2025
4985a25
lgpd user choice input working
magnagomatheus Nov 27, 2025
b321c34
versao funcional lgpd_verify
magnagomatheus Nov 27, 2025
1879304
adicionando agente e tool de score - pr com algum bug
Pedrordsm Nov 30, 2025
99421b7
Creating an lgpd.py file for modularization
magnagomatheus Nov 30, 2025
c292305
Merge branch 'lgpd_verify' into score
saraivagustavo Nov 30, 2025
d025277
correção chamada duplicada do modo lgpd_verify, e não criação do arqu…
saraivagustavo Nov 30, 2025
5b717e9
teste
Pedrordsm Nov 30, 2025
0b68ce8
Merge branch 'branchtemp'
Pedrordsm Nov 30, 2025
b70be97
WORKING!!!!!
magnagomatheus Nov 30, 2025
224fced
adicionando sistema de notificação
Pedrordsm Dec 1, 2025
ab8bb48
atualizando agentes e condições
Pedrordsm Dec 1, 2025
b9a1c7a
Adjusting the evaluation tasks and fixing the grades justification co…
magnagomatheus Dec 1, 2025
574db92
docs: adição de docstrings nas funções do projeto
saraivagustavo Dec 2, 2025
8ec22ce
optimizing
magnagomatheus Dec 2, 2025
b2b8f36
Merge branch main into branch api
magnagomatheus Dec 2, 2025
68a6d27
Merge branch 'api'
saraivagustavo Dec 2, 2025
1996605
Merge remote-tracking branch 'origin/api'
saraivagustavo Dec 2, 2025
bebc22f
Ajusting judge task and fixing code_review output
magnagomatheus Dec 2, 2025
20045ea
Merge branch 'lgpd_verify'
magnagomatheus Dec 2, 2025
7c419ba
fixing user input regex
magnagomatheus Dec 2, 2025
63ac260
README update
magnagomatheus Dec 2, 2025
7a197a1
removendo tool não mais utilizada
Pedrordsm Dec 3, 2025
1aa05ee
reportfy
Pedrordsm Dec 4, 2025
70a4164
Merge pull request #1 from Pedrordsm/novabranch
Pedrordsm Dec 4, 2025
f054184
Revert "reportfy"
Pedrordsm Dec 4, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
286 changes: 181 additions & 105 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,164 +1,240 @@
# CodeWise
# CodeWise

* Ferramenta instalável via pip que usa IA para analisar o código e automatizar a documentação de Pull Requests através de hooks do Git.

## Funcionalidades Principais
- **Geração de Título:** Cria títulos de PR claros e concisos seguindo o padrão *Conventional Commits*.
- **Geração de Descrição:** Escreve descrições detalhadas baseadas nas alterações do código.
- **Análise Técnica:** Posta um comentário no PR com um resumo executivo de melhorias de arquitetura, aderência a princípios S.O.L.I.D. e outros pontos de qualidade.
- **Automação com hooks:** Integra-se ao seu fluxo de trabalho Git para rodar automaticamente a cada `git commit` e `git push`.
Ferramenta instalavel via `pip` que utiliza IA para analisar codigo e automatizar a documentacao de Pull Requests atraves de hooks do Git.

---

## Guia de Instalação
Siga estes passos para instalar e configurar o CodeWise em qualquer um dos seus repositórios.
## Funcionalidades

- **Geracao de Titulo:** Cria titulos de PR claros e concisos seguindo o padrao Conventional Commits.
- **Geracao de Descricao:** Escreve descricoes detalhadas baseadas nas alteracoes do codigo.
- **Analise Tecnica:** Posta um comentario no PR com resumo executivo de melhorias de arquitetura, aderencia a principios S.O.L.I.D. e outros pontos de qualidade.
- **Automacao com Hooks:** Integra-se ao fluxo de trabalho Git para rodar automaticamente a cada `git commit` e `git push`.
- **Flexibilidade de IA:** Escolha qual provedor de IA usar (`Cohere`, `Google Gemini`, `Groq`, `OpenAI`) atraves de configuracao.
- **Verificacao de Privacidade (LGPD):** Analisa automaticamente a politica de coleta de dados do provedor de IA antes de enviar o codigo.
- **Avaliacao de Codigo:** Gera relatorios de avaliacao com nota e justificativa detalhada.
- **Notificacao via Telegram:** Envia avaliacoes automaticamente para gestores via Telegram Bot API.

---

### Passo 1: Pré-requisitos (ter no PC antes de tudo)
## Pre-requisitos

Antes de começar, garanta que você tenha as seguintes ferramentas instaladas em seu sistema:
Antes de comecar, garanta que voce tenha instaladas as seguintes ferramentas:

1. **Python** (versão 3.11 ou superior).
2. **Git**.
3. **GitHub CLI (`gh`)**: Após instalar em (https://cli.github.com), logue com sua conta do GitHub executando `gh auth login` no seu terminal (só precisa fazer isso uma vez por PC).
---
1. **Python** (versao 3.11 ou superior)
2. **Git**
3. **GitHub CLI (`gh`)**

### Passo 2: Configurando Seu Repositório
Apos instalar a CLI do GitHub (https://cli.github.com), execute:

**Para cada novo Repositório em que você desejar usar o CodeWise, siga os passos abaixo.**

"*O ideal é sempre criar um ambiente virtual na pasta raiz do novo repositório para evitar conflitos das dependências.*"
```bash
gh auth login
```

Faca login na sua conta. Este passo e necessario apenas uma vez por computador.

---
#### 2.1 Crie e Utilize um Ambiente Virtual

Para evitar conflitos com outros projetos Python, use um ambiente virtual (`venv`).
## Instalacao

* **Para Criar o Ambiente:**
### 1. Criar e Ativar o Ambiente Virtual

* Este comando cria uma pasta `.venv` com uma instalação limpa do Python. Faça isso uma única vez por repositório,
*Lembrando que o ".venv" é o nome da pasta que foi criada, voce pode escolher qualquer outro nome pra ela.*

Crie o ambiente virtual na raiz do repositorio onde esta a pasta `.git`:

(**dentro da raíz do repositório onde está a pasta .git**)
```bash
# Windows
py -m venv .venv

```bash
# No Windows
py -m venv .venv

# No Linux/WSL
python3 -m venv .venv
```
# Linux/WSL
python3 -m venv .venv
```

* **Para Ativar o Ambiente:**
Ative o ambiente:

* Sempre que for trabalhar no projeto, você precisa ativar o ambiente.
```bash
# Windows (PowerShell)
.\.venv\Scripts\activate

* **Dica para Windows/PowerShell:** Se o comando de ativação der um erro de política de execução, rode este comando primeiro: `Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser`
# Linux/WSL
source .venv/bin/activate
```

```bash
# No Windows (PowerShell)
.\.venv\Scripts\activate

# No Linux/WSL
source .venv/bin/activate
```
*Você saberá que funcionou porque o nome `(.venv)` aparecerá no início da linha do seu terminal.*
---
#### 2.2 Instale a Ferramenta CodeWise
Com o ambiente virtual ativo, instale a biblioteca com o `pip`.
Se ocorrer erro de politica de execucao no PowerShell, rode:

```bash
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
```

### 2. Instalar o CodeWise

Com o ambiente virtual ativo, instale o pacote:

```bash
pip install codewise-lib
```
**Pode demorar um pouco pra instalar todas as dependências na primeira vez.**

Apos concluir, confirme se esta tudo certo com:

*Após instalar a lib, você pode confirmar se está tudo certo com o comando `codewise-help`*
```bash
codewise-help
```

---

#### 2.3 Configure a Chave da API (.env)
Para que a IA funcione, você precisa configurar sua chave da API do Google Gemini.
## Configuracao do Arquivo .env

Na raiz do projeto, crie um arquivo `.env` com as seguintes variaveis:

```ini
# PROVEDOR DE IA
# Opcoes disponiveis: "COHERE", "GROQ", "GEMINI", "OPENAI"
AI_PROVIDER="GEMINI"

# MODELO ESPECIFICO
# Exemplos: "gemini-2.0-flash", "gpt-4o-mini", "command-r-plus", "llama-3.1-70b-versatile"
AI_MODEL=gemini-2.0-flash

# CHAVES DE API DOS PROVEDORES
# Configure a chave correspondente ao AI_PROVIDER escolhido
COHERE_API_KEY=sua_chave_cohere_aqui
GROQ_API_KEY=sua_chave_groq_aqui
GEMINI_API_KEY=sua_chave_gemini_aqui
OPENAI_API_KEY=sua_chave_openai_aqui

# TELEGRAM (opcional - para notificacoes de avaliacao)
TELEGRAM_BOT_TOKEN=seu_token_do_bot_telegram
TELEGRAM_CHAT_ID=seu_chat_id_telegram
```

**Importante:** Adicione o arquivo `.env` ao `.gitignore` para evitar expor suas chaves secretas.

1. **Na raiz do seu projeto**, crie um arquivo chamado `.env`. Você pode usar os seguintes comandos no terminal:
---

## Chave OpenAI para Embedding (Obrigatorio)

* **Windows**
```bash
notepad .env
```
* **Linux/WSL:**
```bash
touch .env && nano .env
```
O CodeWise utiliza o CrewAI com ferramentas que dependem de embedding para busca semantica. Por isso, **a chave `OPENAI_API_KEY` e obrigatoria** no arquivo `.env`, mesmo que voce utilize outro provedor de IA (Gemini, Groq, Cohere) como modelo principal.

2. Dentro do arquivo `.env`, cole o seguinte conteúdo, adicione sua chave e salve:
```
GEMINI_API_KEY=SUA_CHAVE_AQUI
MODEL_NAME=gemini-2.0-flash
```
⚠️ **Importante:** Lembre-se de adicionar o arquivo `.env` ao seu `.gitignore` para não enviar sua chave secreta para o GitHub ao dar push e que ele deve ser do tipo "arquivo ENV" e não .txt ou coisa do tipo.
A OpenAI e utilizada internamente pelo CrewAI Tools para realizar operacoes de embedding. Sem essa chave configurada, as ferramentas de analise nao funcionarao corretamente.

---

## Nota Importante: A ferramenta CodeWise espera que seus remotes sigam a convenção padrão do GitHub:
## Configuracao do Telegram (Opcional)

Para receber notificacoes de avaliacao de codigo via Telegram:

1. **Criar um Bot no Telegram:**
- Abra o Telegram e busque por `@BotFather`
- Envie o comando `/newbot` e siga as instrucoes
- Copie o token gerado para `TELEGRAM_BOT_TOKEN`

origin: Deve apontar para o seu fork pessoal do repositório.
2. **Obter o Chat ID:**
- Inicie uma conversa com seu bot
- Acesse `https://api.telegram.org/bot<SEU_TOKEN>/getUpdates`
- Localize o campo `chat.id` na resposta JSON
- Copie o valor para `TELEGRAM_CHAT_ID`

upstream: (caso você adicione ao repositório)Deve apontar para o repositório principal do qual você fez o fork.
3. **Adicionar ao .env:**

**Caso você comece um repositório novo totalmente zerado, você tem que dar um push inicial com "git push --no-verify" antes de usar a ferramenta para que o GH CLI funcione corretamente ao criar os Pull Requests**
```ini
TELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrsTUVwxyz
TELEGRAM_CHAT_ID=987654321
```

As notificacoes incluem: desenvolvedor avaliado, repositorio, nota, resumo da avaliacao e data.

---

#### 2.4 Agora apenas uma vez > Ative a Automação no Repositório com um comando.
Na raiz do projeto onde também está a pasta .git use:
## Ativar a Automacao no Repositorio

Na raiz do projeto (onde esta a pasta `.git`), execute uma unica vez:

```bash
codewise-init --all
```
**Use esse comando sempre que você quiser mudar para onde o PULL REQUEST SERÁ CRIADO nos hooks de pre push, pois se você adicionar um remoto upstream você tem que alternar entre qual o PR será gerado.**

Aqui está a configuração do Alvo do Pull Request:
Esse comando adicionara automaticamente os hooks `pre-commit` e `pre-push`.

Se o seu repositorio tiver um `upstream`, o instalador perguntara qual deve ser o comportamento padrao do `git push` para criacao de Pull Requests.

---

## Comandos Disponiveis

| Comando | Descricao |
|---------|-----------|
| `codewise-init --all` | Instala os hooks pre-commit e pre-push |
| `codewise-init --commit` | Instala apenas o hook pre-commit |
| `codewise-init --push` | Instala apenas o hook pre-push |
| `codewise-pr` | Analisa commits e cria/atualiza PR com IA |
| `codewise-pr-origin` | Cria PR no remote origin |
| `codewise-pr-upstream` | Cria PR no remote upstream |
| `codewise-lint` | Analisa arquivos staged antes do commit |
| `codewise-help` | Exibe ajuda e comandos disponiveis |

---

## Fluxo de Uso

1. **Adicione suas alteracoes:**

```bash
git add .
```

2. **Faca o commit:**

```bash
git commit -m "implementa novo recurso"
```

O hook `pre-commit` sera ativado e executara o `codewise-lint` automaticamente.

3. **Envie para o GitHub:**

```bash
git push
```

O hook `pre-push` ativara o `codewise-pr`, que criara ou atualizara o Pull Request com titulo, descricao e analise tecnica gerados pela IA.

---

## Nota sobre Remotes

Se o seu repositório tiver um remote upstream configurado, o instalador fará uma pergunta depois que você usou o comando "codewise-init --all"
para definir o comportamento padrão do hook pre-push:
A ferramenta CodeWise espera que seus remotes sigam a convencao padrao do GitHub:

Um remote 'upstream' foi detectado.
Qual deve ser o comportamento padrão do 'git push' para este repositório?
1: Criar Pull Request no 'origin' (seu fork)
2: Criar Pull Request no 'upstream' (projeto principal)
Escolha o padrão (1 ou 2):
- **origin:** aponta para o seu fork pessoal do repositorio
- **upstream:** (opcional) aponta para o repositorio principal

Sua escolha será salva no hook, e você não precisará mais se preocupar com isso. Se não houver upstream, ele será configurado para origin por padrão.
Se o repositorio for novo, execute um push inicial com:

Você verá uma mensagem de sucesso confirmando que a automação está ativa.
```bash
git push --no-verify
```

Com esse comando os arquivos de pre-commit e pre-push já terão sido adicionados ao seu hooks do repositório.
Isso garante que o `gh` funcione corretamente na criacao dos Pull Requests.

---

Tudo está funcionando agora no repositório que você configurou.
Caso queira instalar em um novo repositório basta repetir os passos.
## Verificacao de Privacidade e LGPD

# Usando o CodeWise
Com a configuração concluída, você já tem acesso aos comandos **codewise-lint** e **codewise-pr** de forma manual e automatizada após instalar os hooks.
Antes de qualquer envio de codigo, o CodeWise realiza uma verificacao de privacidade automatica. O objetivo e garantir que o provedor de IA configurado no `.env` possua politicas compativeis com a LGPD, assegurando a protecao dos seus dados e da sua base de codigo.

1. **Adicione suas alterações**
---

## Dependencias

* Após modificar seus arquivos, adicione-os à "staging area":
```bash
git add .
```
* Aqui você já pode usar o comando `codewise-lint` para analisar os arquivos e você poder fazer ajustes antes de commitar.
- crewai >= 0.201.1
- crewai-tools >= 0.76.0
- python-dotenv >= 1.1.1
- PyYAML >= 6.0.3
- litellm >= 1.74.9
- qdrant-client >= 1.15.1
- requests >= 2.32.3

---

2. **Faça o commit**
```bash
git commit -m "implementa novo recurso "
```
* Neste momento, o **hook `pre-commit` será ativado**, e o `codewise-lint` fará a análise rápida no seu terminal.
✅ Tudo pronto!

3. **Envie para o GitHub**
```bash
git push
```
* Agora, o **hook `pre-push` será ativado**. O `codewise-pr` vai perguntar para qual remote você quer enviar caso haja um upstream além do seu origin em seguida irá criar um novo/atualizar seu Pull Request com título, descrição e análise técnica gerados pela IA.
Seu repositório já está com o CodeWise ativo.
Para usar em outro repositório, basta repetir os passos acima.
Loading