Skip to content

[🧬 Duplicate Code Report 🔍] Duplicate Code: Response Map Construction Pattern in SecurityDependencyDemoController #107

Description

@github-actions

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

  1. 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.
  2. Considerar un record/DTO de respuesta
    Crear una clase DemoResponse con campos mode, dependency y data que se serialice automáticamente.

Implementation Checklist

  • Revisar los hallazgos de duplicación
  • Extraer helper buildDemoResponse en SecurityDependencyDemoController
  • Actualizar los tres métodos para usar el helper
  • Verificar que los tests existentes siguen pasando
  • Confirmar que la respuesta JSON no cambia

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
  • expires on Jun 15, 2026, 12:55 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