Skip to content

PG04_Entidades con defecto

Miguel Ángel Jódar de la Torre edited this page Apr 21, 2026 · 36 revisions

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

Clases con defectos

Defectos dentro de clases- Medibles

C1 C2 C3 C4 C5 C6
Data Class Clase org.jfree.chart.renderer.xy.GradientXYBarPainter URL GitHub NOA alto, baja lógica propia Detectado con InCode; clase centrada principalmente en datos y comportamiento simple
Data Class Clase org.jfree.chart.renderer.category.GradientBarPainter URL GitHub NOA alto, baja complejidad funcional Detectado con InCode; predominan atributos y comportamiento poco complejo

Defectos dentro de clases- Complejidad innecesaria

C1 C2 C3 C4 C5 C6
God Class Clase org.jfree.chart.renderer.category.LayeredBarRenderer líneas 60-400 URL GitHub NLOC alto, complejidad alta, baja cohesión Detectado con InCode
God Class Clase org.jfree.chart.renderer.category.StatisticalLineAndShapeRenderer líneas 78-350 URL GitHub NLOC alto, VG alto Detectado con InCode
God Class Clase org.jfree.chart.renderer.category.StackedBarRenderer líneas 70-300 URL GitHub NLOC alto, NOM alto Detectado con InCode
God Class Clase org.jfree.chart.renderer.xy.StackedXYAreaRenderer líneas 90-350 URL GitHub NLOC alto, LCOM alto Detectado con InCode

Defectos dentro de clases - Duplicación

C1 C2 C3 C4 C5 C6
Internal Duplication Clase org.jfree.chart.renderer.xy.XYLineAndShapeRenderer URL GitHub Bloques de código similares Detectado con InCode como duplicación interna
External Duplication Clase org.jfree.chart.renderer.category.StatisticalBarRenderer URL GitHub Similitud con otras clases del paquete renderer Detectado con InCode como duplicación externa

Defectos dentro de clases - Lógica condicional

C1 C2 C3 C4 C5 C6

Defectos entre clases - Datos

C1 C2 C3 C4 C5 C6
Data Clump Método org.jfree.chart.renderer.category.GanttRenderer.drawTask Líneas 377 - 506 [URL GitHub] (https://github.com/jfree/jfreechart/blob/master/src/main/java/org/jfree/chart/renderer/category/GanttRenderer.drawTask.java) NP = 9 (Número de parámetros).VG ≈ 17 NLOC ≈ 110 Se confirma el diagnóstico de inCode: los parámetros plot, domainAxis, rangeAxis, dataset, row y column se pasan juntos sistemáticamente, lo que indica una falta de abstracción de "Contexto de Dibujo"

Defectos entre clases – Herencia

C1 C2 C3 C4 C5 C6

Defectos entre clases – Responsabilidad

C1 C2 C3 C4 C5 C6
Feature Envy Método org.jfree.chart.renderer.category.StatisticalLineAndShapeRenderer.drawItem líneas 120-250 URL GitHub CBO alto, uso intensivo de datos externos Detectado con InCode
Feature Envy Método org.jfree.chart.renderer.xy.ClusteredXYBarRenderer.drawItem líneas 150-280 URL GitHub CBO alto, acceso frecuente a datos de otras clases Detectado con InCode
Schizophrenic Class Clase org.jfree.chart.axis.NumberAxis Líneas 1 - 855 [URL GitHub] (https://github.com/jfree/jfreechart/blob/master/src/main/java/org/jfree/chart/axis/NumberAxis.java) TCC (Tight Class Cohesion) < 0.2: Cohesión extremadamente baja.

WMC (Weighted Method Count) > 100: Elevada complejidad acumulada.

ATFD (Access to Foreign Data) = Alto: Manipula datos de Plot, Range, AxisState, etc. | inCode confirma que la interfaz pública es excesiva y fragmentada. La clase sufre una crisis de identidad al gestionar simultáneamente: 1) Cálculo de rangos, 2) Formateo de etiquetas, 3) Lógica de renderizado de marcas (ticks) y 4) Notificación de eventos. Viola el Principio de Responsabilidad Única (SRP). | | | | | | | | | | | | | | | | | | | | | | | | | | | | |

Defectos entre clases- Adecuación al cambio

C1 C2 C3 C4 C5 C6

Defectos entre clases- Biblioteca de clases

C1 C2 C3 C4 C5 C6

Métodos con defectos

C1 C2 C3 C4 C5 C6

PG_C02 Caracterización de aplicaciones de código con Formato ISO 9126


PG03_Valores umbrales de medidas de código


PG_C04 Evaluación de la facilidad de mantenimiento. Identificación de defectos de código.

Clone this wiki locally