Saltar a contenido

Métricas del código

Una instantánea medida del código de Domain y sus módulos, contada con cloc. Los gráficos muestran líneas de código (líneas en blanco y de comentario excluidas) salvo que se indique lo contrario.

Instantánea

Medido en la rama 3.x, 2026-10-21, con cloc 2.08. 492 archivos, 35,477 líneas de código, 15,293 líneas de comentario, 7,468 en blanco (58,238 líneas en total). Consulte la sección Metodología más abajo para reproducir.

Resumen

Código Comentarios En blanco Archivos Producción Pruebas
35,477 15,293 7,468 492 22,481 12,996

Producción y pruebas

Domain incluye 12,996 líneas de código de prueba que respaldan 22,481 líneas de código de producción, una proporción pruebas/producción del 58%.

Líneas por lenguaje

Lenguaje Código Comentarios En blanco Archivos
PHP 23,347 15,087 5,179 322
Markdown 6,555 0 2,129 42
YAML 5,133 58 77 119
CSS 236 69 69 1
JavaScript 122 65 14 4
Text 41 0 0 2
JSON 25 0 0 1
Twig 18 14 0 1

Composición

En todos los lenguajes, el código supone el 61% de las líneas, los comentarios el 26% y las líneas en blanco el 13%. La proporción de comentarios refleja las convenciones de docblock de Drupal.

Por módulo

Código de producción (latón) y de prueba (acero) por módulo, de mayor a menor.

Módulo Producción Pruebas Total
domain 5,106 4,220 9,326
(raíz del proyecto) 6,763 1 6,764
domain_access 2,064 1,819 3,883
domain_alias 1,729 1,769 3,498
domain_source 1,427 1,910 3,337
domain_content 3,003 263 3,266
domain_config_ui 1,270 932 2,202
domain_config 519 866 1,385
domain_config_language 429 496 925
domain_config_language_ui 171 720 891

Conjunto de pruebas

Domain incluye 124 clases de prueba automatizadas (311 métodos de prueba), desglosadas por tipo a continuación.

Tipo de prueba Clases Métodos
Functional 83 107
Kernel 34 196
FunctionalJavascript 6 6
Unit 1 2
Total 124 311

Superficie de arquitectura

Lo que contiene el módulo, contado en todo Domain y sus módulos: los bloques de Drupal (servicios, plugins, hooks, rutas, entidades) que componen su API pública e interna.

Elemento Cantidad
Servicios 61
Suscriptores de eventos 0
Implementaciones de hook 56
Rutas 19
Permisos 24
Formularios 9
Controladores 5
Tipos de entidad de contenido 0
Tipos de entidad de configuración 2
Tipos de esquema de configuración 40
Plugins 49

Los plugins se desglosan por tipo así, de mayor a menor:

Metodología

Los recuentos se producen con cloc, ejecutado desde la raíz del proyecto sobre los archivos que informa git ls-files, de modo que una copia de trabajo que haya instalado vendor/, previsualizado la documentación en site/ o descargado un node_modules/ cuenta igual que el archivo que publica una versión. El andamiaje de previsualización de Tugboat en .tugboat/ queda excluido, al igual que esta página y sus traducciones, porque una página que se cuenta a sí misma cambia el árbol que acaba de medir. La instantánea de arriba indica la versión de cloc, porque cloc cuenta de forma distinta de una versión a otra.

git ls-files | grep -v -e '^docs/metrics' -e '^\.tugboat/' > files.txt
cloc --list-file=files.txt

Cada archivo se atribuye al módulo contenedor más cercano (un directorio con un *.info.yml); los módulos de soporte de pruebas bajo una ruta tests/ cuentan como código de prueba de su módulo padre. Un archivo es código de prueba cuando su ruta contiene un segmento tests/, y de producción en caso contrario. Los archivos fuera de todo módulo, como el README, esta documentación y la configuración de la integración continua y de las herramientas, se agrupan bajo la raíz del proyecto.

Las clases de prueba se cuentan por su directorio bajo tests/src (Unit, Kernel, Functional, FunctionalJavascript); la columna de métodos cuenta cada método con prefijo test, y cada otro anotado @test o #[Test]. La superficie de arquitectura cuenta las definiciones de servicio en *.services.yml (sin contar los alias), las claves de ruta y permiso en *.routing.yml y *.permissions.yml, los atributos #[Hook], las clases de plugin bajo src/Plugin/, los formularios y controladores bajo src/Form y src/Controller, los atributos de tipo de entidad en src/Entity, y los tipos de nivel superior en config/schema/*.yml, todo agregado en el módulo y sus submódulos.

Los gráficos son SVG estáticos en línea generados a partir de los datos medidos, por lo que no necesitan JavaScript ni ningún complemento de gráficos. Son decorativos y están marcados con aria-hidden: cada cifra que dibujan aparece también en la tabla o la frase que los acompaña, de modo que un lector de pantalla obtiene los números en lugar de una imagen sin nombre. Un rol img sin nombre accesible es peor que no tener rol, porque también oculta las etiquetas del gráfico.