Análisis del commit b16c75a
Assignee: @copilot
Summary
Los tres métodos de SecurityDependencyDemoController repiten el mismo bloque de construcción de Map<String, Object> con LinkedHashMap, añadiendo siempre las claves "mode" y "dependency". Este patrón aparece 3 veces sumando ~16 líneas de código duplicado.
Duplication Details
Pattern: LinkedHashMap response builder
- Severity: Medium
- Occurrences: 3
- Locations:
src/main/java/com/example/demo/controller/SecurityDependencyDemoController.java (lines 24–29, method text4ShellExploitable)
src/main/java/com/example/demo/controller/SecurityDependencyDemoController.java (lines 38–42, method commonsCollectionsNonExploitable)
src/main/java/com/example/demo/controller/SecurityDependencyDemoController.java (lines 49–53, method guavaNonExploitable)
- Code Sample:
// Repeated in all three methods:
Map<String, Object> response = new LinkedHashMap<>();
response.put("mode", "...");
response.put("dependency", "...");
// ... add extra fields ...
return response;
Impact Analysis
- Maintainability: Añadir o renombrar una clave común requiere modificar los tres métodos.
- Bug Risk: Inconsistencias si se actualiza sólo algunos métodos (e.g., cambio de clave
"dependency" a "lib").
- Code Bloat: ~12 líneas redundantes que pueden eliminarse con un helper.
Refactoring Recommendations
-
Extraer método helper buildDemoResponse
private Map<String, Object> buildDemoResponse(String mode, String dependency) {
Map<String, Object> response = new LinkedHashMap<>();
response.put("mode", mode);
response.put("dependency", dependency);
return response;
}
Cada método sólo añade sus campos específicos tras llamar al helper.
- Estimated effort: 30 min
- Benefits: Punto único de modificación, mayor legibilidad.
-
Considerar un record/DTO de respuesta
Crear una clase DemoResponse con campos mode, dependency y data que se serialice automáticamente.
Implementation Checklist
Analysis Metadata
- Analyzed Files: 6 (controllers + services + models)
- Detection Method: Semantic code analysis
- Commit: b16c75a
- Analysis Date: 2026-06-13
Generated by Duplicate Code Detector · sonnet46 698.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
Análisis del commit b16c75a
Assignee:
@copilotSummary
Los tres métodos de
SecurityDependencyDemoControllerrepiten el mismo bloque de construcción deMap<String, Object>conLinkedHashMap, añadiendo siempre las claves"mode"y"dependency". Este patrón aparece 3 veces sumando ~16 líneas de código duplicado.Duplication Details
Pattern: LinkedHashMap response builder
src/main/java/com/example/demo/controller/SecurityDependencyDemoController.java(lines 24–29, methodtext4ShellExploitable)src/main/java/com/example/demo/controller/SecurityDependencyDemoController.java(lines 38–42, methodcommonsCollectionsNonExploitable)src/main/java/com/example/demo/controller/SecurityDependencyDemoController.java(lines 49–53, methodguavaNonExploitable)Impact Analysis
"dependency"a"lib").Refactoring Recommendations
Extraer método helper
buildDemoResponseCada método sólo añade sus campos específicos tras llamar al helper.
Considerar un record/DTO de respuesta
Crear una clase
DemoResponsecon camposmode,dependencyydataque se serialice automáticamente.Implementation Checklist
buildDemoResponseenSecurityDependencyDemoControllerAnalysis Metadata
Add this agentic workflows to your repo
To install this agentic workflow, run