Skip to content

Conversation

@kelvennds1
Copy link

📊 Sprint 3 - Refatoração e Documentação

Data de Entrega: 16/12/2025


🎯 Objetivos Atingidos

Objetivo Meta Status
ABC Score < 20 por método 100% ATINGIDO
Complexidade Ciclomática < 10 por método 100% ATINGIDO
Cobertura de Testes > 90% 92.83% ATINGIDO
Happy/Sad Path Todos os cenários ATINGIDO
Documentação RDoc 100% documentado 100% ATINGIDO

📈 Métricas Finais

ABC Score (Flog)

  • Média: 6.3 (antes: 7.6)
  • Resultado: Todos os métodos < 20

Complexidade Ciclomática (RuboCop)

  • Máxima: 4
  • Resultado: Todos os métodos < 10

Cobertura de Testes (SimpleCov)

  • Total de Linhas: 935
  • Linhas Cobertas: 868
  • Cobertura: 92.83%

Documentação RDoc

  • Classes: 30/30 (100%)
  • Modules: 1/1 (100%)
  • Constants: 4/4 (100%)
  • Attributes: 9/9 (100%)
  • Methods: 64/64 (100%)
  • Total: 108/108 (100%)

🧪 Testes

Framework Exemplos Status
RSpec 253 specs ✅ 0 falhas
Cucumber 59 scenarios, 388 steps ✅ 0 falhas
Minitest 77 tests, 201 assertions ✅ 0 falhas

🛠️ Técnicas de Refatoração Aplicadas

  1. Extract Method - Métodos longos divididos em métodos menores
  2. Replace Conditional with Guard Clauses - Early returns
  3. Decompose Conditional - Condições extraídas para métodos predicados
  4. Single Responsibility Principle - Classes e métodos com uma única responsabilidade

📁 Principais Arquivos Modificados

Controllers

  • avaliacoes_controller.rb - 15 novos métodos
  • sessions_controller.rb - 8 novos métodos
  • templates_controller.rb - 6 novos métodos

Models

  • template_question.rb - 10 novos métodos
  • Todos os models com documentação RDoc completa

Services

  • sigaa_importer.rb - 12 novos métodos
  • Todos os services com documentação RDoc completa

📊 Resumo das Melhorias

Métrica Antes Depois Melhoria
Métodos com ABC >= 20 9 0 ✅ -100%
Métodos com Complexidade >= 10 0 0 ✅ Mantido
Cobertura de Testes 91.49% 92.83% ✅ +1.34%
Documentação RDoc 16% 100% ✅ +84%

🔧 Ferramentas Utilizadas

  • RubyCritic 4.11.0 - Análise de qualidade
  • Flog 4.9.0 - ABC Score
  • SimpleCov 0.22.0 - Cobertura de testes
  • RDoc - Documentação
  • RuboCop - Complexidade ciclomática e linting

kelvennds1 and others added 30 commits November 16, 2025 23:20
- Auto-corrected 40 RuboCop violations using -A flag
- Moved cucumber-rails to test group with require: false
- Fixed Gemfile syntax and style according to omakase guidelines
- Resolved CI lint test failures
Add BDD feature for EngSwCIC#103: create evaluation forms from template
Add BDD feature for EngSwCIC#109: view pending evaluation forms
Add BDD feature for EngSwCIC#100: user registration via SIGAA import
Add BDD feature for EngSwCIC#105: password setup flow
reisfilipe2002 and others added 30 commits December 6, 2025 18:15
Implements login functionality with session management:
- SessionsController for handling login/logout
- Login view with proper validation
- ApplicationController with authentication helpers
- Migration for pending_activation field
- Comprehensive test coverage (models, controllers, BDD)

All tests passing:
- 19 model tests (Usuario, Docente, Dicente)
- 6 controller tests (SessionsController)
- 3 BDD scenarios (valid/invalid login)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Implements password setup flow for new users:
- PasswordsController for password setup via email link
- Password setup views with validation
- Token expiration (24 hours)
- Request new link functionality
- Migration for password_reset_token fields
- Comprehensive test coverage

All tests passing:
- 7 controller tests (PasswordsController)
- 4 BDD scenarios (password setup flows)
## Refatorações (ABC Score < 20)
- AvaliacoesController#responder: 33.6 → 9.0 (-73%)
- SigaaImporter#import_docente_dicentes_and_matriculas: 30.3 → 3.3 (-89%)
- TemplateQuestion#normalize_fields: 28.3 → 4.9 (-83%)
- SessionsController#create: 22.6 → 9.1 (-60%)
- TemplatesController#build_placeholder_question: 20.6 → 5.2 (-75%)
- 4 outros métodos refatorados

## Documentação RDoc
- 22/30 classes documentadas
- 35/62 métodos documentados
- 54.72% do código documentado

## Métricas Finais
- ABC Score: Média 6.3, todos < 20
- Complexidade Ciclomática: todos < 10
- Cobertura RSpec: 92.83% (253 specs)
- Cucumber: 59 scenarios, 388 steps

## Técnicas Aplicadas
- Extract Method
- Replace Conditional with Guard Clauses
- Decompose Conditional
- Single Responsibility Principle
- Documentar ApplicationHelper, ApplicationRecord, ApplicationMailer
- Documentar ApplicationJob e PasswordSetupMailer
- Documentar TemplateQuestion com todos os métodos públicos e privados
- Documentar métodos find_or_initialize_resposta, submit_resposta,
  save_submitted_resposta e render_submission_error em AvaliacoesController
- Adicionar documentação completa de atributos e constantes

Métricas finais Sprint 3:
- RDoc: 100% documentado (108/108 elementos)
- RSpec: 253 exemplos passando
- Cobertura: 92.83%
- ABC Score: < 20 (todos os métodos de usuário)
- Complexidade Ciclomática: < 10 (todos os métodos)
- Corrige trailing whitespace em múltiplos arquivos
- Converte aspas simples para aspas duplas (Style/StringLiterals)
- Corrige indentação de tabs para espaços (Layout/IndentationStyle)
- Adiciona espaços dentro de array literals (Layout/SpaceInsideArrayLiteralBrackets)
- Remove linhas em branco extras (Layout/EmptyLinesAroundBlockBody)
- Adiciona newline final em arquivos (Layout/TrailingEmptyLines)
- Corrige espaços em comentários (Layout/LeadingCommentSpace)

RuboCop: 140 arquivos inspecionados, 0 ofensas
- Corrige redirecionamento após login de Dicente para formularios_pendentes_path
- Corrige mensagens em português nos testes (flash[:alert])
- Adiciona autenticação nos testes de ResultadosController e TemplatesController
- Corrige senha padrão nos helpers create_docente e create_dicente
- Corrige mensagem de erro de validação do template

77 testes passando, 201 assertions
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants