¡Un Enfoque Simple pero Poderoso para el Código Limpio!

Rate this content
Bookmark

En esta sesión, utilizaré una demostración para demostrar cómo puedes tomar fácilmente el control de la calidad de tu código con SonarCloud. Verás cómo una metodología simple y automatizada garantiza que tú y tu equipo solo comprometan Código Limpio.

8 min
24 Mar, 2022

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Esta charla presenta el concepto de CleanCode en los flujos de trabajo de DevOps, resaltando los beneficios de un código eficiente y mantenible. Se muestra el uso de SonarCloud y la Solución Sonar como una forma fácil de agregar código limpio al flujo de trabajo, proporcionando información valiosa y métricas. Se enfatiza el análisis de solicitudes de extracción y la clasificación de problemas como un enfoque proactivo para detectar y corregir problemas de código antes de que lleguen a la rama principal.

Available in English

1. Introducción a CleanCode en los flujos de trabajo de DevOps

Short description:

Voy a demostrar lo fácil que es programar de manera más inteligente y aprovechar el poder de CleanCode en tus flujos de trabajo de DevOps. Un flujo de trabajo tradicional puede desperdiciar una cantidad tremenda de tiempo de desarrollo, con hasta un 42% dedicado a rehacer y corregir código defectuoso. En Solar Source, tenemos una mejor manera de agregar desarrollo, un enfoque de código limpio.

Hola a todos. Soy Clint Cameron, Gerente de Marketing de Productos en Solar Source. Y hoy, voy a demostrar lo fácil que es programar de manera más inteligente y aprovechar el poder de CleanCode en tus flujos de trabajo de DevOps. Ahora, permítanme comenzar con un flujo de trabajo tradicional y mostrar cómo puede desperdiciar una cantidad tremenda de tiempo de desarrollo. El código se escribe y se envía a la rama principal. Los auditores señalan posibles problemas y luego los desarrolladores vuelven al código para clasificar y separar los problemas reales de los falsos positivos. El resultado final es que hasta un 42% del tiempo de desarrollo se puede dedicar a rehacer y corregir código defectuoso.

En Solar Source, tenemos una mejor manera de agregar desarrollo, un enfoque de código limpio. Ponemos al desarrollador a cargo de la calidad del código y le brindamos las herramientas para escribir solo código limpio. Es ineficiente enviar problemas a tu rama principal o una rama de características solo para volver a visitar esos problemas más tarde. En su lugar, encontremos esos problemas tan pronto como ocurran y eliminémoslos incluso antes de que se confirmen por primera vez.

2. Adding Clean Code with SonarCloud

Short description:

El enfoque de código limpio significa la propiedad directa del código por parte del desarrollador y del equipo, lo que resulta en un código eficiente, mantenible y seguro que fomenta la innovación. SonarCloud y la Solución Sonar ofrecen una forma gratuita y fácil de agregar código limpio a tu flujo de trabajo. Al integrarse con plataformas como GitHub, Azure, Bitbucket y GitLab, puedes analizar tu código y recibir información valiosa y métricas. Durante la demostración, iniciamos un análisis, seleccionamos un plan y dejamos que SonarCloud se encargue del resto. Una vez que se completa el análisis, podemos identificar problemas de confiabilidad, seguridad y mantenibilidad en la rama principal.

OK, podemos ver que el enfoque de código limpio es más eficiente. ¿Qué significa exactamente eso para ti y tu equipo? Bueno, significa la propiedad directa del código por parte del desarrollador y del equipo. Significa código eficiente y mantenible, código que es robusto y confiable cuando se ejecuta. Significa, por supuesto, código seguro para tus usuarios y para tu organización. Y finalmente, significa código que fomenta la innovación y mantiene a los desarrolladores felices.

OK, en un minuto, voy a demostrar cómo puedes agregar código limpio a tu flujo de trabajo utilizando SonarCloud y la Solución Sonar. Es 100% gratuito para proyectos públicos y puedes analizar tu código en minutos. Ahora, antes de demostrarlo, déjame explicarte rápidamente la solución. En mi demostración, mi proyecto está alojado en GitHub. También tenemos una integración estrecha con Azure, Bitbucket y GitLab. Todo comienza con una solicitud de extracción, que inicia un escaneo automático de tu código. Este escaneo automático se puede integrar fácilmente con tu sistema CI/CD existente. A partir del análisis, obtenemos un conjunto de métricas de calidad de código y una clara indicación de cualquier problema. Los resultados del análisis se sincronizan automáticamente con GitHub. Así que obtienes información valiosa justo donde tu equipo vive, come y respira. Ahora, pasemos a la demostración. Bien, aquí está nuestro código para la demostración. Lo primero es iniciar un análisis en sonarcloud.io. Nos autenticaremos utilizando nuestras credenciales de GitHub. Navegaremos para crear una nueva organización. Eso se importará automáticamente y lo seleccionaremos. Vamos a seleccionar un plan gratuito y obtener ese proyecto importado, y eso es todo. SonarCloud se encargará del resto. Se preparará para el análisis y luego ejecutará completamente ese análisis. Ahora, dependiendo del tamaño de tu proyecto, del número de líneas de código que contiene tu proyecto, podría llevar unos minutos ejecutarlo. Solo tengo unos siete minutos con ustedes, así que en aras del tiempo, pausaremos y retomaremos una vez que se complete el análisis.

De acuerdo, análisis completado. Echemos un vistazo. Navegamos a la rama principal y vemos que tenemos algunos problemas de confiabilidad, seguridad y mantenibilidad. Eso es

3. Analyzing Pull Requests and Triaging Issues

Short description:

Comencemos a detectar problemas desde ahora e iniciar un proceso de código limpio. Analicemos las solicitudes de extracción para detectar problemas antes de que lleguen a la rama principal. Tenemos una puerta de calidad fallida debido a una vulnerabilidad en nuestra solicitud de extracción. Podemos clasificar los problemas y obtener más información sobre las vulnerabilidades en GitHub. Profundicemos en las vulnerabilidades y encontremos consejos para corregirlas.

Es genial tener una comprensión básica de lo que está sucediendo en tu rama principal. Ahora, aparte de esas vulnerabilidades, esas deben corregirse, pero todo lo demás es agua pasada. Lo importante es comenzar a detectar problemas desde ahora. Iniciemos un proceso de código limpio desde ahora, para que estemos adelantándonos. Cuando ocurran cosas, detectémoslas lo antes posible y evitemos que lleguen siquiera cerca de la rama principal. Detectémoslas antes de que lleguen siquiera a una rama de características. Con ese fin, me gustaría hacer un análisis de una solicitud de extracción. Ya tengo una rama configurada en GitHub. Iniciaremos una nueva solicitud de extracción en esa rama. Eso es todo lo que se necesita. Se iniciará automáticamente y escaneará nuestra solicitud de extracción, al igual que la rama principal. Dependiendo del tamaño de la solicitud de extracción y del número de líneas de código incluidas, puede llevar unos segundos o unos minutos completar y ejecutar el análisis. Está ejecutándose en este momento. Espero que termine. Ahí va, ya terminó. Podemos ver que tenemos una puerta de calidad fallida debido a una vulnerabilidad en nuestra solicitud de extracción. No queremos eso, así que déjame mostrarte algo muy interesante ahora mismo. Aquí puedes ver que si intentara fusionar esta solicitud de extracción, está en rojo, hago clic en ella, está bloqueada. A menos que tenga privilegios de administrador, puedes configurarlo para que si obtienes una puerta de calidad en rojo en una solicitud de extracción, no se pueda fusionar a menos que se solucione. De acuerdo, cancelaremos eso. Ahora, permíteme ir a la pestaña de conversaciones. Permíteme llevarte a la pestaña de comprobaciones. También podemos ver una integración muy buena allí. Además, quiero mostrarte algo interesante aquí, que es nuestra integración con las capacidades de análisis de código de GitHub, y puedes ver que obtienes aún más información sobre esta vulnerabilidad. Si vamos al final aquí, podemos ver que parece que podríamos tener un defecto de inyección. Si hacemos clic en Mostrar rutas, podemos ver que tenemos una fuente aquí en app.js, y atraviesa cinco pasos diferentes, incluso se cruza en otro archivo llamado app handler.js, y eso es nuestra sincronización. El punto es que queremos proporcionar la mayor información posible en GitHub. Es donde trabajas, así que obtengamos la información correcta en el momento adecuado para que puedas tomar decisiones. Y con ese fin, tenemos esta pequeña casilla de verificación aquí. Podemos clasificar las cosas como tal vez sea un falso positivo, tal vez solo se use en pruebas o por alguna razón decimos que no lo vamos a corregir. De acuerdo, terminaré llevándote de vuelta a la pestaña de comprobaciones aquí y mostrándote una última función. Si hago clic aquí, puedo abrir esta solicitud de extracción, obtener el mismo conjunto de métricas que vimos en la rama principal pero ahora es en RPR. Ahí está nuestra vulnerabilidad. Puedo hacer clic aquí mismo y profundizar un poco más y descubrir exactamente lo que está sucediendo con esa vulnerabilidad, así como algunos consejos para corregirla, porque ese es el objetivo del juego. De acuerdo, gracias. Feliz codificación limpia y nos hablamos más tarde. ¡Hasta luego!

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

React Advanced Conference 2021React Advanced Conference 2021
19 min
Automating All the Code & Testing Things with GitHub Actions
Top Content
Code tasks like linting and testing are critical pieces of a developer’s workflow that help keep us sane like preventing syntax or style issues and hardening our core business logic. We’ll talk about how we can use GitHub Actions to automate these tasks and help keep our projects running smoothly.
DevOps.js Conf 2022DevOps.js Conf 2022
33 min
Fine-tuning DevOps for People over Perfection
Demand for DevOps has increased in recent years as more organizations adopt cloud native technologies. Complexity has also increased and a "zero to hero" mentality leaves many people chasing perfection and FOMO. This session focusses instead on why maybe we shouldn't adopt a technology practice and how sometimes teams can achieve the same results prioritizing people over ops automation & controls. Let's look at amounts of and fine-tuning everything as code, pull requests, DevSecOps, Monitoring and more to prioritize developer well-being over optimization perfection. It can be a valid decision to deploy less and sleep better. And finally we'll examine how manual practice and discipline can be the key to superb products and experiences.
DevOps.js Conf 2022DevOps.js Conf 2022
27 min
Why is CI so Damn Slow?
We've all asked ourselves this while waiting an eternity for our CI job to finish. Slow CI not only wrecks developer productivity breaking our focus, it costs money in cloud computing fees, and wastes enormous amounts of electricity. Let’s take a dive into why this is the case and how we can solve it with better, faster tools.
DevOps.js Conf 2022DevOps.js Conf 2022
31 min
The Zen of Yarn
In the past years Yarn took a spot as one of the most common tools used to develop JavaScript projects, in no small part thanks to an opinionated set of guiding principles. But what are they? How do they apply to Yarn in practice? And just as important: how do they benefit you and your projects?
In this talk we won't dive into benchmarks or feature sets: instead, you'll learn how we approach Yarn’s development, how we explore new paths, how we keep our codebase healthy, and generally why we think Yarn will remain firmly set in our ecosystem for the years to come.
DevOps.js Conf 2024DevOps.js Conf 2024
25 min
Atomic Deployment for JS Hipsters
Deploying an app is all but an easy process. You will encounter a lot of glitches and pain points to solve to have it working properly. The worst is: that now that you can deploy your app in production, how can't you also deploy all branches in the project to get access to live previews? And be able to do a fast-revert on-demand?Fortunately, the classic DevOps toolkit has all you need to achieve it without compromising your mental health. By expertly mixing Git, Unix tools, and API calls, and orchestrating all of them with JavaScript, you'll master the secret of safe atomic deployments.No more need to rely on commercial services: become the perfect tool master and netlifize your app right at home!

Workshops on related topic

DevOps.js Conf 2022DevOps.js Conf 2022
152 min
MERN Stack Application Deployment in Kubernetes
Workshop
Deploying and managing JavaScript applications in Kubernetes can get tricky. Especially when a database also has to be part of the deployment. MongoDB Atlas has made developers' lives much easier, however, how do you take a SaaS product and integrate it with your existing Kubernetes cluster? This is where the MongoDB Atlas Operator comes into play. In this workshop, the attendees will learn about how to create a MERN (MongoDB, Express, React, Node.js) application locally, and how to deploy everything into a Kubernetes cluster with the Atlas Operator.
React Summit 2023React Summit 2023
88 min
Deploying React Native Apps in the Cloud
WorkshopFree
Deploying React Native apps manually on a local machine can be complex. The differences between Android and iOS require developers to use specific tools and processes for each platform, including hardware requirements for iOS. Manual deployments also make it difficult to manage signing credentials, environment configurations, track releases, and to collaborate as a team.
Appflow is the cloud mobile DevOps platform built by Ionic. Using a service like Appflow to build React Native apps not only provides access to powerful computing resources, it can simplify the deployment process by providing a centralized environment for managing and distributing your app to multiple platforms. This can save time and resources, enable collaboration, as well as improve the overall reliability and scalability of an app.
In this workshop, you’ll deploy a React Native application for delivery to Android and iOS test devices using Appflow. You’ll also learn the steps for publishing to Google Play and Apple App Stores. No previous experience with deploying native applications is required, and you’ll come away with a deeper understanding of the mobile deployment process and best practices for how to use a cloud mobile DevOps platform to ship quickly at scale.
DevOps.js Conf 2022DevOps.js Conf 2022
13 min
Azure Static Web Apps (SWA) with Azure DevOps
WorkshopFree
Azure Static Web Apps were launched earlier in 2021, and out of the box, they could integrate your existing repository and deploy your Static Web App from Azure DevOps. This workshop demonstrates how to publish an Azure Static Web App with Azure DevOps.
DevOps.js Conf 2022DevOps.js Conf 2022
163 min
How to develop, build, and deploy Node.js microservices with Pulumi and Azure DevOps
Workshop
The workshop gives a practical perspective of key principles needed to develop, build, and maintain a set of microservices in the Node.js stack. It covers specifics of creating isolated TypeScript services using the monorepo approach with lerna and yarn workspaces. The workshop includes an overview and a live exercise to create cloud environment with Pulumi framework and Azure services. The sessions fits the best developers who want to learn and practice build and deploy techniques using Azure stack and Pulumi for Node.js.