Skip to content

[🧬 Duplicate Code Report 🔍] Duplicate Code: Patrón de construcción de mapa de respuesta en SecurityDependencyDemoController #103

@github-actions

Description

@github-actions

Análisis del commit b16c75a

Asignado a: @copilot

Resumen

Los tres métodos endpoint de SecurityDependencyDemoController repiten el mismo patrón de construcción de un LinkedHashMap de respuesta: creación del mapa, inserción de "mode" y "dependency", adición de datos específicos y return. Este bloque duplicado aparece 3 veces con variaciones mínimas.

Detalles de la Duplicación

Patrón: Construcción de mapa de respuesta

  • Severidad: Media
  • Ocurrencias: 3
  • Ubicaciones:
    • src/main/java/com/example/demo/controller/SecurityDependencyDemoController.java (líneas 24–29)
    • src/main/java/com/example/demo/controller/SecurityDependencyDemoController.java (líneas 38–43)
    • src/main/java/com/example/demo/controller/SecurityDependencyDemoController.java (líneas 49–53)
  • Ejemplo de código duplicado:
    // Presente en los 3 métodos con diferente "mode", "dependency" y entradas
    Map<String, Object> response = new LinkedHashMap<>();
    response.put("mode", "...");
    response.put("dependency", "...");
    response.put("...", ...);  // dato específico del método
    return response;

Análisis de Impacto

  • Mantenibilidad: Si se necesita cambiar la estructura de la respuesta (p.ej. añadir un campo común), hay que modificar los 3 métodos por separado.
  • Riesgo de bugs: Un cambio parcial podría dejar los endpoints inconsistentes entre sí.
  • Code Bloat: ~12 líneas de código estructuralmente idéntico.

Recomendaciones de Refactoring

  1. Extraer método privado buildResponse

    • Crear un método auxiliar en la misma clase:
      private Map<String, Object> buildResponse(String mode, String dependency, String dataKey, Object data) {
          Map<String, Object> response = new LinkedHashMap<>();
          response.put("mode", mode);
          response.put("dependency", dependency);
          response.put(dataKey, data);
          return response;
      }
    • Esfuerzo estimado: < 1 hora
    • Beneficios: elimina las 3 copias del patrón, facilita cambios futuros en la estructura de la respuesta.
  2. Alternativa: uso de un DTO o record

    • Definir un record DemoResponse(String mode, String dependency, ...) para tipado estático.

Checklist de Implementación

  • Revisar los hallazgos de duplicación
  • Extraer método privado buildResponse
  • Refactorizar los 3 métodos para usar el nuevo helper
  • Verificar que los endpoints siguen devolviendo la misma respuesta
  • Actualizar tests si los hay

Metadatos del Análisis

  • Archivos analizados: 7 archivos Java (src/main)
  • Método de detección: Análisis semántico de código
  • Commit: b16c75a
  • Fecha de análisis: 2026-06-11

Generated by Duplicate Code Detector · sonnet46 844K ·

Add this agentic workflows to your repo

To install this agentic workflow, run

gh aw add githubnext/agentics/workflows/duplicate-code-detector.md@298f992955146a6731d380a9de808e17861708e5
  • expires on Jun 13, 2026, 1:44 PM UTC

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions