-
Notifications
You must be signed in to change notification settings - Fork 1
Fixing docs #18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fixing docs #18
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
|
@coderabbitai crie um .coderabbit.yaml super robusto para esse projeto, exigindo que o desenvolvedor entregue uma solução sólida, performática, bem escrita e EXTREMAMENTE SIMPLES DE SE LER, faça de acordo com o schema v2: https://coderabbit.ai/integrations/schema.v2.json, esse arquivo de configuração deverá seguir estritamente o schema v2 fornecido, sem nenhuma linha a mais. orientações adicionais:
|
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: Length of output: 1361 🏁 Script executed: Length of output: 6144 🏁 Script executed: Length of output: 645 🏁 Script executed: Length of output: 2767 @lkgiovani Aqui está o arquivo version: 2
review:
path_include:
- "**/*.go"
path_exclude:
- "**/docs/*"
- "**/*.pb.go"
- "**/mock_*.go"
- "**/mocks/*.go"
path_instructions:
"internal/handler/**.go":
- "Mantenha os handlers limpos e focados apenas na interface HTTP. Evite lógica de negócio aqui."
- "Use o padrão de documentação godoc para todas as funções expostas (@Summary, @Description, @Tags)."
- "Padronize o tratamento de erros usando o método centralizado handleError."
- "Valide as entradas antes de passá-las para a camada de serviço."
- "Retorne códigos HTTP apropriados conforme os casos de uso."
"internal/service/**.go":
- "Implemente interfaces explícitas para todos os serviços para facilitar mocks em testes."
- "Aplique o princípio de responsabilidade única (SRP) - cada serviço deve ter um propósito bem definido."
- "Não acesse diretamente o repositório de outro domínio, use o serviço correspondente."
- "Implemente validação de regras de negócio nesta camada, não na camada de repositório."
- "Documente efeitos colaterais e comportamentos esperados de cada função."
"internal/repository/**.go":
- "Implemente repositórios genéricos para operações CRUD comuns."
- "Use contextos para controle de timeout e cancelamento em todas as operações de banco."
- "Não implemente lógica de negócio nesta camada, foque apenas em operações de dados."
- "Padronize o tratamento de erros de banco de dados com mensagens claras."
- "Documente o contrato da interface de repositório completamente."
"internal/model/**.go":
- "Use tags de validação para todos os campos expostos via API."
- "Não inclua lógica complexa nos modelos; mantenha-os como estruturas de dados simples."
- "Use omitempty para campos opcionais em JSON e BSON."
- "Documente o propósito de cada campo com comentários."
"pkg/**.go":
- "Mantenha utilitários genéricos e reutilizáveis."
- "Documente completamente a utilização esperada das funções."
- "Implemente tratamento de erros detalhado para funções auxiliares."
- "Escreva testes unitários para todas as funções utilitárias."
"test/**.go":
- "Use mocks para isolar os componentes em teste."
- "Implemente casos de teste para caminhos felizes e cenários de erro."
- "Teste limites e casos de borda explicitamente."
- "Use subtestes para organizar casos de teste relacionados."
general_instructions: |-
# Princípios Gerais de Desenvolvimento
## SOLID
- Single Responsibility Principle: Cada struct/função deve ter uma única responsabilidade.
- Open/Closed Principle: Estenda comportamentos através de interfaces em vez de modificar código existente.
- Liskov Substitution Principle: Tipos derivados devem ser substituíveis por seus tipos base.
- Interface Segregation Principle: Prefira interfaces menores e específicas a uma grande interface genérica.
- Dependency Inversion Principle: Dependa de abstrações, não de implementações concretas.
## KISS (Keep It Simple, Stupid)
- Prefira soluções simples e diretas a implementações complexas.
- Uma função deve fazer apenas uma coisa, e fazer bem.
- Limite a complexidade ciclomática de funções (máximo de 10).
- Evite otimizações prematuras que comprometam a clareza do código.
## DRY (Don't Repeat Yourself)
- Extraia código duplicado para funções reutilizáveis.
- Use tipos genéricos para operações comuns em diferentes tipos de dados.
- Crie utilitários para operações frequentes ao invés de reimplementá-las.
## Padrões Específicos Go
- Prefira composição a herança.
- Use ponteiros apenas quando necessário para modificar valores ou economizar memória.
- Implemente interfaces implicitamente, não explicitamente.
- Retorne erros explícitos e verifique-os imediatamente.
- Use context para passar deadlines, cancelation signals e valores específicos de requisição.
- Documente todas as funções públicas com comentários godoc.
- Nomeie retornos de erro como `err` e verifique-os com `if err != nil`.
## Performance
- Minimize alocações de memória desnecessárias.
- Use Goroutines com cuidado, garantindo seu término adequado.
- Implemente cache para operações frequentes e custosas.
- Adicione índices apropriados nas coleções MongoDB.
- Use conexões pooling para recursos externos.
@lkgiovani Aqui está um version: 2
review:
path_include:
- "**/*.go"
path_exclude:
- "docs/docs.go"
- "**/mock_*.go"
- "**/mocks/*.go"
path_instructions:
- path: "internal/handler/**.go"
instructions: "Mantenha handlers limpos e focados na interface HTTP. Use godoc completo (@Summary, @Description, @Tags) para todas as funções expostas. Centralize tratamento de erros com o padrão existente. Valide entradas antes de passar para serviços. Retorne códigos HTTP apropriados. Não inclua lógica de negócio."
- path: "internal/service/**.go"
instructions: "Implemente interfaces explícitas para todos os serviços. Aplique SRP - cada serviço deve ter propósito único. Não acesse repositórios de outros domínios. Implemente validação de regras de negócio nesta camada. Documente comportamentos esperados e efeitos colaterais. Use injeção de dependências consistentemente."
- path: "internal/repository/**.go"
instructions: "Mantenha repositórios genéricos para operações CRUD. Use contextos para timeout e cancelamento. Implemente índices apropriados no MongoDB. Não inclua lógica de negócio, apenas operações de dados. Documente completamente o contrato da interface. Use operações em lote quando apropriado para melhor performance."
- path: "internal/model/**.go"
instructions: "Use tags de validação em todos os campos expostos via API. Mantenha como estruturas simples de dados, sem lógica complexa. Use omitempty para campos opcionais. Documente o propósito de cada campo. Inclua tipos específicos em vez de tipos genéricos quando possível."
- path: "pkg/**.go"
instructions: "Mantenha utilitários genéricos e altamente reutilizáveis. Documente completamente a utilização esperada. Implemente tratamento de erros detalhado. Escreva testes unitários para todas as funções. Evite dependências externas desnecessárias."
- path: "test/**.go"
instructions: "Use mocks para isolar componentes em teste. Implemente casos para caminhos felizes e cenários de erro. Teste limites e casos de borda. Use subtestes para organizar casos relacionados. Mantenha testes independentes e idempotentes."
- path: "main.go"
instructions: "Mantenha o arquivo principal focado apenas em inicialização e configuração. Use injeção de dependências adequadamente. Trate erros de inicialização apropriadamente. Implemente graceful shutdown. Separe configuração da inicialização dos serviços."
general_instructions: |-
# Princípios de Desenvolvimento
## SOLID
- Single Responsibility: Cada struct/função deve ter uma única responsabilidade bem definida
- Open/Closed: Estenda comportamentos através de interfaces, não modificando código existente
- Liskov Substitution: Tipos derivados devem ser substituíveis por seus tipos base
- Interface Segregation: Prefira interfaces pequenas e coesas a uma grande interface
- Dependency Inversion: Dependa de abstrações, não implementações concretas
## KISS (Keep It Simple, Stupid)
- Implemente a solução mais simples que resolve o problema
- Funções devem ter propósito único e bem definido
- Limite a complexidade ciclomática (máximo 10)
- Prefira legibilidade a otimizações prematuras
- Limite número de parâmetros em funções (máximo 3-4)
## DRY (Don't Repeat Yourself)
- Extraia código duplicado para funções reutilizáveis
- Use tipos genéricos para operações comuns
- Crie utilitários para operações frequentes
- Reutilize padrões estabelecidos no projeto
## Boas Práticas Go
- Use `context` para controlar timeout e cancelamento
- Trate erros imediatamente, use o padrão `if err != nil`
- Documente todas as funções com godoc
- Retorne early em caso de erro, evite aninhamentos excessivos
- Nomeie variáveis de forma clara e descritiva
- Prefira composição a herança usando interfaces
- Use ponteiros apenas quando necessário
- Evite globais, prefira injeção de dependências
- Utilize corretamente goroutines com controle apropriado
language: pt-BR
reviews:
profile: assertive
request_changes_workflow: true
collapse_walkthrough: true
changed_files_summary: true
sequence_diagrams: true
tools:
golangci-lint:
enabled: trueEste arquivo de configuração:
O foco está em produzir código limpo, legível e fácil de manter, seguindo rigorosamente os princípios solicitados. |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: Length of output: 5117 🏁 Script executed: Length of output: 5294 🏁 Script executed: Length of output: 3943 🏁 Script executed: Length of output: 250 🌐 Web query: 💡 Result: CodeRabbit's YAML schema v2 provides a structured way to configure AI-powered code review workflows through a Core Configuration Structure# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
language: "en-US"
early_access: false
reviews:
profile: "chill"
request_changes_workflow: false
high_level_summary: true
poem: true
review_status: true
collapse_walkthrough: false
auto_review:
enabled: true
drafts: false
chat:
auto_reply: true
```[1][4][10]
**Key Sections**:
1. **Global Settings**:
- `language`: Sets review language (e.g., en-US)
- `early_access`: Enables beta features [10]
2. **Review Configuration**:
```yaml
reviews:
profile: "strict" # or "chill"
request_changes_workflow: true
high_level_summary: false
path_instructions:
- path: "**/*.ts"
instructions: "Ensure NestJS standards and ESLint compliance"
```[10][11]
- Controls summary formats, review strictness, and file-specific rules
3. **Auto-Review Settings**:
```yaml
auto_review:
enabled: true
ignore_title_keywords:
- "[skip review]"
- "WIP"
base_branches:
- "main"
```[10][11]
- Filters PRs by title keywords and target branches
4. **Chat Integration**:
```yaml
chat:
auto_reply: true
Real-World ExamplesTechCell Project Configuration: base_branches:
- "development"
path_instructions:
- path: "**/*.ts"
instructions: "Review for NestJS standards, Express.js style, and ESLint rules"
```[10]
**Materialsvirtuallab's Strict Setup**:
```yaml
reviews:
high_level_summary: false
poem: false
auto_review:
ignore_title_keywords:
- "WIP"
- "DO NOT MERGE"
```[11]
### Schema Validation
The schema can be validated using:
1. **JSON Schema Validator** ([jsonschemavalidator.net][6])
2. **Editor Integration** via JSON Schema Store ([schemastore.org][9])
Key validation patterns include:
- Profile type enforcement (`strict`/`chill`)
- Path instruction glob pattern matching
- Boolean flag validation for features like poems/docs[4][6][9]
The schema evolves with new features while maintaining backward compatibility through semantic versioning[1][4][7].
Citations:
- 1: https://www.abdulazizahwan.com/2024/07/exploring-coderabbit-revolutionizing-code-reviews-with-ai.html
- 2: https://github.com/coderabbitai/awesome-coderabbit
- 3: https://docs.coderabbit.ai/guides/review-instructions/
- 4: https://docs.coderabbit.ai/getting-started/configure-coderabbit/
- 5: https://docs.coderabbit.ai/guides/issue-creation
- 6: https://www.jsonschemavalidator.net
- 7: https://www.coderabbit.ai/blog/how-to-integrate-ai-code-review-into-your-devops-pipeline
- 8: https://docs.coderabbit.ai/platforms/github-com/
- 9: https://schemastore.org
- 10: https://github.com/TechCell-Project/the-next-server/blob/development/.coderabbit.yaml
- 11: https://github.com/materialsvirtuallab/matgl/blob/main/.coderabbit.yaml
- 12: https://docs.coderabbit.ai/tools/regal/
- 13: https://serp.ai/products/coderabbit.ai/reviews/
---
</details>
@lkgiovani Com base na análise detalhada do projeto, aqui está um arquivo `.coderabbit.yaml` robusto que segue estritamente o schema v2 e exige que os desenvolvedores entreguem código sólido, performático e fácil de ler:
```yaml
# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
language: "pt-BR"
reviews:
profile: "strict"
request_changes_workflow: true
high_level_summary: true
review_status: true
collapse_walkthrough: false
ignore_title_keywords:
- "WIP"
- "DO NOT MERGE"
- "DRAFT"
path_instructions:
- path: "**/*.go"
instructions: "Este é um projeto Golang de gerenciamento de senhas que utiliza a arquitetura limpa. Garanta que o código siga os princípios SOLID (Responsabilidade Única, Aberto-Fechado, Substituição de Liskov, Segregação de Interface, Inversão de Dependência), KISS (Mantenha Simples) e DRY (Não Se Repita). As funções devem ser pequenas e ter uma única responsabilidade. Evite funções com mais de 30 linhas. Todos os erros devem ser tratados adequadamente, evitando `panic` e utilizando o padrão de tratamento de erros do pkg/error. Garanta que a injeção de dependências seja feita via interfaces claras e concisas. Use nomes descritivos para variáveis, funções e estruturas. O código deve ter testes unitários com cobertura mínima de 80%. Todos os handlers devem validar entradas usando o pkg/validator. Os métodos HTTP devem seguir as convenções RESTful. Garanta que as consultas ao MongoDB sejam eficientes e usem índices quando apropriado. A autenticação deve ser implementada de forma segura usando PASETO."
- path: "internal/handler/**/*.go"
instructions: "Os handlers devem focar apenas na validação de entrada, chamada do serviço apropriado e formatação da resposta. Não implementar lógica de negócio nos handlers. Use o padrão de resposta definido em pkg/error para erros. Documente todas as rotas com comentários para Swagger."
- path: "internal/service/**/*.go"
instructions: "A camada de serviço deve conter toda a lógica de negócio. Os serviços não devem acessar diretamente a camada de dados, mas utilizar os repositórios. Mantenha serviços pequenos e focados em um único domínio. Implemente validações de negócio aqui, não nos repositórios ou handlers."
- path: "internal/repository/**/*.go"
instructions: "Repositórios devem abstrair a camada de acesso a dados. Use transações quando necessário. Implemente consultas eficientes, evitando N+1 problemas. Garanta que as consultas sejam otimizadas para performance. Lide adequadamente com conexões e contextos."
- path: "internal/model/**/*.go"
instructions: "Modelos devem ser simples e representar o domínio. Implemente validações nas structs usando tags do go-playground/validator. Evite lógica complexa em modelos."
- path: "pkg/**/*.go"
instructions: "Componentes do pkg devem ser bem testados e documentados pois são usados em todo o sistema. Evite dependências circulares. Utilize interfaces para facilitar testes. Trate erros de forma consistente."
- path: "test/**/*.go"
instructions: "Testes devem ser determinísticos e isolados. Use mocks quando necessário. Teste casos de sucesso e falha. Siga o padrão AAA (Arrange, Act, Assert). Teste rotas HTTP com os códigos de status corretos."
auto_review:
enabled: true
drafts: false
base_branches:
- "main"
- "develop"
labels_ignore:
- "dependencies"
chat:
auto_reply: trueEste arquivo de configuração:
|
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: Length of output: 2284 🏁 Script executed: Length of output: 6030 🏁 Script executed: Length of output: 8049 @lkgiovani Vou criar um arquivo language: pt-BR
reviews:
high_level_summary: true
auto_review:
enabled: true
drafts: true
path_instructions:
- path: "**/*.go"
instructions: |
Analise o código com rigor e garanta que siga os princípios SOLID, KISS e DRY:
1. SOLID: Verifique se cada componente tem responsabilidade única (S), se as interfaces são específicas (I), se há baixo acoplamento e alta coesão.
2. KISS: O código deve ser simples e direto, evitando complexidades desnecessárias.
3. DRY: Identifique e elimine duplicações de código.
Padrões específicos para este projeto:
- Arquitetura: Respeite a separação em camadas (model, repository, service, handler).
- Nomenclatura: Use nomes descritivos que reflitam o propósito real da entidade.
- Tratamento de erros: Use o padrão de erro já estabelecido.
- Interfaces: Defina interfaces claras entre camadas.
- Performance: Minimize alocações desnecessárias e otimize consultas ao MongoDB.
- Segurança: Verifique o tratamento adequado de senhas e tokens.
Critérios de recusa:
- Nomes genéricos como temp, data, item, teste
- Uso de fmt.Println (use logging apropriado)
- Funções com mais de 30 linhas ou muitos parâmetros
- Aninhamento excessivo de estruturas condicionais
- Uso inapropriado de tipagem com interface{}
- Comentários óbvios ou ausência de documentação importante
- Commits de código incompleto ou não testado
- path: "**/*.md"
instructions: |
Avalie a documentação quanto à clareza, completude e correção.
Garanta que a documentação técnica seja precisa e reflita o estado atual do código.
Verifique se há instruções claras de instalação, uso e contribuição.
tools:
golangci-lint:
enabled: true
gitleaks:
enabled: true
markdownlint:
enabled: true
shellcheck:
enabled: true
yamllint:
enabled: true
chat:
auto_reply: true
knowledge_base:
opt_out: falseEste arquivo segue estritamente o schema v2, possui instruções específicas baseadas nos padrões do projeto e as instruções de caminho não excedem 3.000 caracteres. A configuração exige dos desenvolvedores uma solução sólida, performática, bem escrita e extremamente simples de ler, com ênfase nos princípios SOLID, KISS e DRY.
@lkgiovani Baseado na análise do projeto e no schema v2 do CodeRabbit, criei um arquivo de configuração robusto que exige código de alta qualidade, focando nos princípios SOLID, KISS e DRY: language: pt-BR
reviews:
profile: assertive
request_changes_workflow: true
high_level_summary: true
auto_review:
enabled: true
drafts: true
auto_incremental_review: true
path_instructions:
- path: "**/*.go"
instructions: |
Exija rigorosamente código de alta qualidade seguindo:
1. SOLID: Responsabilidade única, Aberto-fechado, Substituição Liskov, Segregação de interface, Inversão de dependência
2. KISS: Simplicidade é fundamental, evite complexidades desnecessárias
3. DRY: Elimine toda duplicação de código
Padrões específicos para este projeto de gerenciador de senhas:
- Arquitetura limpa: Mantenha separação clara entre model, repository, service e handler
- Segurança: Exija validação rigorosa de entradas e criptografia forte para senhas
- Performance: Otimize operações em MongoDB, minimize alocações, use contextos adequadamente
- Nomenclatura: Use nomes autodocumentados que reflitam o domínio
- Tratamento de erros: Siga o padrão de tratamento de erros estabelecido
- Testes: Exija cobertura de testes para lógica crítica
Critérios para rejeição:
- Nomes genéricos (temp, data, teste)
- Uso de fmt.Println (use logs estruturados)
- Funções com mais de 30 linhas
- Alto acoplamento entre camadas
- Violação da arquitetura limpa
- Falta de validação em dados de entrada
- Uso impróprio de interface{}
- path: "**/*.md"
instructions: |
Exija documentação clara, concisa e completa que explique:
- Propósito e funcionalidades
- Instruções de instalação e configuração
- Exemplos de uso
- Medidas de segurança implementadas
tools:
golangci-lint:
enabled: true
gitleaks:
enabled: true
yamllint:
enabled: true
shellcheck:
enabled: true
chat:
auto_reply: true
knowledge_base:
opt_out: falseEste arquivo está estritamente de acordo com o schema v2, com instruções específicas baseadas no padrão do seu projeto (gerenciador de senhas em Go), limitando as instruções de caminho a menos de 3000 caracteres e enfatizando os princípios SOLID, KISS e DRY. O perfil "assertive" garante análises mais rigorosas do código. 🐰 Estou à disposição se precisar de qualquer ajuste! |
|
@coderabbitai crie um .coderabbit.yaml super robusto para esse projeto, exigindo que o desenvolvedor entregue uma solução sólida, performática, bem escrita e EXTREMAMENTE SIMPLES DE SE LER, faça de acordo com o schema v2: https://coderabbit.ai/integrations/schema.v2.json, esse arquivo de configuração deverá seguir estritamente o schema v2 fornecido, sem nenhuma linha a mais. orientações adicionais:
|
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: Length of output: 7582 🌐 Web query: 💡 Result: CodeRabbit's schema v2 configuration uses a JSON-based structure to define code review rules and preferences. Based on the documentation, the configuration file (typically Core Components:
Key Features Enabled by Schema:
Example Structure: {
"$schema": "https://json.schemastore.org/coderabbit.schema.v2.json",
"reviewProfile": {
"strictness": "BALANCED",
"securityLevel": "ENHANCED"
},
"rules": {
"security": {
"cspRules": ["script-src 'self'"]
},
"errorHandling": "STRICT"
},
"ignoredFiles": ["*.md", "docs/**"]
}The schema enforces parameters through path declarations similar to JSON pointer syntax ( Citations:
🏁 Script executed: Length of output: 5237 @samuelrizzo Analisando o projeto, vejo que é um backend em Go para um gerenciador de senhas (Key-Haven) que utiliza uma arquitetura limpa com MongoDB, Fiber, e PASETO para autenticação. Aqui está um arquivo language: pt-BR
reviews:
profile: strict
request_changes_workflow: true
high_level_summary: true
review_status: true
collapse_walkthrough: true
sequence_diagrams: true
changed_files_summary: true
path_instructions:
- path: "**/*.go"
instructions: |
Exija código extremamente legível e de alta qualidade, seguindo rigorosamente:
SOLID:
- S: Cada arquivo, struct e função deve ter uma única responsabilidade bem definida
- O: Use interfaces para permitir extensões sem modificar código existente
- L: Implemente interfaces de forma que todas as implementações possam ser intercambiáveis
- I: Mantenha interfaces pequenas e focadas em propósitos específicos
- D: Dependa de abstrações (interfaces), não de implementações concretas
KISS:
- Prefira soluções simples e diretas a implementações complexas
- Funções devem ter no máximo 20 linhas e fazer apenas uma coisa
- Evite aninhamentos profundos (máximo 2 níveis)
- Use nomes descritivos e autodocumentados que reflitam claramente o propósito
- Evite otimizações prematuras que prejudiquem a legibilidade
DRY:
- Extraia código duplicado para funções reutilizáveis
- Use interfaces consistentes entre camadas semelhantes
- Implemente padrões consistentes para operações comuns
- Centralize configurações e constantes
Regras específicas:
- Trate erros explicitamente, seguindo o padrão "if err != nil"
- Use o pkg/error para tratamento consistente de erros
- Documente todas as funções públicas com comentários
- Valide entradas usando o validator nos handlers
- Use contextos para controle de timeout nas chamadas ao MongoDB
- Aplique tipagem forte, evitando interface{} desnecessários
- Proíba nomes genéricos como "temp", "data", "item", "teste"
- Não use fmt.Println no código (use logs estruturados)
- Funções não devem receber mais de 4 parâmetros
- path: "internal/handler/**/*.go"
instructions: "Mantenha handlers limpos com foco na interface HTTP. Valide todas as entradas antes de passá-las aos serviços. Use o tratamento de erros centralizado. Não inclua lógica de negócio aqui."
- path: "internal/service/**/*.go"
instructions: "Implemente toda a lógica de negócio nos serviços. Respeite interfaces explícitas. Não acesse diretamente repositórios de outros domínios. Documente efeitos colaterais."
- path: "internal/repository/**/*.go"
instructions: "Foque apenas em operações de dados. Use contextos para controle de timeout. Implemente tratamento de erros de banco padronizado. Não inclua lógica de negócio."
- path: "internal/model/**/*.go"
instructions: "Modelos devem ser simples e usar tags de validação. Não inclua lógica complexa. Use omitempty para campos opcionais. Documente o propósito de cada campo."
- path: "pkg/**/*.go"
instructions: "Componentes pkg devem ser bem testados e documentados. Evite dependências circulares. Utilize interfaces para facilitar testes."
auto_review:
enabled: true
drafts: true
tools:
golangci-lint:
enabled: true
gitleaks:
enabled: true
chat:
auto_reply: trueEste arquivo de configuração:
@samuelrizzo Vou criar um arquivo 🏁 Script executed: Length of output: 1520 @samuelrizzo Com base na análise detalhada do projeto, aqui está um arquivo language: pt-BR
reviews:
profile: assertive
request_changes_workflow: true
high_level_summary: true
review_status: true
collapse_walkthrough: true
sequence_diagrams: true
changed_files_summary: true
path_instructions:
- path: "**/*.go"
instructions: |
Exija código que siga rigorosamente os princípios SOLID, KISS e DRY:
1. SOLID:
- Responsabilidade Única: cada componente deve ter apenas uma razão para mudar
- Aberto-Fechado: extensível sem modificação do código existente
- Substituição de Liskov: tipos derivados devem ser substituíveis por seus tipos base
- Segregação de Interface: interfaces específicas são melhores que uma grande
- Inversão de Dependência: dependa de abstrações, não implementações concretas
2. KISS (Mantenha Simples):
- Funções devem ter menos de 20 linhas
- Evite aninhamentos excessivos (máximo 2 níveis)
- Use nomes descritivos e autodocumentados
- Uma função deve fazer apenas uma coisa bem feita
- Prefira legibilidade a otimizações prematuras
3. DRY (Não Se Repita):
- Elimine duplicação de código
- Abstraia padrões comuns em funções reutilizáveis
- Mantenha convenções consistentes
Regras específicas:
- Use o tratamento de erros centralizado do pkg/error
- Valide todas as entradas com o validator do projeto
- Nada de fmt.Println (use logs estruturados)
- Proíba nomes genéricos como "temp", "data", "item", "teste"
- Use tipagem forte e evite interface{} desnecessários
- Documente funções públicas com comentários claros
- Use contextos para controle de timeout
- Limite máximo de 4 parâmetros por função
- Segurança deve ser prioridade absoluta (senhas, tokens)
- path: "internal/handler/**/*.go"
instructions: "Os handlers devem ser simples, focados apenas em receber requisições, validar entradas, chamar serviços e formatar respostas. Não permita lógica de negócio aqui. Exija validação de todas as entradas. Use o tratamento de erros centralizado. Documente todos os endpoints para Swagger."
- path: "internal/service/**/*.go"
instructions: "Serviços devem conter toda a lógica de negócio. Implemente interfaces explícitas. Não acesse diretamente repositórios de outros domínios. Respeite o SRP - um serviço deve ter um propósito específico e bem definido. Documente efeitos colaterais e comportamentos esperados."
- path: "internal/repository/**/*.go"
instructions: "Repositórios devem focar apenas em operações de dados. Use contextos para timeout e cancelamento. Implemente tratamento de erros de banco padronizado. Não inclua lógica de negócio. Documente contratos de interface. Otimize consultas para performance."
- path: "internal/model/**/*.go"
instructions: "Modelos devem ser simples e usar tags de validação do go-playground/validator. Não inclua lógica complexa. Use omitempty para campos opcionais. Documente o propósito de cada campo. Campos sensíveis devem ter 'sensitive' ou '-' nas tags json."
- path: "pkg/**/*.go"
instructions: "Componentes pkg devem ser bem testados e documentados. Evite dependências circulares. Utilize interfaces para facilitar testes. Trate erros de forma consistente. Documente a API pública completamente."
auto_review:
enabled: true
drafts: true
tools:
golangci-lint:
enabled: true
gitleaks:
enabled: true
yamllint:
enabled: true
chat:
auto_reply: true
knowledge_base:
opt_out: falseEste arquivo de configuração:
O foco está em exigir código extremamente legível, seguro e bem arquitetado, adequado para um gerenciador de senhas. |
No description provided.