Skip to content

refactor: reduz complexidade ciclomática dos controllers - #68

Merged
Anarayssa-dev merged 4 commits into
sprint-3from
refactor/issue-41
Jun 29, 2026
Merged

refactor: reduz complexidade ciclomática dos controllers#68
Anarayssa-dev merged 4 commits into
sprint-3from
refactor/issue-41

Conversation

@anamattos2

Copy link
Copy Markdown
Collaborator

Resumo

Refatora controllers para reduzir a complexidade ciclomática dos métodos analisados pelo RubyCritic/Saikuro, mantendo todos os métodos em app/controllers com complexity/method abaixo de 10.

Alterações realizadas

  • Refatorado DashboardsController#importar_json, separando validações, importação e tratamento de erro em métodos privados.
  • Refatorado FormulariosController#index, extraindo consultas de formulários pendentes, respondidos e fechados para métodos privados.
  • Removido link duplicado/quebrado de Gerenciamento em admin.html.erb, que apontava para templates_path.
  • Ajustado AcademicDataImporter para compatibilidade com os models atuais:
    • uso de Usuario em vez de User;
    • criação correta de Discente e Docente;
    • associação de Matricula;
    • associação de docente à turma importada;
    • chamada correta para UserMailer.primeiro_acesso.

Validações

  • bundle exec rubycritic app/controllers --no-browser
    • Score: 89.01
    • Todos os complexity/method dos controllers ficaram abaixo de 10.
  • bin/rubocop app/controllers/dashboards_controller.rb app/controllers/formularios_controller.rb app/services/importer/academic_data_importer.rb
    • Sem ofensas.
  • bundle exec rspec spec/requests spec/system
    • 23 examples, 0 failures.
  • git diff --check
    • Sem problemas de whitespace.

@anamattos2

Copy link
Copy Markdown
Collaborator Author
Arquivo Método Situação antes Refatoração aplicada Situação depois
app/controllers/dashboards_controller.rb importar_json complexity/method: 9.3, com alerta de HighComplexity, flog score 42 e aprox. 14 statements Separação da lógica em métodos privados para validação, importação, feedback ao usuário e tratamento de erro complexity/method: 5.0
app/controllers/formularios_controller.rb index complexity/method: 11.0, acima do limite definido Separação das consultas em métodos privados: formulários pendentes, respondidos e fechados complexity/method: 5.7

O método importar_json foi refatorado porque concentrava muitas responsabilidades em um único fluxo, incluindo validação do arquivo, chamada ao serviço de importação, tratamento de sucesso/falha, redirects e captura de exceções. Embora sua métrica complexity/method estivesse em 9.3, o RubyCritic também apontava HighComplexity, flog score de 42, aproximadamente 14 statements e chamadas duplicadas. A refatoração separou essas responsabilidades em métodos privados auxiliares, reduzindo a complexidade para 5.0 e tornando o controller mais legível e manutenível.

@Anarayssa-dev Anarayssa-dev moved this from Backlog to In review in Projeto EngSw - Grupo 1 Jun 29, 2026
@Anarayssa-dev
Anarayssa-dev merged commit 8594800 into sprint-3 Jun 29, 2026
0 of 8 checks passed
@github-project-automation github-project-automation Bot moved this from In review to Done in Projeto EngSw - Grupo 1 Jun 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

[Refactor] ABC Score < 20 em app_controllers [Refactor] Reduzir complexidade ciclomática (Saikuro < 10) em app/controllers

2 participants