Skip to content

[🧬 Duplicate Code Report 🔍] Patrón duplicado de construcción de respuesta en SecurityDependencyDemoController #117

@github-actions

Description

@github-actions

🔍 Código Duplicado: Patrón de construcción de Map de respuesta

Análisis del commit b16c75a

Responsable: @copilot

Resumen

Tres métodos en SecurityDependencyDemoController repiten el mismo bloque de construcción de LinkedHashMap para generar la respuesta HTTP, con mínimas variaciones.

Detalles de la Duplicación

Patrón: Construcción repetida de Map 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-42)
    • src/main/java/com/example/demo/controller/SecurityDependencyDemoController.java (líneas 49-53)
  • Ejemplo de código duplicado:
// Método 1 (líneas 24-29)
Map<String, Object> response = new LinkedHashMap<>();
response.put("mode", "exploitable");
response.put("dependency", "org.apache.commons:commons-text:1.9");
response.put("input", template);
response.put("resolved", resolved);
return response;

// Método 2 (líneas 38-42) — mismo patrón
Map<String, Object> response = new LinkedHashMap<>();
response.put("mode", "non-exploitable");
response.put("dependency", "commons-collections:commons-collections:3.1");
response.put("entries", unmodifiable);
return response;

// Método 3 (líneas 49-53) — mismo patrón
Map<String, Object> response = new LinkedHashMap<>();
response.put("mode", "non-exploitable");
response.put("dependency", "com.google.guava:guava:24.1.1-jre");
response.put("entries", demo);
return response;

Análisis de Impacto

  • Mantenibilidad: Si cambia la estructura de respuesta, hay que modificar 3 métodos por separado.
  • Riesgo de bugs: Cambios inconsistentes entre métodos si se olvida actualizar alguno.
  • Código hinchado: ~16 líneas repetidas que podrían reducirse a una sola llamada a un método auxiliar.

Recomendaciones de Refactorización

  1. Extraer un método buildResponse(String mode, String dependency, String key, Object value)

    • Ubicación sugerida: método privado en la misma clase o clase utilitaria ResponseBuilder
    • Esfuerzo estimado: bajo (< 1 hora)
    • Beneficios: un único punto de modificación para el formato de respuesta
  2. Usar un record o DTO tipado en lugar de Map<String, Object> genérico

    • Mejora legibilidad y seguridad de tipos

Checklist de Implementación

  • Revisar los hallazgos de duplicación
  • Extraer método auxiliar buildResponse
  • Aplicar refactorización en los 3 métodos
  • Verificar que los endpoints siguen devolviendo la misma estructura JSON
  • Actualizar tests si los hay

Metadatos del Análisis

  • Archivos analizados: 5 archivos fuente Java
  • Método de detección: Análisis semántico de código
  • Commit: b16c75a
  • Fecha de análisis: 2026-06-19

Generated by Duplicate Code Detector · sonnet46 968.5K ·

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 21, 2026, 1:28 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