🔍 Duplicate Code Detected: Repeated Response-Building Pattern
Analysis of latest commit on main
Assignee: @copilot
Summary
Los tres métodos de SecurityDependencyDemoController repiten el mismo bloque de construcción de respuesta usando LinkedHashMap, con las claves mode y dependency seguidas de datos específicos. Este patrón podría extraerse a un método auxiliar.
Duplication Details
Pattern: Repeated LinkedHashMap response construction
- Severity: Low
- Occurrences: 3
- Locations:
src/main/java/com/example/demo/controller/SecurityDependencyDemoController.java (lines 24-29)
src/main/java/com/example/demo/controller/SecurityDependencyDemoController.java (lines 38-42)
src/main/java/com/example/demo/controller/SecurityDependencyDemoController.java (lines 49-53)
- Code Sample:
// Instance 1 (lines 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;
// Instance 2 (lines 38-42)
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;
// Instance 3 (lines 49-53)
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;
Impact Analysis
- Maintainability: Añadir o renombrar una clave de respuesta requiere cambios en 3 sitios distintos.
- Bug Risk: Bajo — los datos son demo/estáticos, pero un cambio estructural en el formato de respuesta podría olvidarse en alguno de los métodos.
- Code Bloat: 18 líneas de código repetido en el mismo controlador.
Refactoring Recommendations
-
Extraer método auxiliar privado buildResponse
- Crear un método privado en el mismo controlador:
private Map<String, Object> buildResponse(String mode, String dependency, Map<String, Object> extra) {
Map<String, Object> response = new LinkedHashMap<>();
response.put("mode", mode);
response.put("dependency", dependency);
response.putAll(extra);
return response;
}
- Estimated effort: < 1 hora
- Benefits: Única fuente de verdad para la estructura de respuesta; facilita añadir/renombrar claves.
-
Usar un DTO o record de Java 14+ como alternativa más tipada:
record DemoResponse(String mode, String dependency, Map<String, Object> data) {}
Implementation Checklist
Analysis Metadata
- Analyzed Files: 9 archivos Java en
src/main/
- Detection Method: Semantic code analysis
- Analysis Date: 2026-06-16
Generated by Duplicate Code Detector · sonnet46 756.3K · ◷
Add this agentic workflows to your repo
To install this agentic workflow, run
gh aw add githubnext/agentics/workflows/duplicate-code-detector.md@298f992955146a6731d380a9de808e17861708e5
🔍 Duplicate Code Detected: Repeated Response-Building Pattern
Analysis of latest commit on
mainAssignee:
@copilotSummary
Los tres métodos de
SecurityDependencyDemoControllerrepiten el mismo bloque de construcción de respuesta usandoLinkedHashMap, con las clavesmodeydependencyseguidas de datos específicos. Este patrón podría extraerse a un método auxiliar.Duplication Details
Pattern: Repeated
LinkedHashMapresponse constructionsrc/main/java/com/example/demo/controller/SecurityDependencyDemoController.java(lines 24-29)src/main/java/com/example/demo/controller/SecurityDependencyDemoController.java(lines 38-42)src/main/java/com/example/demo/controller/SecurityDependencyDemoController.java(lines 49-53)Impact Analysis
Refactoring Recommendations
Extraer método auxiliar privado
buildResponseUsar un DTO o record de Java 14+ como alternativa más tipada:
Implementation Checklist
buildResponseAnalysis Metadata
src/main/Add this agentic workflows to your repo
To install this agentic workflow, run