La calidad del código es medible. Esta afirmación parece obvia hasta que intentas responder a la pregunta que un CTO se hace antes de adquirir un producto de software, o que un líder técnico se hace antes de comprometerse con un programa de refactorización: ¿cómo sabes que el código es bueno? "Funciona" no es una respuesta. "El equipo lo revisó" tampoco lo es. La respuesta requiere mediciones objetivas aplicadas de forma consistente: complejidad ciclomática por función, índice de mantenibilidad por módulo, densidad de defectos por cada mil líneas, cobertura de pruebas por componente, cambios de código por archivo por sprint. Cada uno de estos indicadores es un número. Los números se pueden analizar, comparar y utilizar para tomar medidas.
La comprensión del código comienza aquí.
SMART TS XL Calcula métricas de calidad en todos los idiomas y plataformas de su entorno.
Haga clic aquíEl desafío radica en que las métricas de calidad del código no son intercambiables ni universalmente interpretables. Un índice de mantenibilidad alto en un programa COBOL tiene un significado distinto al mismo valor en un script de Python. Una complejidad ciclomática de 15 es aceptable en una máquina de estados bien probada y un problema grave en una función de validación. Una densidad de defectos de 2 errores por KLOC es excelente en la programación de sistemas y alarmante en una aplicación embebida crítica para la seguridad. Para que las métricas sean útiles, es necesario comprender qué mide cada una, qué factores la elevan o la disminuyen, y qué umbrales son apropiados para cada contexto. El resto de este artículo ofrece precisamente eso.
¿Qué es la calidad del código?
La calidad del código es el grado en que el código fuente cumple con un conjunto de propiedades medibles que lo hacen correcto, mantenible, legible, eficiente, seguro y comprobable. Ninguna propiedad define la calidad de forma aislada. El código que se ejecuta correctamente pero es ilegible se degrada con cada cambio, porque los desarrolladores que no lo entienden no pueden modificarlo de forma segura. El código que es legible pero no se ha probado contiene defectos ocultos. El código que se ha probado pero es estructuralmente complejo acumula más defectos a medida que crece, porque la complejidad multiplica la probabilidad de que cualquier cambio provoque un fallo inesperado.
La definición formal de la norma ISO/IEC 25010 identifica ocho características de calidad del software: idoneidad funcional, eficiencia de rendimiento, compatibilidad, usabilidad, fiabilidad, seguridad, mantenibilidad y portabilidad. En el caso específico del código fuente, las características que se pueden medir directamente a partir del propio código, en lugar de su comportamiento en tiempo de ejecución, son la mantenibilidad, la fiabilidad (aproximada mediante métricas de defectos y complejidad), la seguridad (mediante análisis estático) y la idoneidad funcional (mediante cobertura de pruebas). Las demás características requieren la ejecución del código para su medición. Por lo tanto, las métricas de calidad del código abarcan un subconjunto definido e importante de la calidad del software, no su totalidad.
Por qué es importante la calidad del código
Los equipos técnicos saben por qué la calidad del código es importante. Para los responsables de negocio y los equipos que necesitan justificar su importancia internamente, la conexión radica en el coste y el tiempo. Estudios realizados por McKinsey y el Consorcio para la Calidad del Software de TI (CISQ) demuestran sistemáticamente que los desarrolladores dedican entre el 30 y el 40 % de su tiempo a solucionar la deuda técnica existente en lugar de desarrollar nuevas funcionalidades. La mala calidad del código es el mecanismo por el cual se acumula la deuda técnica: cada defecto que no se detecta a tiempo, cada función más compleja de lo necesario, cada bloque de lógica duplicado que debe mantenerse por separado, aumenta el coste del siguiente cambio. Una alta calidad del código reduce ese coste de forma continua, acumulándose a lo largo de la vida útil del sistema.
Métricas de calidad del código: Guía de referencia completa
Las métricas que se presentan a continuación abarcan todas las categorías principales de medición de la calidad del código. Para cada métrica, se explican la definición, el método de medición, el rango aceptable y su interpretación. Los umbrales de la tabla inferior reflejan los estándares de referencia más utilizados en la industria; los equipos que trabajan en entornos críticos para la seguridad o regulados deben aplicar umbrales más estrictos.
Métricas de complejidad
Complejidad ciclomática mide el número de caminos linealmente independientes a través de una función o método. Fue introducido por Thomas McCabe en 1976 y sigue siendo la métrica de complejidad más utilizada. La fórmula cuenta los puntos de decisión, if, else if, switch casos, condiciones de bucle, catch bloques y operadores condicionales, y suma 1. Una función sin ramificaciones tiene una complejidad ciclomática de 1.
| Complejidad ciclomática | Interpretación |
|---|---|
| 1-5 | Sencillo, fácil de probar |
| 6-10 | Moderado, manejable |
| 11-20 | Complejo, las pruebas se vuelven difíciles |
| 21-50 | Riesgo muy alto, se recomienda la refactorización. |
| 50+ | Imposible de probar, casi con seguridad contiene defectos. |
La alta complejidad ciclomática está fuertemente correlacionada con la densidad de defectos. Una investigación publicada en IEEE Transactions on Software Engineering encontró que las funciones con complejidad ciclomática superior a 10 tienen tasas de defectos significativamente más altas que las funciones más simples. Para análisis de complejidad ciclomática En los sistemas de código heredados, la preocupación radica en encontrar funciones que han acumulado lógica de decisión a lo largo de años de mantenimiento sin que nadie haya refactorizado la estructura general.
Complejidad de NPath Cuenta el número de rutas de ejecución únicas a través de una función, incluyendo las creadas por condiciones anidadas y bucles. Mientras que la complejidad ciclomática cuenta las ramificaciones linealmente, la complejidad NPath las multiplica: una función con tres bloques if-else secuenciales tiene una complejidad ciclomática de 4, pero una complejidad NPath de 8, porque cada condición puede ser verdadera o falsa de forma independiente. La complejidad NPath crece exponencialmente con el anidamiento. Un valor superior a 200 indica una función que requeriría más casos de prueba de los que cualquier equipo puede escribir de forma realista.
Complejidad cognitiva fue introducido por SonarSource y mide la dificultad de entender el código en lugar de la cantidad de rutas que contiene. Penaliza el anidamiento más severamente que la ramificación lineal: un if dentro de una while dentro de otro if puntuaciones superiores a tres consecutivas if Declaraciones con la misma complejidad ciclomática. La complejidad cognitiva se ajusta mejor a la dificultad real que experimentan los desarrolladores al leer código. Una complejidad cognitiva superior a 15 por método generalmente se señala para su revisión; por encima de 25, indica una función que a la mayoría de los desarrolladores les resultará realmente difícil de comprender.
Métricas de Halstead Halstead deriva una familia de medidas a partir de cuatro recuentos en el código fuente: operadores distintos (n1), operandos distintos (n2), operadores totales (N1) y operandos totales (N2). A partir de estos, Halstead calcula:
- Volumen (N × log2(n)): el tamaño de la implementación en contenido de información
- Dificultad (n1/2 × N2/n2): una estimación de la dificultad para escribir o comprender el código.
- Esfuerzo (Volumen × Dificultad): el esfuerzo mental total estimado para implementar o comprender el código.
Las métricas de Halstead son particularmente útiles para comparar funciones de complejidad ciclomática similar y determinar cuál es más difícil de entender. Una función con 10 ramificaciones sobre variables claramente identificadas tiene una menor dificultad de Halstead que una con 10 ramificaciones sobre índices calculados e identificadores de un solo carácter.
Métricas de mantenibilidad
Índice de mantenibilidad Es una métrica compuesta desarrollada originalmente por Paul Oman y Jack Hagemeister y posteriormente adoptada por Microsoft Visual Studio como su medida estándar de mantenibilidad. Combina el volumen de Halstead, la complejidad ciclomática y las líneas de código en una única puntuación.
La fórmula de Visual Studio produce una puntuación de 0 a 100:
| Índice de mantenibilidad | Valoración |
|---|---|
| 20-100 | Mantenible (verde) |
| 10-19 | Preocupación moderada por el mantenimiento (amarillo) |
| 0-9 | Difícil de mantener (rojo) |
El índice de mantenibilidad es una estadística descriptiva. Es más útil para identificar valores atípicos, archivos o módulos que obtienen una puntuación en la zona roja, en lugar de para una comparación detallada entre módulos en la zona verde. En Python, el radon La biblioteca calcula directamente el índice de mantenibilidad. En Visual Studio, aparece en la ventana Métricas de código. Para análisis de código estático En las plataformas, el índice de mantenibilidad suele ser uno de los resultados estándar junto con la complejidad ciclomática y las líneas de código.
Líneas de código (LOC) y KLOC Mide el tamaño del código fuente en líneas o miles de líneas. Las líneas de código (LOC) por sí solas no dicen nada sobre la calidad, pero proporcionan denominadores esenciales para otras métricas: la densidad de defectos son errores por KLOC, la densidad de comentarios son comentarios por LOC, y la densidad de pruebas son aserciones de prueba por LOC. Las LOC también escalan el costo de la complejidad: una función de 500 líneas con una complejidad ciclomática de 20 es un problema mucho mayor que una función de 50 líneas con la misma puntuación.
Rotación de código es la tasa a la que cambia el código con el tiempo, medida como líneas añadidas más líneas eliminadas más líneas modificadas por archivo por unidad de tiempo. Una alta tasa de cambios en el código indica inestabilidad: el código que cambia con frecuencia puede estar respondiendo a un diseño que no era correcto desde el principio, a requisitos que no eran estables o a errores que requieren parches constantemente. Un estudio de Microsoft descubrió que los archivos en el 10 % superior de tasa de cambios contenían cinco veces más defectos que los archivos con baja tasa de cambios. El seguimiento de la tasa de cambios en el código junto con las tasas de defectos revela si los cambios frecuentes están mejorando la calidad o generando nuevos problemas.
Métricas de cobertura de código
Cobertura de prueba unitaria Es el porcentaje de líneas, ramas o condiciones en el código fuente que se ejecutan mediante pruebas unitarias. La forma más significativa es la cobertura de ramas: si cada decisión en el código puede ser alcanzada por al menos una prueba tanto en el resultado verdadero como en el falso. La cobertura de líneas es más fácil de manipular; una prueba que ejecuta cada línea sin realizar ninguna aserción logra una cobertura de líneas del 100 % y no detecta ningún error.
Estándares de la industria para la cobertura de pruebas unitarias:
- Por debajo del 50%: inadecuado, la mayoría de los defectos no serán detectados por las pruebas.
- 50-75%: moderado, se cubren las principales rutas, es probable que se pasen por alto los casos límite.
- 75-90%: bueno para la mayoría del código de aplicación.
- Por encima del 90%: apropiado para sistemas críticos de seguridad o de alta fiabilidad.
Cobertura de código en aplicaciones críticas para la seguridad Sigue estándares más estrictos. DO-178C para software de aviación e IEC 61508 para seguridad funcional especifican requisitos de cobertura (cobertura MC/DC para los niveles de criticidad más altos) que van más allá de lo que se logra con las pruebas unitarias estándar. Mejorar la calidad del código en aplicaciones críticas para la seguridad requiere herramientas de cobertura que registren la cobertura de condiciones/decisiones y que puedan generar la evidencia formal requerida por las autoridades de certificación.
Densidad de prueba Complementa la cobertura midiendo la cantidad de aserciones de prueba en relación con el tamaño del código de producción. Una cobertura alta con una densidad de pruebas baja puede indicar que las pruebas ejecutan código sin verificar su comportamiento de manera significativa. Una densidad de pruebas alta con una cobertura baja indica que las pruebas se concentran en una pequeña parte del código base.
Métricas de defectos
Densidad de insectos La densidad de defectos (también conocida como DL) es el número de defectos confirmados por cada mil líneas de código (KLOC). Es la medida cuantitativa más directa de la corrección del código. Los estándares de la industria, según CISQ, indican que el software comercial estándar presenta un promedio de entre 15 y 50 defectos por KLOC antes de las pruebas; tras las pruebas y el lanzamiento, el software comercial de alta calidad suele tener menos de un defecto por KLOC.
Resultados del análisis estático densidad aproximada de defectos antes de que los defectos se confirmen mediante pruebas o uso en producción. Herramientas como SonarQube, Checkmarx y SMART TS XL Analizar el código fuente en busca de patrones asociados con clases de defectos y vulnerabilidades conocidas, generando un recuento de posibles problemas categorizados por gravedad. La proporción de hallazgos críticos y bloqueantes con respecto a las líneas de código proporciona una señal temprana de la calidad del código antes de que este llegue a la fase de pruebas.
Densidad de olor del código Contabiliza la presencia de antipatrones, código duplicado, funciones excesivamente largas, acoplamiento excesivo de clases, sobrecarga de funcionalidades y objetos omnipotentes por KLOC. Los malos olores de código no provocan fallos inmediatos, pero predicen defectos futuros y costes de mantenimiento. Un código con alta densidad de malos olores es aquel en el que el coste de cada cambio futuro se eleva, ya que cada cambio debe sortear los problemas estructurales acumulados.
Métricas de legibilidad y estilo
Densidad de comentarios es la relación entre las líneas de comentarios y las líneas de código. Los rangos óptimos varían según el lenguaje y las convenciones del equipo, pero generalmente se encuentran entre el 10 y el 30 %. Por debajo del 10 % puede indicar un código insuficientemente documentado; por encima del 50 % puede indicar un código tan complejo que requiere una explicación extensa de la lógica no obvia. La calidad de los comentarios importa más que la cantidad: un comentario que reformula lo que hace el código (// increment i by 1) no aporta nada, mientras que un comentario que explique por qué se eligió un algoritmo específico añade un valor significativo.
Cumplimiento de la convención de nomenclatura Mide el porcentaje de identificadores (variables, funciones, clases) que cumplen con las convenciones de nomenclatura del proyecto. Las herramientas automatizadas pueden aplicar estas convenciones como parte de la configuración de análisis estático de código. La nomenclatura consistente es una de las mejoras de legibilidad más efectivas, ya que permite a los desarrolladores predecir la finalidad de un identificador solo con su nombre, lo que reduce la carga cognitiva al leer código desconocido.
Tasa de duplicación de código Mide el porcentaje del código fuente duplicado en varias ubicaciones. Generalmente, se detectan duplicaciones superiores al 5 %. El código duplicado incrementa el esfuerzo de mantenimiento: un error en la lógica duplicada debe encontrarse y corregirse en cada copia, y los cambios de comportamiento deben aplicarse de forma consistente en todas ellas. La duplicación también oculta el tamaño real del código fuente: un sistema que parece tener 100 000 líneas puede contener 40 000 líneas de lógica única y 60 000 líneas de copias.
Métricas de seguridad y deuda técnica
Índice de deuda técnica SonarQube define la deuda técnica como la relación entre el costo estimado de remediación y el costo estimado de desarrollo del código fuente. Un índice de deuda técnica inferior al 5 % se considera un código fuente limpio; uno superior al 20 % indica una deuda acumulada significativa que ralentizará considerablemente el desarrollo futuro.
Densidad de puntos de acceso de seguridad Contabiliza el número de puntos críticos de seguridad, patrones de código que requieren revisión de seguridad (no vulnerabilidades confirmadas), por KLOC. Algunos ejemplos son las consultas SQL sin parámetros, el uso de funciones criptográficas obsoletas y el manejo de entradas no validadas. Las herramientas de análisis estático identifican estos patrones y los presentan como elementos que requieren una revisión de seguridad manual.
Densidad de vulnerabilidad Este indicador cuantifica las vulnerabilidades de seguridad confirmadas por KLOC, generalmente categorizadas según su gravedad CVSS. Resulta especialmente útil en el contexto de auditorías de seguridad posteriores al lanzamiento o en sistemas de monitorización continua de la seguridad.
Cómo medir la calidad del código: un enfoque práctico
Medir la calidad del código no es una acción aislada, sino una práctica continua integrada en el flujo de trabajo de desarrollo. Un enfoque pragmático de cuatro fases funciona bien para equipos que parten de una base de código sin medir.
Fase 1: Establecer una línea de base. Antes de realizar cualquier cambio, ejecute un análisis estático completo del código fuente. Registre los valores actuales de la distribución de complejidad ciclomática, el índice de mantenibilidad por archivo, la densidad de defectos, la cobertura y la tasa de duplicación. Esta línea base sirve como punto de partida para todas las mediciones futuras. Sin una línea base, no se puede determinar si los cambios mejoran o empeoran la calidad.
Fase 2: Definir umbrales. Establezca umbrales aceptables para cada métrica, según el contexto. Una aplicación web comercial y un dispositivo médico crítico para la seguridad requieren umbrales diferentes. Documente estos umbrales en los estándares de calidad del proyecto y hágalos visibles para todo el equipo.
Fase 3: Integración en CI/CD. Configura la canalización de CI para que calcule las métricas clave en cada confirmación o solicitud de extracción. Marca los cambios que hagan que una métrica se salga de su rango aceptable. Bloquea las fusiones que introduzcan código nuevo con una complejidad ciclomática superior al umbral, que reduzcan la cobertura por debajo del umbral o que introduzcan hallazgos críticos en el análisis estático. Esto convierte los umbrales de las métricas de recomendaciones en estándares obligatorios.
Fase 4: Analizar las tendencias, no las instantáneas. Una sola lectura de métrica es informativa; una tendencia permite tomar medidas. Un aumento en la rotación de código en un módulo específico, una disminución en la cobertura a lo largo del ciclo de lanzamiento o una disminución en el índice de mantenibilidad de un archivo específico son señales de problemas que una medición puntual podría pasar por alto. Revise las tendencias de las métricas en cada retrospectiva de sprint.
Métricas de calidad del código en contextos empresariales, ágiles y de seguridad crítica
Métricas de calidad del código en el desarrollo ágil
Los equipos ágiles se enfrentan a un desafío específico con las métricas de calidad del código: el énfasis en entregar software funcional en ciclos cortos puede generar presión para lanzar el producto antes de que se resuelvan los problemas de calidad. La solución no consiste en abandonar las métricas, sino en incluirlas en la definición de "terminado". Una historia no está completa cuando la funcionalidad funciona; está completa cuando la funcionalidad funciona y el nuevo código cumple con los umbrales de calidad del equipo.
En contextos ágiles, los indicadores principales, métricas que predicen problemas futuros antes de que se manifiesten, incluyen la tasa de rotación de código, la deuda técnica nueva introducida por sprint y la tendencia en el recuento de hallazgos de análisis estático por lanzamiento. Los indicadores rezagados, métricas que miden los resultados ya producidos, incluyen la densidad de defectos encontrados en las pruebas, el tiempo dedicado al mantenimiento en comparación con el tiempo dedicado a nuevas funcionalidades y la tasa de incidentes de producción por lanzamiento.
Calidad del código para la debida diligencia técnica
La debida diligencia técnica en transacciones de fusiones y adquisiciones, selección de proveedores y procesos de adquisición de sistemas requiere una evaluación estructurada de la calidad del código en toda la base de código. Las métricas más importantes en este contexto son:
- Distribución del índice de mantenibilidad¿Qué porcentaje del código fuente se encuentra en las zonas roja, amarilla y verde?
- índice de deuda técnica¿Cuál es el costo estimado de remediación en relación con el costo de desarrollo?
- Densidad de defectos¿Cuántos defectos conocidos existen por KLOC y cómo se compara esto con los estándares de la industria?
- Cobertura de prueba¿Qué porcentaje del código fuente está cubierto por pruebas automatizadas y a qué nivel (línea, rama, condición)?
- Salud dependiente: cuántas dependencias externas existen, cuántas están desactualizadas o abandonadas y cuán profundamente acoplada está la arquitectura.
- Duplicación de código: qué fracción del código fuente está duplicada, lo que indica riesgo de mantenimiento
Tal como se examina en el contexto de Análisis de impacto para la evaluación del código empresarialPara realizar una debida diligencia precisa, es fundamental comprender no solo la puntuación de cada componente en las métricas de calidad, sino también cómo dependen los componentes entre sí: un módulo de baja calidad que esté aislado puede representar un coste de remediación manejable, mientras que el mismo módulo en el centro de un gráfico de dependencias denso representa un riesgo mucho mayor.
Calidad del código en aplicaciones críticas para la seguridad y de tecnología financiera (Fintech)
Las aplicaciones críticas para la seguridad en aviación, automoción, dispositivos médicos y control industrial requieren estándares de calidad de código que van más allá del software comercial típico. Diferencias clave:
- Los límites de complejidad ciclomática suelen fijarse en 10 o menos, y las excepciones requieren una justificación formal.
- Los requisitos de cobertura utilizan MC/DC (Cobertura de Condición/Decisión Modificada) en lugar de cobertura de línea o ramal.
- El análisis estático debe realizarse con herramientas certificadas y las infracciones deben documentarse y resolverse o aceptarse formalmente.
- La modificación del código se supervisa como un indicador de seguridad: las altas tasas de cambio en los módulos críticos para la seguridad desencadenan una revisión y revalidación adicionales.
Las aplicaciones fintech se enfrentan a presiones similares por parte de los marcos regulatorios. PCI DSS exige estándares de codificación seguros y procesos de revisión de código. El cumplimiento de SOX para los sistemas de información financiera requiere la trazabilidad documentada desde los requisitos hasta las pruebas, pasando por el código. Las métricas de calidad del código proporcionan evidencia objetiva de que estos procesos funcionan: los informes de cobertura demuestran que existen pruebas, los informes de análisis estático demuestran que se verificaron los patrones de vulnerabilidad conocidos y los informes de complejidad demuestran que los revisores pudieron evaluar el código de manera razonable.
Métricas de calidad del código por idioma
Métricas de calidad del código Python se puede calcular usando radon (índice de complejidad ciclomática y mantenibilidad), pylint (malos olores en el código y violaciones de estilo), coverage.py (cobertura de pruebas), bandit (cuestiones de seguridad) y mypy or pyright (corrección de tipos). El índice de mantenibilidad en radon Utiliza una fórmula de Halstead modificada y calibrada para Python. La calificación A es superior a 20, la calificación B es de 10 a 20 y la calificación C es inferior a 10.
Calidad del código RPG En IBM i se requieren herramientas especializadas porque las herramientas estándar de medición de calidad no analizan la sintaxis RPG. SMART TS XL Proporciona análisis de complejidad ciclomática, líneas de código y dependencias para programas RPG, lo cual es particularmente valioso para entornos IBM i que gestionan grandes bases de código heredadas donde la medición de la calidad anteriormente era imposible de automatizar.
Métricas de revisión de código
La revisión del código es una actividad de control de calidad cuya eficacia puede medirse:
- Cobertura de revisión: porcentaje de código confirmado que pasó por una revisión formal antes de la fusión
- Defectos encontrados según la revisión: el número de defectos detectados durante la revisión en relación con el tamaño del conjunto de cambios revisado
- Tiempo de respuesta de la revisión: el tiempo que transcurre desde que se abre una solicitud de extracción hasta que se revisa y se fusiona.
- Tasa de resolución de comentarios de la revisión: el porcentaje de comentarios de revisión que resultan en un cambio de código en comparación con los que son descartados
Los equipos de alto rendimiento suelen tener una cobertura de revisión superior al 90 %, un promedio de entre 1 y 3 defectos por cada cien líneas revisadas y tiempos de respuesta cortos. Las métricas de revisión ayudan a determinar si la revisión de código funciona como un control de calidad o como un mero trámite.
Monitoreo continuo de la calidad del código
La medición puntual de la calidad del código es mucho menos valiosa que el monitoreo continuo. La calidad del código no es una propiedad fija de una base de código; cambia con cada confirmación. Una base de código que hoy presenta buenos resultados puede deteriorarse significativamente en tres sprints de desarrollo apresurado si no se realiza un seguimiento continuo de las métricas de calidad.
La monitorización continua y eficaz de la calidad del código incluye:
- Cálculo de métricas por confirmación: complejidad ciclomática y resultados del análisis estático calculados en cada empuje
- Paneles de tendencias: representaciones visuales de las métricas clave a lo largo del tiempo, actualizadas diariamente o por cada lanzamiento.
- Controles de calidad en CI/CD: aplicación automatizada de umbrales mínimos para métricas que afectan la mantenibilidad, la seguridad y el riesgo de defectos.
- Detección de regresión: alerta cuando una métrica se desvía significativamente en la dirección equivocada entre versiones.
Los principales indicadores para la mejora de la calidad del código, las señales que predicen si la calidad será mejor o peor en la próxima versión, son la tendencia de la cobertura, la nueva complejidad introducida por sprint y la proporción de errores de código resueltos con respecto a los errores introducidos. Cuando estos indicadores evolucionan en la dirección correcta, la calidad mejora. Cuando no lo hacen, el deterioro es predecible antes de que se produzca por completo.
Cómo SMART TS XL Mide y mejora la calidad del código.
SMART TS XL calcula el conjunto completo de métricas de calidad de código descritas en este artículo en todos los lenguajes y plataformas del entorno de desarrollo: COBOL, JCL, Java, .NET, Python, JavaScript, TypeScript, RPG, SQL y otros. Mientras que la mayoría de las herramientas de calidad operan en un solo lenguaje a la vez, SMART TS XL Crea un modelo de calidad unificado para todo el sistema, lo que permite comparar la calidad entre diferentes lenguajes, realizar un seguimiento de las métricas a nivel de sistema en lugar de a nivel de archivo, e identificar problemas de calidad entre componentes que las herramientas de un solo lenguaje no pueden detectar.
Para las organizaciones empresariales con grandes bases de código en varios idiomas, la análisis de código estático capacidad de SMART TS XL Proporciona la medición de referencia que requieren la debida diligencia técnica, la planificación de la modernización de sistemas heredados y la mejora continua de la calidad. mapeo de dependencia Esta capacidad amplía la evaluación de la calidad a aspectos estructurales: qué componentes son los más utilizados, qué cambios tienen el mayor impacto y qué áreas del código fuente representan el mayor riesgo de mantenimiento cuando se combinan las métricas de calidad con la centralidad de las dependencias.
SMART TS XLLas métricas de calidad de código se integran con las canalizaciones de DevOps a través de su API, lo que permite establecer controles de calidad en la capa de CI/CD. Cuando una confirmación introduce una función con una complejidad ciclomática superior al umbral, reduce la cobertura por debajo del mínimo configurado o introduce un hallazgo crítico en el análisis estático, la canalización puede provocar un fallo en la compilación con un diagnóstico específico que le indica al desarrollador exactamente qué se midió y por qué no se alcanzó el umbral. Esto traslada la aplicación de la calidad de las auditorías posteriores al lanzamiento a la retroalimentación durante el desarrollo, lo que reduce el coste de los problemas de calidad al detectarlos en el momento en que su solución es más económica.
La calidad del código es una disciplina de equipo, no un informe.
El valor de las métricas de calidad del código depende enteramente de cómo las utilicen los equipos. Un informe trimestral sobre la calidad del código que nadie implementa es peor que no tener ningún informe, ya que crea la ilusión de que se está gestionando la calidad mientras el código base se deteriora sin control. Las métricas se vuelven valiosas cuando impulsan acciones específicas: cuando un aumento repentino de la complejidad ciclomática en una nueva función desencadena una conversación sobre refactorización antes de que la función se fusione, cuando una disminución de la cobertura en un módulo desencadena un sprint de pruebas, cuando una creciente densidad de defectos en un componente específico desencadena una revisión formal del diseño de ese componente.
Construir esa cultura requiere visibilizar las métricas en el momento oportuno, durante el desarrollo, no después del lanzamiento, y vincularlas a compromisos concretos del equipo. Los equipos que revisan las tendencias de calidad de su código en cada retrospectiva de sprint, que incluyen umbrales de calidad en su definición de "terminado" y que tratan una regresión de métricas con la misma seriedad que una regresión de funcionalidad, construyen bases de código que cuestan menos mantener y generan menos incidentes de producción a lo largo del tiempo. La medición es el punto de partida. La disciplina es lo que produce el resultado.