Page tree

 

Ya soy un experto y estoy aquí para ayudar: ¡contesta preguntas pendientes y gana puntos!

Skip to end of metadata
Go to start of metadata

Tabla de Contenidos

Complejidad

NombreClaveDescripción
Complejidadcomplexity

Es la complejidad ciclomática, también conocida como métrica McCabe. Siempre que el flujo de control se divide, el contador de complejidad se incrementa en uno. Cada función tiene una complejidad mínima de 1.

Más detalles

Complejidad/claseclass_complexityComplejidad media por clase.
Complejidad/ficherofile_complexityComplejidad media por fichero.
Complejidad/métodofunction_complexityComplejidad media por función.

Diseño

NombreClaveDescripción

Ciclos entre ficheros

file_cycles

Número mínimo de ciclos detectados dentro de un directorio para poder identificar todas las dependencias no deseadas. Esta métrica está disponible a nivel de directorio.

Peso de los límites del fichero

file_edges_weight

Número de dependencias dentro de un directorio. Esta métrica está disponible a nivel de directorio.

Dependencias entre ficheros a cortar

package_tangles

Número de dependencias entre ficheros a cortar con el fin de eliminar ciclos entre directorios. Esta métrica está disponible a nivel de directorio, módulo y proyecto.

Interdependencias entre ficheros

file_tangles

Interdependencias entre ficheros = Dependencias sospechosas entre ficheros

Esta métrica está disponible a nivel de directorio.

Índice de interdependencias entre ficheros

file_tangle_index

Índice de interdependencias entre ficheros = 2 * (Interdependencias entre ficheros / Peso de los límites del fichero) * 100.

Esta métrica está disponible a nivel de directorio.

Ciclos entre paquetes

package_cycles

Número mínimo de ciclos detectados entre paquetes para identificar todas las dependencias no deseadas. Esta métrica está disponible a nivel de directorio, módulo y proyecto.

Dependencias ente paquetes a cortar

package_feedback_edges

Número de dependencias entre paquetes a cortar con el fin de eliminar ciclos entre paquetes. Esta métrica está disponible a nivel de paquete, módulo y programa.

Índice de interdependencias entre paquetes

package_tangle_index

Nivel de interdependencia entre paquetes. El mejor valor (0%) significa que no existe ningún ciclo y el peor valor (100%) significa que los paquetes son muy dependientes. Esta métrica se calcula con la siguiente fórmula: 2 * (Dependencias entre ficheros a cortar / Peso de los límites del paquete) *100. Esta métrica está disponible a nivel de directorio, módulo y proyecto.

Peso de los límites del paquete

package_edges_weight

Número de dependencias entre directorios. Esta métrica está disponible a nivel de directorio, módulo y proyecto.

Dependencias sospechosas entre ficheros

file_feedback_edges

Dependencias entre ficheros a cortar con el fin de eliminar ciclos entro los archivos dentro de un mismo directorio. Tenga en cuenta que los ciclos entre ficheros dentro de un directorio no siempre significa tener una arquitectura de mala calidad. Esta métrica está disponible a nivel de directorio.

Documentación

NombreClaveDescripción
Líneas de comentarioscomment_lines

Número de líneas que contienen comentarios o líneas de código comentadas.

Las líneas de comentarios no significativas (líneas de comentario vacías, líneas de comentario que solo contienen caracteres especiales, etc.) no incrementan el número de líneas de comentarios.

El siguiente bloque de código contiene 9 líneas de comentarios:

/**                                    +0 => línea de comentario vacío
 *                                     +0 => línea de comentario vacío
 * This is my documentation            +1 => comentario significativo
 * although I don't                    +1 => comentario significativo
 * have much                           +1 => comentario significativo
 * to say                              +1 => comentario significativo
 *                                     +0 => línea de comentario vacío
 ***************************           +0 => comentario no significativo
 *                                     +0 => línea de comentario vacío
 * blabla...                           +1 => comentario significativo
 */                                    +0 => línea de comentario vacío
 
/**                                    +0 => línea de comentario vacío
 * public String foo() {               +1 => código comentado
 *   System.out.println(message);      +1 => código comentado
 *   return message;                   +1 => código comentado
 * }                                   +1 => código comentado
 */                                    +0 => línea de comentario vacío

Más detalles

Comentarios (%)comment_lines_density

Densidad de líneas de comentarios = Líneas de comentarios / (Líneas de código + Líneas de comentarios) * 100

Con esta fórmula:

  • 50% significa que el número de líneas de código es igual al número de líneas de comentarios
  • 100% significa que el fichero solo contiene líneas de comentarios
Comentarios en las divisiones de los procedimientos Comentarios en las divisiones de los procedimientos (solo Cobol)
API pública documentada (%)public_documented_api_densityDensidad de API pública documentada = (APIs públicas - APIs públicas no documentadas) / APIs públicas * 100
APIs públicas no documentadaspublic_undocumented_apiAPIs públicas sin comentarios en la cabecera.

Código duplicado

NombreClaveDescripción

Bloques duplicados

duplicated_blocks

Número de bloques de líneas duplicadas.

Para que un bloque de código se considere como duplicado:

  • Proyectos que no son Java:
    • Debe haber al menos 100 tokens sucesivos y duplicados.
    • Estos tokens deben extenderse al menos en:
      • 30 líneas de código COBOL
      • 20 líneas de código ABAP
      • 10 líneas de código de otros lenguajes

  • Proyectos Java:
    • Debe haber al menos 10 sentencias sucesivas y duplicadas sea cual sea el número de tokens y líneas.

Las diferencias en la tabulación, así como en los literales de las cadenas (string) se ignoran mientras se detecta el código duplicado.

Ficheros duplicadosduplicated_filesNúmero de ficheros que intervienen en el código duplicado.
Líneas duplicadasduplicated_linesNúmero de líneas que intervienen en el código duplicado.
Líneas duplicadas (%)duplicated_lines_density

Densidad de código duplicado = Líneas duplicadas / Líneas * 100

Evidencias

NombreClaveDescripción

Nuevas evidencias

new_violations

Número de nuevas evidencias.

Nuevas xxxxx evidencias

new_xxxxx_violations

Número de nuevas evidencias con severidad xxxxx, xxxxx puede ser bloqueante, crítica, mayor, menor, informativas.

Evidencias

violations

Número de evidencias

xxxxx evidencias

xxxxx_violations

Número de evidencias con severidad xxxxx, xxxxx puede ser bloqueante, crítica, mayor, menor, informativas.

Evidencias con falsos positivosfalse_positive_issuesNúmero de evidencias con falsos positivos.
Evidencias abiertasopen_issuesNúmero de evidencias cuyo estado es Abierto
Evidencias confirmadasconfirmed_issuesNúmero de evidencias cuyo estado es Confirmado
Evidencias reabiertasreopened_issuesNúmero de evidencias cuyo estado es Reabierto

Evidencias ponderadas

weighted_violations

Suma de las evidencias ponderadas por un coeficiente asociado a cada severidad (Sum(xxxxx_violations * xxxxx_weight)).

Para establecer el peso de cada severidad, inicie sesión como administrador, vaya a Configuración > Configuración General > Issues Density > Issues Density y establezca la propiedad Rules weight. El valor por defecto es:

( (Blocker_violatons * 10) + (Critical_violations * 5) + (Major_violations * 3) + Minor_violations )

Índice de cumplimiento de reglas

violations_density

Índice de cumplimiento de reglas (RCI) = 100 - (Evidencias ponderadas / Líneas de código * 100)
Si el valor es negativo, se redondea 0%. 

Deuda técnicasqale_index

Esfuerzo para resolver todas las evidencias. La medida se almacena en minutos en la base de datos.

Severidad

SeveridadDescripción
Bloqueante

Riesgo operacional/seguridad. Esta evidencia podría hacer que toda la aplicación sea inestable en producción. Por ejemplo: llamada al recolector de basura, no cerrar un socket, etc.

Crítica

Riesgo operacional/seguridad. Esta evidencia puede incurrir en un comportamiento inesperado en producción sin afectar a la integridad de toda la aplicación. Por ejemplo: NullPointerException, mala captura de excepciones, falta de pruebas unitarias, etc.

Mayor

Estas evidencias pueden tener un impacto sustancial en la productividad. Por ejemplo, métodos demasiados complejos, ciclos entre paquetes, etc.

Menor

Estas evidencias podrían tener un potencial y menor impacto en la productividad. Por ejemplo, convenciones de nomenclatura, el finalizer no hace nada más que llamar a la superclase finalizer, etc.

Informativa

No se sabe o aún no es un riesgo para la seguridad o un impacto en la productividad.

Tamaño

MétricaClaveDescripción
Accesoresaccessors

Número de getters y setters utilizados para obtener (leer) o establecer (escribir) una propiedad de una clase.

Más detalles

Clasesclasses

Número de clases (incluyendo clases anidadas, interfaces, enumeraciones y anotaciones)

DirectoriosdirectoriesNúmero de directorios.
FicherosfilesNúmero of ficheros.
Líneas generadasgenerated_lines

Número de líneas generadas por generadores de código COBOL como CA-Telon.

Líneas de código generadasgenerated_nclocNúmero de líneas de código generadas por generadores de código COBOL como CA-Telon.

Sentencias de control de flujos internas

cobol_inside_ctrlflow_statements

Número de sentencias dentro de un control de flujos (GOBACK, STOP RUN, DISPLAY, CONTINUE, EXIT, RETURN, PERFORM paragraph1 THRU paragraph2).

Solo COBOL

Líneaslines

Número de líneas físicas (número de retornos de carro).

Líneas de códigoncloc

Número de líneas físicas que contienen al menos un carácter que no es ni un espacio en blanco o una tabulación o parte de un comentario.

Más detalles

Líneas de código en las divisiones de datoscobol_data_division_ncloc

Número de líneas de código en las divisiones de datos. Las líneas de código generadas se excluyen.

Solo COBOL

Líneas de código en divisiones de procedimientos

cobol_procedure_division_ncloc

Número de líneas de código en las divisiones de procedimientos. Las líneas de código generadas se excluyen.

Solo COBOL

Métodosfunctions

Número de funciones. Dependiendo del lenguaje, una función es cualquier función, método o párrafo

Más detalles

Sentencias de control de flujo externascobol_outside_ctrlflow_statements

Número de sentencias de control de flujo externas (CALL, EXEC CICS LINK, EXEC CICS XCTL, EXEC SQL, EXEC CICS RETURN).

Solo COBOL

ProyectosprojectsNúmero de proyectos en una vista.
API públicapublic_api

Número de clases públicas + número de funciones públicas + número de propiedades públicas.

Más detalles

Sentenciasstatements

Número de sentencias

Más detalles

Pruebas

MétricaClaveDescripción
Cobertura de las condicionesbranch_coverage

En cada línea de código que contiene expresiones booleanas, la cobertura de las condiciones simplemente responde a la pregunta: "¿En cada expresión booleana se han evaluado ambos valores, true y false?". Estas es la densidad de posibles condiciones en las estructuras de control de flujo que se han seguido durante la ejecución de las pruebas unitarias.

Cobertura de ramas = (CT + CF) / (2*B)

donde

CT = condiciones que han sido evaluadas como 'true' al menos una vez
CF = condiciones que han sido evaluadas como 'false' al menos una vez

B = número total de condiciones

Cobertura de las condiciones en código nuevo

new_branch_coverage

Idéntico a la Cobertura de las condiciones, pero restringido al código nuevo / actualizado

Éxito de la cobertura de condicionesbranch_coverage_hits_dataLista de condiciones cubiertas
Condiciones por líneaconditions_by_lineNúmero de condiciones por línea

Condiciones cubiertas por línea

covered_conditions_by_lineNúmero de condiciones cubiertas por línea
Coberturacoverage

Es una mezcla de la Cobertura por línea y la Cobertura por condiciones. El objetivo es proporcionar una respuesta aun más precisa a la siguiente pregunta: ¿Cuánto código tengo cubierto por las pruebas unitarias?

Cobertura = (CT + CF + LC)/(2*B + EL)

donde

CT = condiciones que han sido evaluadas como 'true' al menos una vez
CF = condiciones que han sido evaluadas como 'false' al menos una vez
LC = líneas cubiertas = líneas a cubrir - líneas no cubiertas

B = número total de condiciones
EL = número total de líneas ejecutables (líneas a cubrir)
Cobertura en código nuevonew_coverage

Idéntico a la Cobertura pero restringido al código nuevo / actualizado

Cobertura de líneasline_coverage

En una línea dada de código, la cobertura de línea simplemente responde a la siguiente cuestión: ¿Se ha ejecutado esta línea durante la ejecución de las pruebas unitarias? Es la densidad de líneas cubiertas por las pruebas unitarias:

Cobertura de líneas = LC / EL

donde

LC = líneas cubiertas ( líneas a cubrir - líneas no cubiertas )
EL = número total de líneas ejecutables (líneas a cubrir)

Cobertura de líneas en código nuevo

new_line_coverage

Idéntico a la cobertura de líneas pero restringido a código nuevo / actualizado

Éxitos de cobertura de líneas

coverage_line_hits_dataLista de líneas cubiertas
Líneas a cubrirlines_to_cover

Número de líneas de código que podrían ser objeto de pruebas unitarias (por ejemplo, líneas en blanco o líneas completas de comentarios no se consideran líneas a cubrir)

Líneas a cubrir en código nuevonew_lines_to_coverIdéntico a las líneas a cubrir pero restringido a código nuevo / actualizado

Pruebas unitarias omitidas

skipped_testsNúmero de pruebas unitarias omitidas
Condiciones no cubiertasuncovered_conditions

Número de condiciones que no están cubiertas por las pruebas unitarias

Condiciones no cubiertas en código nuevonew_uncovered_conditions

Idéntico a las condiciones no cubiertas pero restringido a código nuevo / actualizado

Líneas no cubiertasuncovered_linesNúmero de líneas de código que no están cubiertas por las pruebas unitarias
Líneas no cubiertas en código nuevonew_uncovered_linesIdéntico a Líneas no cubiertas pero restringido a código nuevo / actualizado.
Pruebas unitariastestsNúmero de pruebas unitarias.
Duración de las pruebas unitariastest_execution_timeDuración de las pruebas unitarias.
Errores en las pruebas unitariastest_errorsNúmero de pruebas unitarias con errores.
Fallos en las pruebas unitariastest_failuresNúmero de pruebas unitarias que han fallado con una excepción inesperada.
Éxito de las pruebas unitarias (%)test_success_densityDensidad de éxito en las pruebas unitarias = (Pruebas unitarias - (Errores en las pruebas unitarias + Fallos en las pruebas unitarias)) / Pruebas unitarias * 100

Los mismos tipos de métricas existen para la cobertura de pruebas de integración y para la cobertura general (pruebas unitarias + pruebas de integración).

No existen métricas sobre la ejecución de pruebas para las pruebas de integración y pruebas generales.

 

  • No labels