Cumplimiento normativo
Advertencia |
---|
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.
Expandir | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||
|
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:
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
HTML |
---|
<img data-main-image="" style="opacity: 1;" sizes="(min-width: 600px) 600px, 100vw" decoding="async" loading="lazy" alt="" src="https://assets-eu-01.kc-usercontent.com:443/06782311-1caf-013c-e622-aa7e808aa21d/1a2d9e45-d149-47ab-afb5-3126091fc46a/DevOps%20Workflow_1.gif?w=600&h=100&auto=format&fit=crop" srcset="https://assets-eu-01.kc-usercontent.com:443/06782311-1caf-013c-e622-aa7e808aa21d/1a2d9e45-d149-47ab-afb5-3126091fc46a/DevOps%20Workflow_1.gif?w=550&h=275&auto=format&fit=crop 550w,https://assets-eu-01.kc-usercontent.com:443/06782311-1caf-013c-e622-aa7e808aa21d/1a2d9e45-d149-47ab-afb5-3126091fc46a/DevOps%20Workflow_1.gif?w=1100&h=550&auto=format&fit=crop 300w,https://assets-eu-01.kc-usercontent.com:443/06782311-1caf-013c-e622-aa7e808aa21d/1a2d9e45-d149-47ab-afb5-3126091fc46a/DevOps%20Workflow_1.gif?w=600&h=300&auto=format&fit=crop 600w"> |
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:
UI Expand | |||
---|---|---|---|
| |||
Enlace de interés: https://docs.sonarsource.com/sonarqube/9.9/analyzing-source-code/pull-request-analysis/
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:
Info | ||
---|---|---|
| ||
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. |
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.
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-plugin | 1.3.2 |
Info | ||
---|---|---|
| ||
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, | ||||||||
Métrica | Operador | Umbral | Métrica | Operador | Umbral | Métrica | Operador | Umbral | ||
---|---|---|---|---|---|---|---|---|---|---|
Nueva cobertura | es menor que | 65% | Nueva cobertura | es menor que | 25% | Nueva cobertura | es menor que | 15% | ||
Nuevas evidencias bloqueantes | es mayor que | 0 | Nuevas evidencias bloqueantes | es mayor que | 0 | Nuevas evidencias bloqueantes | es mayor que | 0 | ||
Nuevas evidencias críticas | es mayor que | 0 | Nuevas evidencias críticas | es mayor que | 0 | Nuevas evidencias críticas | es mayor que | 0 | ||
Nuevas evidencias mayores | es mayor que | 0 | Nuevas evidencias mayores | es mayor que | 0 | Nuevas evidencias mayores | es mayor que | 0 | ||
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 que | 3% | Ratio Deuda Técnica en código nuevo (%) | es mayor que | 3% | Ratio Deuda Técnica en código nuevo (%) | es mayor que | 5% | ||
Líneas Duplicadas en Código Nuevo (%) | es menor que | 5% | Líneas Duplicadas en Código Nuevo (%) | es menor que | 5% | Líneas Duplicadas en Código Nuevo (%) | es menor que | 10% | ||
Éxito de los tests unitarios (%) | es menor que | 100% | Éxito de los tests unitarios (%) | es menor que | 100% | Éxito de los tests unitarios (%) | es menor que | 100% | ||
Security Hotspots Reviewed (%) | es menor que | 100% | Security Hotspots Reviewed (%) | es menor que | 100% 100% |
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):
FAILED | Alguno 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. | |
PASSED | Todos los valores de las métricas superan los umbrales de calidad establecidos por la STIC. |
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 rechazo de la entrega como NO FAVORABLE, la OCA podrá adjuntar un informe en la SVE con las evidencias que deben ser subsanadas.
Info | ||
---|---|---|
| ||
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 (%) |
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és: https://www.sonarsource.com/solutions/our-unique-approach/
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