Todos quisiéramos producir código seguro, mantenible y libre de bugs. Pero esto puede ser difícil de lograr, pues sin darnos cuenta se nos puede escapar una mala práctica porque no verificamos correctamente el input de algún usuario y esto puede ocasionar una vulnerabilidad en nuestra aplicación.
Por esto mismo, podemos aplicar SAST -Static Application Security Testing- o pruebas estáticas de seguridad de aplicaciones. Esto es una práctica que se enfoca en analizar el código fuente de las aplicaciones y no en la ejecución real del código (análisis dinámico).
Al analizar nuestro código contra una serie de reglas predefinidas y buenas prácticas conocidas, podremos lograr una detección temprana de problemas de desarrollo. Todo, antes de mandarlo a un ambiente de pruebas, staging o a producción donde se pueda garantizar que lleguen menos problemas a las etapas posteriores del proceso de desarrollo y el código tenga una mejor calidad.
SonarCloud es un servicio de análisis estático de código basado en la nube y que lo ofrece la empresa responsable de SonarQube, uno de los servicios on-premise más conocidos y utilizados para realizar SAST, diseñado para detectar problemas de calidad de código en 25 lenguajes de programación diferentes.
Además de medir la seguridad de nuestras aplicaciones, nos ayuda a mejorar la mantenibilidad y confiabilidad de nuestro código. SonarCloud se integra con los siguientes servicios que manejan repositorios con base en git:
Esta herramienta ejecuta análisis del código de los Pull Request/Merge Request que efectuemos de nuestras ramas hacia la rama master/main o las ramas que definamos como importantes. Después de hacer su análisis, SonarCloud puede dejar un mensaje indicando si encontró algún problema en el código o si no cumple con algún estándar de calidad previamente definido para evitar que se haga merge con la rama objetiva.
SonarCloud mide diferentes aspectos del código que van desde buenas prácticas hasta vulnerabilidades de seguridad. Puedes consultar el conjunto completo de definiciones de SonarCloud en la documentación oficial, pero las principales que se muestran en el panel de control de SonarCloud son:
Quality Gate es el indicador de que el código cumpla con un conjunto de requisitos de calidad y seguridad (determinados por nosotros) y puede realizarse merge. Esto lo hace determinando los valores de las distintas métricas descritas previamente.
Ejemplo de cómo la interfaz web de SonarCloud muestra que un Quality Gate falló.
Ejemplo de cómo SonarCloud muestra que un Quality Gate pasó dentro de un PR en GitHub.
SonarCloud lo describe como:
Una Quality Gate es un conjunto de condiciones booleanas basadas en métricas. Le ayuda a saber inmediatamente si su proyecto está listo para producción. Si su estado actual no es
Aprobado
, verá qué medidas causaron el problema y los valores necesarios para aprobar.
Cuando configuras un nuevo repositorio en SonarCloud el primer análisis que ejecuta y los resultados de este análisis se catalogan como el estado del “Código General”. Este se utiliza para conocer el estado actual de la calidad de todo el código del repositorio, pero no afecta a los Quality Gates ni puede bloquear el lanzamiento de nuevas funcionalidades hasta que se resuelvan todos los hallazgos.
Después de este primer análisis, SonarCloud escaneará el código agregado en cada nuevo PR y los resultados de estos escaneos se emplearán para calcular si se pasó o no el Quality Gate y ese PR se puede fusionar y eventualmente implementar.
Así es como se ven las pestañas Código general y Código nuevo:
Pestaña Código general que muestra el estado actual y todos los hallazgos de este repositorio.
Nueva pestaña Código que muestra solo los resultados del último PR fusionado de este repositorio.
Como ves, en cada pestaña las métricas tienen valores diferentes. Por ejemplo, Quality Gate está fallando porque la métrica de cobertura de tests no se cumple para las nuevas líneas de código agregadas, aunque la cobertura de prueba de código general está por encima de la métrica.
Ahora que ya entiendes los principales conceptos de SonarCloud que podemos conectarlo con nuestros repositorios y empezar a probarlo.
Nota: este servicio es gratuito solo para repositorios públicos, si deseas usarlo en un repositorio privado debes adquirir uno de sus planes.
See Full Analysis
(ver análisis completo), desde allí puede ver cada uno de los hallazgosEn este caso, el marco como un code smell dice que la complejidad cognitiva de una función es muy alta y puede dificultar que otro desarrollador lo entienda fácilmente.
A su vez, existe una funcionalidad que es fácil de ignorar, pero es realmente importante. Hay opciones para agregar comentarios y marcar algún problema encontrado como “confirmado”, “solucionado”, “falso positivo” o “no se arreglará”.
Esta las puede usar el desarrollador quien tiene más contexto sobre el código y ayudaría a tener unas métricas más acertadas sobre el estado de nuestro código.
Hemos aprendido sobre cómo mejorar la seguridad de nuestras aplicaciones con lo siguiente:
Si quieres seguir aprendiendo sobre otros tipos de pruebas que puedes implementar para mejorar la calidad de tu código, puedes ver nuestro Curso de Fundamentos de Pruebas de Software.
De igual forma, te habrás dado cuenta de que esto se integra con nuestro flujo de desarrollo y automatiza la realización de ciertas pruebas, esto hace parte de una práctica más extensa llamada DevOps, de la cual puedes aprender en nuestro Curso Profesional de DevOps.
Por último, como te puedes imaginar, existen otras herramientas que pueden realizar SAST, una de estas las integra directamente GitLab y la puedes explorar en nuestro Curso de DevOps con GitLab.
También puedes visitar la documentación oficial de SonarCloud donde puedes explorar a mayor profundidad el funcionamiento de SonarCloud.
Yo no recomendaría esto, ya que Sonarqube es una herramienta abierta, porque deberías pagar por ello?
Mejor les recomiendo instalar Sonarqube desde su lado.
Bajan una imagen de docker, la ponen a correr y listo.
Tan fácil como ponerla en un EC2 ó tu propio servidor, 100% gratis y sin pagar a SonarCloud.
Estoy de acuerdo, así es como siempre lo he utilizado.
Solo se brindan más opciones, algunos prefieren un servicio managed a uno que tengan que mantener por sí mismos. Igual para repositorios privados, SonarQube casi que te forza a pagar también por las limitantes que pone y ahí tiene mejor ROI SonarCloud ya que los precios son más baratos y no tienes que administrar un servidor adicional por tu cuenta.
A mi me encanta SonarQube, pero las limitaciones en sus ediciones gratuitas son demasiado grandes ¿¿Que no se puedan analizar ramas…?? y las versiones de pago no son precisamente baratas…
Una pena, un software super bueno que vale la pena pagarlo, pero no con esas imposiciones…
Interesante artículo, recién me entero de SonarCloud y me pareció una herramienta que vale la pena poner a prueba. También me impulsó a continuar con el Curso de Fundamentos de Pruebas de Software. Gracias @Juanjo.
SonarCloud allows you to analyze your code through an appropriate SonarScan agent and easily record the results in a centralized location. Your team can then access a quick and simple interface to evaluate their code and take informed decisions on how to proceed.
yo tampoco conocia de SonarCloud 😳
Interesante la pagina, no la conocía y ahora pienso que puede ser algo necesario de hacer con un código, bastante útil la información