PG04_Entidades con defecto - DAAS26-P-C/poolobject GitHub Wiki

En este apartado se presentan un conjunto de entidades de código con defectos identificadas. Para la identificación de defectos se utilizan herramientas específicas (InCode y PMD), herramientas de medición y valores umbrales (SourceMeter y RefactorIT) e inspecciones de código manual.

Por cada instancia del defecto identificada se debe crear una fila con la siguiente información: C1: Nombre del defecto. C2: Tipo de la entidad [subsistema|clase|método]. C3: Nombre único (cualificado) de la entidad anómala. Un mismo defecto puede involucrar varias entidades, una fila por cada una. C4: Rango de líneas de código donde aparece e hiperenlace al código fuente de la entidad del repositorio público
C5: Conjunto de métricas e intervalos utilizados para su identificación si existen. C6: Otras consultas aplicadas para la detección.

Paquetes con defectos

C1 C2 C3 C4 C5 C6
Alta concentración de defectos Subsistema org.freeplane.view Paquete completo 458 clases, 3302 métodos InCode
Complejidad Estructural Subsistema org.freeplane.core Paquete completo 511 clases, 2844 métodos InCode
Problemas de diseño en extensiones Subsistema org.freeplane.plugins Paquete completo 248 clases, 1753 métodos InCode

Clases con defectos

Defectos dentro de clases- Medibles

C1 C2 C3 C4 C5 C6
Clase demasiado grande (Large Class) Clase org.freeplane.view.swing.map.cloud.CloudView Clase completa Severity = 6, número de métodos elevado Incode + PMD Rule: TooManyMethod (line 42)
Clase demasiado grande (Large Class) Clase org.freeplane.core.util.TextUtils Clase completa, a partir de la línea 20 Alto número de metodos utilitarios y baja cohesion La clase posee una gran cantidad de metodos, es considerado para su refactorización Eclipse PMD
Clase demasiado larga (Large Class) Clase org.freeplane.plugin.script.ScriptEditor Clase completa Acumulación de responsabilidades (UI y lógica) y elevado número de métodos Eclipse PMD + Inspeccion manual

Defectos dentro de clases- Complejidad innecesaria

C1 C2 C3 C4 C5 C6
Speculative Generality Clase org.freeplane.view.swing.map.NodeViewFactory Clase completa Presencia de abstracciones innecesarias que no aportan funcionalidad real Inspección Manual
Speculative Generality Clase org.freeplane.core.extension.ExtensionController Clase completa Diseño excesivamente generalizado para posibles usos futuros no implementados Inspección Manual
Speculative Generality Clase org.freeplane.plugin.script.ScriptCondition Clase completa Código preparado para extensiones futuras sin uso claro actual Inspección Manual

Defectos dentro de clases - Duplicación

C1 C2 C3 C4 C5 C6
Magic Number Método org.freeplane.view.swing.map.MapView Linea 2875 aproximadamente Uso de valores literales en condiciones Analisis de PMD (AvoidLiteralsInIfCondition)
Magic Number Método org.freeplane.core.util.TextUtils Lineas: 284,286 y 288 Uso de los valores literales en las condiciones (handle Unicode) Análisis de PMD en Eclipse (AvoidLiteralsInIfCondition)
Magic Number Método org.freeplane.plugin.script.ScriptEditor Linea: 13 Uso de valores literales directamente en el código. Análisis de PMD en Eclipse (AvoidLiteralsInIfCondition)

Defectos dentro de clases - Lógica condicional

C1 C2 C3 C4 C5 C6
Switch Statement Método org.freeplane.view.swing.features.menu.FilterMenuBuilder Varias líneas Uso de estructuras condicionales complejas que aumentan la complejidad ciclomática PMD + inspección manual
Switch Statement Método org.freeplane.core.util.MenuUtils Varias líneas Uso de múltiples condiciones que podrían reemplazarse por polimorfismo PMD + Inspección manual
Switch Statement Método org.freeplane.plugin.script.ScriptEditor Varias líneas Lógica condicional extensa que dificulta la extensibilidad del código PMD + Inspección manual

Defectos entre clases - Datos

C1 C2 C3 C4 C5 C6
Data Class Clase org.freeplane.view.swing.TextPainter Empieza en la línea 32 Baja encapsulación y acceso a muchos datos a través de métodos de acceso de getters/Setters InCode + Análisis de PMD
Data Class Clase org.freeplane.core.util.IndexPair Líneas aproximadas: De la 52-87 NOA bajo, lo que implica baja encapsulación debido a alto número de atributos públicos y una alta cohesión. Uso intensivo de atributos con lógica limitada InCode + Análisis de PMD
Data Class Clase org.freeplane.plugin.scripts.addons.AddOnProperties Lineas: 17-58 La clase presenta una baja encapsulación al centrarse en el almacenamiento de datos mediante atributos y métodos de acceso (getters/setters) InCode + Análisis de PMD

Defectos entre clases – Responsabilidad

C1 C2 C3 C4 C5 C6
Feature Envy Método org.freeplane.view.swing.features.time.mindmapmode.nodelist.NodeListWithReplacement.getNodeHoldersAt(int row) Método completo Alto acoplamiento y uso intensivo de datos externos InCode + inspección manual

Métodos con defectos

C1 C2 C3 C4 C5 C6
Método con exceso de responsabilidad (Feature Envy) Método org.freeplane.view.swing.features.time.mindmapmode.nodelist.NodeListWithReplacement.getNodeHoldersAt(int row) Varias líneas Uso intensivo de datos externos InCode
Método con demasiados parámetros (Data Clumps) Método
org.freeplane.view.swing.map.cloud.CloudView.paintDecoration
Varias líneas Presencia de número elevado de parámetros relacionados InCode
Método con valores literales Método org.freeplane.view.swing.map.NodeView.getTableCellRendererComponent Varias líneas Uso de valores numéricos constantes PMD
Método con lógica condicional completa Método org.freeplane.view.swing.map.MapView Varias líneas Uso de estructuras condicionales complejas Inspección manual
⚠️ **GitHub.com Fallback** ⚠️