Skip to content

[🧬 Duplicate Code Report 🔍] Duplicate Code: Repeated response-building pattern in SecurityDependencyDemoController #128

Description

@github-actions

Análisis del commit b16c75a

Assignee: @copilot

Resumen

Los tres métodos de SecurityDependencyDemoController repiten el mismo bloque de construcción de respuesta (LinkedHashMap) con las claves "mode" y "dependency", lo que produce ~16 líneas de código estructuralmente duplicado.

Detalles de la duplicación

Patrón: Construcción repetida de respuesta Map<String, Object>

  • 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-42)
    • src/main/java/com/example/demo/controller/SecurityDependencyDemoController.java (líneas 48-53)
  • Ejemplo de código duplicado:
// Repetido en los 3 métodos con variaciones menores
Map<String, Object> response = new LinkedHashMap<>();
response.put("mode", "exploitable");          // o "non-exploitable"
response.put("dependency", "org.apache...");  // varía por método
response.put("input", template);              // o "entries"
return response;

Análisis de impacto

  • Mantenibilidad: Añadir o renombrar un campo de respuesta requiere cambiar 3 lugares.
  • Riesgo de bugs: Una inconsistencia en los nombres de clave entre métodos puede pasar desapercibida.
  • Código repetido: ~16 líneas de lógica idéntica en estructura.

Recomendaciones de refactoring

  1. Extraer método auxiliar privado

    • Crear buildResponse(String mode, String dependency, String dataKey, Object dataValue) en el mismo controlador.
    • Esfuerzo estimado: 30 min.
    • Beneficio: un único punto de cambio para el formato de respuesta.
  2. Usar un DTO o record de respuesta

    • Crear SecurityDemoResponse con campos mode, dependency, data.
    • Serializar con Jackson automáticamente.
    • Beneficio: tipado estático, fácilmente extensible.

Checklist de implementación

  • Revisar los hallazgos de duplicación
  • Elegir estrategia de refactoring (método auxiliar vs. DTO)
  • Implementar los cambios
  • Verificar que los endpoints siguen devolviendo la misma respuesta JSON
  • No hay tests de integración que romper (comprobar)

Metadatos del análisis

  • Archivos analizados: 6 archivos fuente (excluidos tests y workflows)
  • Método de detección: Análisis semántico y estructural
  • Commit: b16c75a
  • Fecha de análisis: 2026-06-24T13:03:01Z

Generated by Duplicate Code Detector · sonnet46 711.2K ·

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 26, 2026, 1:07 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