¿Qué es una revisión de código?
Una revisión de código es una revisión entre pares del código que ayuda a los desarrolladores a garantizar o mejorar la calidad del código antes de fusionarlo y enviarlo.
Las revisiones de código, también conocidas como revisiones entre pares, actúan como garantía de calidad del código base.
Las revisiones de código son evaluaciones metódicas del código diseñadas para detectar errores, aumentar la calidad del código y ayudar a los desarrolladores a aprender el código fuente.
Después de que un desarrollador de software completa la codificación, una revisión de código es un paso importante en el proceso de desarrollo de software para obtener una segunda opinión sobre la solución y la implementación antes de fusionarlo en una rama upstream, como una rama de funcionalidad o la rama principal. El revisor también puede actuar como un segundo paso para identificar errores, problemas de lógica, casos extremos sin resolver u otras cuestiones.
Esta práctica permite a los autores y revisores de código identificar fallas de seguridad, cumplir con los estándares de calidad y compartir conocimientos entre lenguajes y marcos de programación. Los revisores pueden pertenecer a cualquier equipo o grupo, siempre que sean expertos en el dominio. Si las líneas de código cubren más de un dominio, dos expertos deben revisar el código.
El desarrollo de un proceso sólido de revisión del código establece una base para la mejora continua y evita que los clientes reciban un código inestable. Las revisiones de código deben formar parte del flujo de trabajo de un equipo de desarrollo de software para mejorar la calidad del código y garantizar que otro miembro del equipo haya examinado cada pieza de código.
El proceso de revisión del código también es una parte importante para difundir el conocimiento en toda una organización. Por esas y otras razones, el 76 % de los desarrolladores que respondieron a la Encuesta global de DevSecOps de 2022 dijeron que las revisiones de código son «muy valiosas».
- Compartir conocimientos: cuando los desarrolladores de software revisan el código tan pronto como un miembro del equipo realiza cambios, pueden aprender nuevas técnicas y soluciones. Las revisiones de código ayudan a los desarrolladores júnior a aprender de los miembros más antiguos del equipo, de manera similar a cómo la programación con asistencia de pares ayuda eficazmente a los desarrolladores a compartir habilidades e ideas. Al difundir el conocimiento en toda la organización, las revisiones de código garantizan que ninguna persona sea un único punto de falla. Todos tienen la capacidad de revisar y ofrecer comentarios. El conocimiento compartido también ayuda a los miembros del equipo a tomarse vacaciones, porque todos los miembros del equipo tienen conocimientos previos sobre un tema.
- Descubrir errores antes: en lugar de descubrir errores después de que se haya enviado una funcionalidad y luchar por lanzar un parche, los desarrolladores pueden encontrar y solucionar problemas de inmediato antes de que los clientes los vean. Mover el proceso de revisión antes en el ciclo de vida de desarrollo del software a través de pruebas unitarias ayuda a los desarrolladores a trabajar en soluciones con nuevos conocimientos. Cuando esperan hasta el final del ciclo de vida para hacer una revisión, los desarrolladores suelen tener dificultades para recordar el código, las soluciones y el razonamiento. El análisis estático es una forma económica eficiente de alcanzar el valor comercial y del cliente.
- Mantener el cumplimiento: los desarrolladores tienen diversos antecedentes y formación que influyen en sus estilos de codificación. Si los equipos quieren tener un estilo de programación estándar, las revisiones de código ayudan a todos a cumplir con los mismos estándares. Esto es especialmente importante para los proyectos de código abierto en los que contribuyen varias personas. Las revisiones entre pares permiten a los encargados de mantenimiento evaluar el código antes de hacer push a los cambios.
- Mejorar la seguridad: las revisiones de código crean un alto nivel de seguridad, especialmente cuando los profesionales de la seguridad participan en una revisión específica. La seguridad de las aplicaciones es parte integral del desarrollo de software, y las revisiones de código ayudan a detectar problemas de seguridad y garantizar el cumplimiento. Los miembros del equipo de seguridad pueden revisar el código en busca de vulnerabilidades y alertar a los desarrolladores sobre la amenaza. Las revisiones de código son un gran complemento para los análisis y las pruebas automatizados que detectan vulnerabilidades de seguridad.
- Aumentar la colaboración: cuando los miembros del equipo trabajan juntos para crear una solución, se sienten más dueños de su trabajo y tienen un mayor sentido de pertenencia. Los autores y revisores pueden trabajar juntos para encontrar las soluciones más efectivas a fin de satisfacer las necesidades de los clientes. Es importante fortalecer la colaboración a lo largo del ciclo de vida de desarrollo del software para evitar los silos de información y mantener un flujo de trabajo fluido entre los equipos. Para realizar revisiones de código con éxito, es importante que los desarrolladores creen una mentalidad de revisión de código que tenga una base sólida en el desarrollo colaborativo.
- Mejorar la calidad del código: las revisiones de código son una forma importante de garantizar la calidad del código y del software. Es posible que un ser humano que conoce su código base observe problemas de calidad del código que las pruebas automatizadas podrían pasar por alto. Incluso pueden ayudar a reducir la deuda técnica.
- Mayor tiempo para enviar: el tiempo de revisión podría retrasar el proceso de lanzamiento, ya que los revisores tienen que colaborar con los autores para debatir sobre los problemas. Según la carga de trabajo de un revisor, es posible que no complete una revisión tan rápido como le gustaría al autor. Este desafío se puede superar mediante el uso de herramientas de revisión de código que incluyan pruebas automatizadas para encontrar errores. Las herramientas automatizadas son una forma efectiva de liberar tiempo de los desarrolladores para que puedan centrarse en problemas más grandes de ingeniería de software en lugar de señalar errores simples de lint.
- Desviar la atención de otras tareas: los desarrolladores suelen tener una gran carga de trabajo, y una revisión del código puede alejar su atención de otras tareas de alta prioridad de las que son responsables. Los miembros del equipo pueden verse obligados a decidir entre finalizar su tarea o detener su trabajo para realizar una revisión del código. En cualquier caso, el trabajo se retrasa en alguna parte de la organización. Para reducir este problema, los miembros del equipo pueden tener una lista de revisores o una lista de expertos en el dominio para que un solo desarrollador no se vea abrumado por las solicitudes de revisión.
- Las revisiones grandes significan tiempos de revisión más largos: si los desarrolladores tienen que realizar revisiones de código en un cambio grande, podrían tener que dedicar una cantidad significativa de tiempo para examinar el código. Las revisiones de código de gran envergadura son difíciles de evaluar, y los desarrolladores pueden, de forma natural, avanzar rápidamente por el proceso para completarlo a tiempo, lo que se traduce en una disminución de la calidad de la comentarios. El desarrollo incremental de código evita este desafío ya que permite a los revisores mirar un pequeño fragmento de código varias veces en lugar de un gran cambio a la vez.
Puede minimizar algunas de estas desventajas seleccionando el método de revisión de código más adecuado para su equipo. Estos son cuatro enfoques comunes para la revisión de código:
Programación con asistencia de pares
La programación con asistencia de pares implica la colaboración de dos desarrolladores en tiempo real: uno que escribe código (el programador) y otro que lo revisa (el revisor). Las sesiones de programación con asistencia de pares son populares entre los equipos de desarrollo porque los compañeros de equipo colaboran para identificar la solución más efectiva a un desafío. Los miembros del equipo comparten conocimientos y pueden superar rápidamente las dificultades trabajando juntos en ideas y aprovechar su experiencia.
Los beneficios de la programación con asistencia de pares
- Transfiere conocimiento
- Evita silos de información
- Resuelve problemas complejos
- Aumenta la moral
- Encuentra más errores
- Se puede realizar de forma remota
Los inconvenientes de la programación con asistencia de pares
- Requiere mucho tiempo
- Se puede usar en exceso
- Es difícil de medir
Revisiones de pares
En una revisión de pares, dos desarrolladores (el autor y el revisor) se reúnen en persona o de forma remota a través de una pantalla compartida, y el autor explica la propuesta de cambio completada y explica el razonamiento detrás de las soluciones elegidas. El revisor hace preguntas y sugerencias, del mismo modo en que los miembros del equipo colaboran durante las sesiones de programación con asistencia de pares. El autor puede realizar pequeños cambios durante la revisión y anotar correcciones más grandes para un momento posterior.
Los beneficios de las revisiones de pares
- Implementación y finalización fáciles
- Se pueden realizar de forma remota
- Programación con asistencia de pares más rápida
Los inconvenientes de las revisiones de pares
- El revisor está separado del código
- La revisión se mueve al ritmo del autor
- Falta de objetividad
- No se verifica que se hayan realizado cambios
- Es difícil de medir
Revisiones asistidas por herramientas
Los equipos pueden decidir usar herramientas para ahorrar tiempo y garantizar que se envíe el código de la más alta calidad. Las revisiones asistidas por herramientas pueden recopilar automáticamente los archivos modificados y mostrar las diferencias, o bien hacer que sea más fácil proporcionar comentarios y tener conversaciones a través de comentarios, así como incorporar elementos como las pruebas estáticas de seguridad de las aplicaciones (SAST) para ayudar a identificar y corregir las vulnerabilidades.
La mejor manera de ver las revisiones asistidas por herramientas es considerarlas como un complemento de otros tipos de revisiones. Las herramientas automatizadas brindan una forma efectiva de hacer cumplir los estándares de código, identificar vulnerabilidades, recopilar métricas y recopilar archivos, pero algunos equipos pueden verse tentados a confiar completamente en las herramientas y renunciar a la participación de los miembros del equipo para realizar revisiones de código. Las herramientas deben verse como una extensión de las revisiones de código y una forma de mejorar el proceso.
**Los beneficios de las revisiones asistidas por herramientas **
- Métricas más fáciles de recopilar
- Las herramientas automatizadas liberan el enfoque del desarrollador
**Los inconvenientes de las revisiones asistidas por herramientas **
- Los desarrolladores deben dar mantenimiento a las herramientas
- Son costosas
- Aún se requerirán revisiones de los compañeros de equipo
Revisión por correo electrónico
Las revisiones por correo electrónico se suelen utilizar para dificultades menores y pequeños fragmentos de código. Se pueden realizar por correo electrónico o mediante sistemas de gestión del código fuente. En una revisión por correo electrónico, el autor envía un correo electrónico con cambios de código a los revisores. Las revisiones por correo electrónico son similares a las revisiones de pares, ya que se pueden implementar fácilmente y no requieren una fuerte curva de aprendizaje ni una etapa de tutoría para enseñar al autor cómo hacer un cambio.
Los beneficios de las revisiones por correo electrónico
- Implementación y finalización fáciles
- Facilitan las revisiones remotas y asincrónicas
- Revisiones automáticas a través de SCM
Los inconvenientes de las revisiones por correo electrónico
- Demasiado tiempo para recopilar archivos
- Conversaciones difíciles de seguir
- No hay fecha de finalización de la revisión definitiva
- No se verifica que se hayan realizado cambios
- Son difíciles de medir
- Limite las sesiones de revisión de código para que sean productivas. Averigüe qué funciona para su equipo, por ejemplo, no más de una hora o 200 líneas de código, y animarlo a respetar ese límite.
- Incluya a todos en el proceso, tanto a los miembros nuevos como a los sénior del equipo. Las revisiones de código ofrecen una excelente manera de ayudar a los miembros más nuevos del equipo a ponerse al día con el código base, tanto pidiéndoles a los desarrolladores más sénior del equipo que revisen su código como revisando el código de ellos. Al incluir a todos en su proceso de revisión de código también facilitará los ajustes cuando las personas se vayan de vacaciones o ya no estén en el equipo.
- Distribuir las solicitudes de revisión de código entre el equipo. Suele pasar que unos pocos desarrolladores reciben la mayor parte de las solicitudes de revisión de código, y esto no es bueno para ellos ni para el resto del equipo (ni para el código base) a largo plazo. Puede crear una lista de expertos en el dominio o una lista de revisores para evitar que esto ocurra.
- Haga preguntas y proporcione contexto útil. Al revisar el código de alguien más, haga todo lo posible para que ambos puedan aprender durante el proceso. Si no sabe por qué algo se hizo de una manera diferente a la suya, pregunte. Si tiene alguna sugerencia sobre cómo mejorar el código, indique por qué lo sugiere en su comentario. Esto no solo les ayudará a ambos a aprender, también a ahorrar tiempo.
Al integrar prácticas efectivas de revisión de código en la estructura de desarrollo del software, las organizaciones pueden superar los desafíos de los plazos ajustados sin comprometer la integridad de sus productos. El diálogo entre el autor del código y el revisor del código sienta las bases para crear un proceso de desarrollo sólido, y garantiza que cada fragmento de código no solo cumpla sino que supere los estándares establecidos.
Adoptar las revisiones de código es adoptar un futuro en el que la innovación, la colaboración y la seguridad impulsan el camino hacia la creación de soluciones de software impactantes.
Descubra cómo GitLab agiliza el proceso de revisión de código
GitLab optimiza el desarrollo de software con un control de versiones y una colaboración integrales.
¿Todo listo para obtener más información sobre las revisiones de código?
View all resources¿Todo listo para comenzar?
Descubra lo que su equipo puede hacer con una plataforma de DevSecOps unificada.