🔍 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
-
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
-
Usar un record o DTO tipado en lugar de Map<String, Object> genérico
- Mejora legibilidad y seguridad de tipos
Checklist de Implementación
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
🔍 Código Duplicado: Patrón de construcción de Map de respuesta
Análisis del commit b16c75a
Responsable:
@copilotResumen
Tres métodos en
SecurityDependencyDemoControllerrepiten el mismo bloque de construcción deLinkedHashMappara generar la respuesta HTTP, con mínimas variaciones.Detalles de la Duplicación
Patrón: Construcción repetida de Map de respuesta
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)Análisis de Impacto
Recomendaciones de Refactorización
Extraer un método
buildResponse(String mode, String dependency, String key, Object value)ResponseBuilderUsar un record o DTO tipado en lugar de
Map<String, Object>genéricoChecklist de Implementación
buildResponseMetadatos del Análisis
Add this agentic workflows to your repo
To install this agentic workflow, run