Estás viendo una versión antigua de esta página. Ve a la versión actual.

Comparar con el actual Ver el historial de la página

« Anterior Versión 9 Siguiente »

Subdirección de las Tecnologías de la Información y Comunicaciones

Área de Gobernanza y Calidad

Contenido


Verificación de la calidad del código fuente

Versión: v03r03
Estado: ACTIVO
Entrada en vigor desde:   
Obligado cumplimiento desde:   
Enlaces relacionados:  Verificación de la calidad del código fuente


Cumplimiento normativo

Las normas expuestas son de obligado cumplimiento. La STIC podrá atender casos excepcionales que serán gestionados a través de los responsables del proyecto correspondiente y autorizados por el Área de Gobernanza de la STIC. Asimismo, cualquier aspecto no recogido en estas normas deberá regirse en primera instancia por las guías técnicas correspondientes al esquema nacional de seguridad y esquema nacional de interoperabilidad, según corresponda, y en su defecto a los marcos normativos y de desarrollo software establecidos por la Junta de Andalucía, debiendo ser puesto de manifiesto ante la STIC.

La STIC se reserva el derecho a la modificación de la norma sin previo aviso, tras lo cual, notificará del cambio a los actores implicados para su adopción inmediata según la planificación de cada proyecto.

En el caso de que algún actor considere conveniente y/o necesario el incumplimiento de alguna de las normas y/o recomendaciones, deberá aportar previamente la correspondiente justificación fehaciente documentada de la solución alternativa propuesta, así como toda aquella documentación que le sea requerida por la STIC para proceder a su validación técnica.

Contacto Dpto: Oficina de Calidad


Histórico de cambios

Los cambios en la normativa vendrán acompañados de un registro de las modificaciones. De este modo se podrá realizar un seguimiento y consultar su evolución, ordenándose de más recientes a menos recientes.


VersiónPre-releasePublicación ReleaseEntrada en VigorRetiroAlcance
v03r01

  

 

-

Verificación de calidad del código fuente

  • Se actualiza la herramienta Sonarqube 7.9.4 a la versión 9.9 LTS
  • Se informa de las nuevas características de la plataforma y principales mejoras que incluye la herramienta.
  • Se incluye nueva métrica "Security Hotspots Reviewed"
  • Se actualizan los umbrales de calidad incluyendo la nueva métrica de Sonarqube 9.9
  • Se actualiza la tabla con los plugins instalados.
  • Se incluye apartado SonarLint
v02r01-10/03/202110/03/2021


Verificación de calidad del código fuente

  • Se eliminan las "Notas de interés".
  • Se actualiza el apartado "El perfil de Sonar".
  • Se añade información acerca de las características técnicas de la plataforma.
  • Se actualiza la tabla con los plugins instalados.
  • Se actualizan los umbrales de calidad. Se elimina el Quality Gate "Warning", ya que no está contemplado en el nuevo SonarQube.
v02r00-26/10/201801/01/2019 

01/03/2021  

  • Se actualizan todas las referencias al repositorio de código SVN incluyendo GIT como nuevo repositorio.
  • Dentro del entorno tecnológico se incluye un enlace para la descarga de una instancia de Sonarqube 6.7.2 parametrizada con los datos de la STIC
  • Características del fichero de configuración: se ha incluido una tabla con los códigos a incluir en la propiedad groupId. Esta tabla contiene una codificación de las diferentes suite de aplicaciones existentes en la CMS
  • Se ha incluido cual es objeto de las PLs de "Correctivo de datos" y "Carga de datos" y cual es el contenido de los scripts que se adjuntan
  • Verificación de calidad del código fuente: se indican cuales son la nuevas métricas Sonarqube a revisar, umbrales mínimo y de confianza y los criterios para la revisión de PLs en FARO
  • Calidad de test unitarios: para aquellos proyectos JAVA se incluye el plugin PITEST como parte de la ejecución en JENKINS con el objeto de medir la calidad de los test unitarios realizados.
  • Normativa CNO: será de obligatorio cumplimiento todas las reglas descritas en la herramienta CNO 
  • Ficha de Entrega en PLs: Se elimina la obligatoriedad de adjuntar la ficha de entrega en las PLs de FARO. Esta información es mantenida por el proveedor de desarrollo en GIT mediante el fichero readme.md

Introducción


SonarQube, herramienta utilizada por la STIC para medir la calidad del código fuente de los aplicativos, es una plataforma de código abierto destinada al análisis de la calidad del código fuente. El análisis estático del código es esencial para detectar posibles errores y problemas de calidad y seguridad en el código desde las etapas iniciales de un proyecto, lo que permite reducir costos de mantenimiento, aumentar la productividad y optimizar el rendimiento de las aplicaciones.

La herramienta analiza más de 30 lenguajes de programación diferentes y se integra en los procesos de CI y plataforma DevOps para garantizar que el código cumpla con estándares de alta calidad.

Por definición, SonarQube cubre siete aspectos clave de la calidad de código:

  • Arquitectura y diseño.
  • Comentarios.
  • Reglas de codificación.
  • Duplicación de código.
  • Complejidad.
  • Bugs potenciales.
  • Pruebas unitarias.

Además, la versión de SonarQube implantada, controla la deuda técnica, la mantenibilidad (rangos de A a E) y la seguridad (rangos de A a E).

Entre las principales bondades que tiene esta herramienta de análisis de código estático, se destaca la capacidad de identificar aspectos tales como: código duplicado, código muerto, estándares de codificación, complejidad ciclomática, comentarios, test unitarios y test de integración







Mejoras destacadas


SonarQube 9.9 LTS  incorpora nuevas características como puntos de acceso de seguridad, muchas reglas nuevas e idiomas compatibles. Entre las mejoras más destacadas en la versión 9.9 LTS con respecto a versiones anteriores se incluyen:


  • Procesos de ejecución mas rápidos un 35% .
  • Detección de movimientos de archivos en solicitudes de extracción. SonarQube ahora reconoce cuando los archivos se han movido como parte de una solicitud de extracción, evitando tratar los archivos renombrados como nuevos y enfocándose en el código realmente modificado.
  • Cifrado de los secretos de la plataforma DevOps. Los secretos como los tokens de acceso personal ahora pueden cifrarse, asegurándolos contra posibles incidentes de seguridad.
  • Soporte para Nuevas Versiones de Lenguajes de Programación. SonarQube 9.9 LTS agrega soporte para las versiones más recientes de los lenguajes de programación, garantizando que el análisis no falle con las nuevas funciones del lenguaje y que las reglas sigan siendo relevantes incluso en un contexto nuevo.
  • Detección de Proyectos Inactivos. En SonarQube 9.9 LTS, al eliminar proyectos de forma masiva en función de su fecha de análisis, se consideran todas las ramas y solicitudes de extracción, reduciendo el riesgo de eliminar proyectos activos por error.
  • Inclusión de análisis de "pull request". A partir de esta versión de Sonarqube descartan los conceptos de rama corta y rama larga que estábamos utilizando hasta ahora. En su lugar se utiliza el pull request/merge request como mecanismo de comparación de código. Nos va a permitir definir el incremento de código a analizar tanto a nivel de HU como a la hora de la comparación entre versiones.
    • Se ha automatizado tanto la generación del pullrequest, que se hace tras el "push" del código, como su validación en los proceso CI de la STIC. Esto significa que nada cambia en relación a la subida del código. La rama no se cerrará y el flujo seguirá siendo el habitual.

Enlace de interés: https://docs.sonarsource.com/sonarqube/9.9/analyzing-source-code/pull-request-analysis/


El perfil de Sonar

El perfil que se utiliza para el análisis es SonarWay, que es el que Sonarqube ofrece por defecto. No obstante, para el caso de php, se ha definido un perfil extra llamado phpDrupal, que hereda del perfil Drupal.

La lista de los lenguajes que se revisan queda como sigue:  


Características técnicas de la plataforma


Actualización de plugins

La información expuesta, tiene un objetivo meramente informativo de cara a poder replicarse en los entornos de las factorías.

Las actualizaciones que esta información pueda sufrir no conllevará procedimientos de comunicación o versionado normativo.

Ficheros disponibles para el proveedor

Con el objeto de facilitar la adopción interna tanto a proveedores de desarrollo como a personal de la STIC, y minimizar las desviaciones durante las revisiones de calidad realizadas por la OCA, se pone a disposición de los proveedores la  imagen Sonarqube 9.9.2 utilizada en el entorno STIC.

No obstante, ante cualquier diferencia que pueda surgir entre los datos ofrecidos por el mencionado archivo docker  y la herramienta SonarQube instalada en los servidores de la STIC, siempre se considerará como resultado válido y prevalecerá de cara a las revisiones de calidad realizada por la OCA los datos ofrecidos por el SonarQube desplegado en la STIC.


Plugins incluidos en el Sonar

Siguiendo el principio de mejora continua, la Oficina de Calidad hace una revisión constante tanto de los nuevos plugins que pudieran aparecer en el mercado, como de la actualización de los ya instalados, de cara a su mantenimiento.

El conjunto de plugins de los que hace uso la herramienta Sonarqube están informados en el Readme.md de la imagen alojada en el repositorio de la STIC y se detallan en las siguientes tablas: 


Plugins SonarQube instalados sobre la versión base LTS 9.9.0

Versión

bitegarden-sonarqube-overview-report

2.1

bitegarden-sonarqube-project-tag-plugin

1.2

backelite-sonar-swift-plugin

0.4.7-SNAPSHOT

checkstyle-sonar-plugin

8.37

mutation-analysis-plugin

1.5

sonar-findbugs-plugin

4.2.6

sonar-l10n-es-plugin

1.14

sonar-pmd-plugin

3.2.1
sonarqube-community-branch-plugin1.3.2



Umbrales de calidad


Evolución de umbrales de calidad a proyectos en curso

La Oficina de Calidad se reserva el derecho de adecuar los umbrales de calidad exigidos a lo largo de la vida del proyecto. La adopción de un umbral más exigente en cualquier proyecto se hará previo acuerdo de un roadmap entre las partes, Oficina de Calidad y Responsable del proyecto.

Las métricas de calidad indicadas en el apartado "Métricas sujetas a revisión por la OCA" serán aplicables a todos los proyectos en curso, tanto en fase de desarrollo como en fase de mantenimiento (ya sea correctivo o evolutivo).

Sin embargo sus umbrales se determinarán en función del estado en el que se encuentre el proyecto.

Es prioridad de la STIC mantener los niveles de deuda técnica contenidos, mediante la resolución de incidencias detectadas durante las revisiones estáticas de los aplicativos, por lo que tomando como punto de partida los umbrales de calidad indicados en la anterior normativa de Integración continua v02r00, se actualizan con los siguientes valores:


STIC_UMBRAL_NUEVOS_PROYECTOS_SAS_2020: Se define este umbral con los valores mínimos de cada métrica que el código fuente debe cumplir.

Aplicación: se asigna a los nuevos desarrollos y a aquellos proyectos en evolución que adaptan la metodología de trabajo agile.


STIC_UMBRAL_CONFIANZA_SAS_2020: Se define este umbral con los valores mínimos de cada métrica que el código fuente debe cumplir.

Aplicación: se asigna a todos aquellos proyectos en evolución.



STIC_UMBRAL_MINIMO_SAS_2020 : Se define este umbral con los valores mínimos de cada métrica que el código fuente debe cumplir.

Aplicación: proyectos que no están evolucionando,
están en fase de retiro, ó de mantenimiento sin evolutivos.

MétricaOperadorUmbral

Métrica

Operador

Umbral


MétricaOperadorUmbral
Nueva coberturaes menor que65%
Nueva coberturaes menor que25%
Nueva coberturaes menor que15%
Nuevas evidencias bloqueanteses mayor que0
Nuevas evidencias bloqueanteses mayor que0
Nuevas evidencias bloqueanteses mayor que0
Nuevas evidencias críticases mayor que0
Nuevas evidencias críticases mayor que0
Nuevas evidencias críticases mayor que0
Nuevas evidencias mayoreses mayor que0
Nuevas evidencias mayoreses mayor que0
Nuevas evidencias mayoreses mayor que0
Calificación de Mantenibilidad en Código Nuevo

es peor que

A
Calificación de Mantenibilidad en Código Nuevo

es peor que

B
Calificación de Mantenibilidad en Código Nuevo

es peor que

B
Calificación de Fiabilidad en Código Nuevo

es peor que

A
Calificación de Fiabilidad en Código Nuevo

es peor que

B
Calificación de Fiabilidad en Código Nuevo

es peor que

B
Calificación de Seguridad en Código Nuevo

es peor que

A
Calificación de Seguridad en Código Nuevo

es peor que

B
Calificación de Seguridad en Código Nuevo

es peor que

B
Ratio Deuda Técnica en código nuevo (%)es mayor que3%
Ratio Deuda Técnica en código nuevo (%)es mayor que3%
Ratio Deuda Técnica en código nuevo (%)es mayor que5%
Líneas Duplicadas en Código Nuevo (%)es menor que5%
Líneas Duplicadas en Código Nuevo (%)es menor que5%
Líneas Duplicadas en Código Nuevo (%)es menor que10%
Éxito de los tests unitarios (%)es menor que100%
Éxito de los tests unitarios (%)es menor que100%
Éxito de los tests unitarios (%)es menor que100%
Security Hotspots Reviewed (%)es menor que 100%
Security Hotspots Reviewed (%) es menor que100% 

  


En función del umbral establecido para cada proyecto, y de los valores obtenidos en cada métrica, Sonarqube marcará la ejecución con una etiqueta de calidad (Quality Gate):

FAILEDAlguno de los valores de las métricas no supera el umbral mínimo establecido por la STIC durante la ejecución de Sonarqube por lo que se etiqueta la ejecución como fallida.

PASSEDTodos los valores de las métricas superan los umbrales de calidad establecidos por la STIC.

Impacto de calidad estática durante el servicio de verificación (SVE) previo a la Petición de Lanzamiento (PL) 

Para el proceso de revisión de calidad que se ejecuta durante el Servicio de Verificación de Entregas en JIRA, se tendrá en cuenta lo siguiente:

  • En el caso de que el valor de la etiqueta Quality gate sea Failed, el resultado del proceso de revisión de la SVE será NO FAVORABLE.
  • En el caso de que el valor de la etiqueta Quality gate sea Passed, se continuará con el proceso normal de revisión del resto de los aspectos de la SVE.

En el caso de rechazo de la entrega como NO FAVORABLE, la OCA podrá adjuntar un informe en la SVE con las evidencias que deben ser subsanadas.



Métricas sujetas a revisión por la OCA


Reservas sobre métricas

La Oficina de Calidad se reserva el derecho de analizar otras métricas a nivel general del aplicativo con el objeto de poder ser exigida una mejora de calidad en futuras versiones del aplicativo, previo versionado y comunicación de la actualización normativa.

Las revisiones ponen el foco sobre los valores que ofrecen las métricas en el código nuevo que pertenece a la versión en curso, considerando código nuevo la diferencia del código entregado con respecto a la última entrega en producción, por lo que el periodo de fuga que se utiliza es sobre la anterior versión en la que se modifica alguno de los 3 primeros dígitos del versionado de la aplicación.

En nuevos desarrollos, en la primera entrega para el paso a producción, se revisará el cumplimiento de los umbrales de las métricas sobre el código completo.

Para ello se tomarán en consideración las siguientes métricas:


Métrica

Nueva cobertura
Nuevas evidencias bloqueantes
Nuevas evidencias críticas
Nuevas evidencias mayores
Calificación de Mantenibilidad en Código Nuevo
Calificación de Fiabilidad en Código Nuevo
Calificación de Seguridad en Código Nuevo
Ratio Deuda Técnica en código nuevo (%)
Líneas Duplicadas en Código Nuevo (%)
Éxito de los tests unitarios (%)
Security Hotspots Reviewed (%)

Clean as You Code 

Esta nueva versión de Sonarqube pretende que el desarrollador siga la metodología Clean as You Code (https://docs.sonarsource.com/sonarqube/9.9/user-guide/clean-as-you-code/

Se trata de un enfoque relacionado con la calidad de código, que establece unos estándares bastante exigentes, y proporciona las herramientas necesarias para que llegues a alcanzarlos.

La métrica que Sonarqube añade a las ya definidas en anteriores versiones es "Security Hotspots Reviewed" y la condición para que no cumpla con el umbral es que sea menor que 100%.

Enlace de interéshttps://www.sonarsource.com/solutions/our-unique-approach/ 



SonarLint


SonarLint es un plugin para el entorno de desarrollo, ofrecido por Sonar. Está disponible para IntelliJ, Visual Studio, VS Code y Eclipse, y se pueden instalar directamente desde el marketplace de plugin del IDE.

La Oficina de Calidad recomienda su uso ya que permite a los desarrolladores identificar y corregir problemas de calidad y seguridad en tiempo real, durante el proceso de desarrollo, asegurando que el código cumpla con los estándares establecidos desde las primeras fases del desarrollo.

Carácterísticas de SonarLint:

  • Detección Temprana de Errores:

    • Identificación de errores y problemas de calidad en el código a medida que se escribe, facilitando correcciones inmediatas.

  • Integración con Sonarqube:

    • Sincronización con Sonarqube para utilizar las mismas reglas y configuraciones de calidad, asegurando consistencia en el análisis.

  • Soporte para Múltiples Lenguajes:

    • Análisis de código para una amplia gama de lenguajes de programación soportados.

  • Análisis Instantáneo y Sugerencias de Corrección:

    • Proporciona sugerencias de corrección y análisis instantáneo directamente dentro del IDE.

Enlaces de interés



  • Sin etiquetas