8 prácticas comprobadas de revisión de código para desarrolladores
14 de enero de 2022
0 minutos de lecturaLa revisión de código de seguridad es un proceso para comprobar qué tan bien protege el código contra amenazas externas. El código puede tener debilidades de seguridad inherentes que comprometan la aplicación o los bloques de código circundantes. Las revisiones entre pares son un proceso manual que complementa los métodos de pruebas automatizadas para ofrecer una cobertura de seguridad integral. Una revisión de código seguro puede detectar debilidades de seguridad y ayudar a identificar errores en la lógica del código relacionados con el funcionamiento de una aplicación. Este tipo de revisión protege la aplicación contra la pérdida de datos y propiedad intelectual, que podría afectar los ingresos y la reputación de la empresa.
Una de las mejores formas de mejorar la calidad y la seguridad del software es implementar un proceso formal de revisión manual de código. Debido a los posibles errores que se cometen al escribir código, contar con varias personas que lo revisen con una mirada fresca y conocimientos complementarios puede revelar equivocaciones que el programador original quizá nunca note. Además, aunque las personas pueden cometer errores, un grupo de expertos podría detectar un error o una falla de seguridad en el código que las herramientas automatizadas de revisión de código no detecten.
A pesar de todos los beneficios de una revisión de código entre pares, a veces resulta difícil reunir al equipo y completar rápidamente la tarea. Para resolverlo, definir prácticas de revisión de código puede ayudar a orientar el proceso hacia el resultado deseado: código de alta calidad y seguro. Estas son ocho pautas de revisión de código que puedes incorporar al proceso de desarrollo de software de tu empresa.
1. Agrega comentarios al código fuente mientras lo creas
La primera práctica consiste en que los desarrolladores usen comentarios no funcionales en distintas secciones del código para explicar a los revisores la intención de un bloque. Los comentarios ayudan a comunicar por qué el desarrollador tomó una decisión o hizo un cambio, sin que el equipo de revisión tenga que adivinarlo. Si se usan bien, los revisores con experiencia deberían poder entender, gracias a los comentarios, el propósito y el método de toda la secuencia de código. Además, contar con una guía de estilo y hacerla cumplir garantiza que el código sea legible para todo el equipo.
2. No des por hecho que algo funciona sin probarlo
El desarrollo de código requiere iteraciones de prueba y error. Un desarrollador escribe algunas líneas, compila el código y no funciona. Probar la funcionalidad y los resultados de las nuevas secciones de código puede reducir considerablemente el tiempo de revisión más adelante. Además, es mucho más fácil corregir una pequeña parte del código cuando sabes que el resto funciona correctamente. Una estrategia llamada desarrollo guiado por pruebas (TDD) consiste en escribir pruebas unitarias antes de implementar el código. Este enfoque sirve como comprobación preliminar de bloques de funciones específicos y permite que los revisores se concentren en integrar esas funciones con el resto del código.
3. Ejecuta conjuntos de pruebas en el código propuesto
Una forma de validar un conjunto específico de procedimientos es usar conjuntos de pruebas automatizadas para escribir pruebas unitarias para cada bloque de código. El conjunto de pruebas reúne funciones conocidas y evalúa el código comparándolo con un resultado positivo esperado. Como otra herramienta para evaluar el desempeño del código en acciones específicas, los conjuntos de pruebas aceleran la validación de secciones que realizan una o más tareas indicadas. Si una prueba falla, puede orientar al desarrollador hacia el área específica que debe modificar.
4. Procura que los pull request sean pequeños y tengan un único propósito
Los pull request (PR) son un proceso estandarizado para solicitar revisiones de código entre pares. Cuando el desarrollador termina el cambio inicial de código, el PR inicia el proceso de revisión. Para aumentar la eficiencia y agilizar la revisión manual, el desarrollador debe crear PR con instrucciones específicas para los revisores. Cuanto más extenso sea el PR, más tiempo puede tomar la revisión, lo que aumenta el riesgo de que el revisor pase por alto su objetivo principal. De hecho, el tamaño ideal de un PR es de menos de 250 líneas, ya que los revisores pueden detectar entre el 70 y el 90 % de los defectos en menos de una hora.
Empieza con Capture the Flag
Aprende a resolver desafíos de Capture the Flag viendo nuestro taller virtual introductorio a pedido.
5. Ejecuta siempre verificadores de código automatizados
Antes de la revisión entre pares, el desarrollador puede usar herramientas de revisión de código, como escáneres, verificadores de código automatizados o analizadores de código estático, para evaluar la calidad de una base de código después de realizar cambios. Estas herramientas detectan errores de formato evidentes, como problemas en los nombres de funciones o en los espacios. Los escáneres y los linters tienen reglas definidas y funcionan como un corrector ortográfico para detectar errores rápidamente. Al usar estas herramientas, se elimina este trabajo del proceso manual de revisión entre pares y el equipo puede concentrarse en errores de estilo o interpretación.
Por ejemplo, las herramientas de revisión de código Java pueden encontrar errores y problemas de seguridad en el código Java y ofrecer recomendaciones prácticas para que los desarrolladores los corrijan rápidamente. Snyk Code ofrece recomendaciones para mejorar la calidad del código directamente en tu IDE y brinda una experiencia de desarrollo sin fricciones.
Análisis de calidad del código en complementos de IDE
La función de análisis de calidad del código de Snyk dejará de estar disponible en las nuevas versiones de los complementos que se publiquen a partir del 17 de julio de 2025.
6. Revisa todo el código y todos los PR
Como el código es secuencial, los revisores deben evaluar todo el código y el conjunto de PR para comprobar que sea coherente. Cambiar una sección puede afectar considerablemente las subrutinas posteriores, así que el equipo de revisión entre pares debe considerar el código completo y todos los PR al evaluarlo. Es natural que los PR más grandes y sustanciales reciban más atención; sin embargo, un error en un PR pequeño puede tener consecuencias incluso más graves que las de un conjunto de fallas en un PR extenso.
7. Establece límites para el tiempo de revisión y las líneas de código verificadas
Revisar código es un proceso largo y tedioso, aunque fundamental. Por eso, es esencial limitar el tiempo que un revisor o equipo dedica a los detalles de cada línea de código. Algunas prácticas recomendadas en este ámbito son procurar que los integrantes del equipo no dediquen más de una hora a las revisiones de código y evitar que el equipo revise más de unos cientos de líneas en un período determinado. Este enfoque establece expectativas para el equipo de revisión y garantiza que verifique meticulosamente la parte del código relacionada con el PR. Al organizar las revisiones de código de forma eficiente para todo el equipo, los desarrolladores pueden recibir comentarios valiosos y mejorar rápidamente la calidad de su código.
8. Realiza una revisión de seguridad del código
Otra práctica recomendada para revisar código es realizar una revisión de código seguro. Mientras que las herramientas automatizadas buscan errores de espaciado o nombres y comparan el código con funciones estándar conocidas, las revisiones manuales evalúan el estilo, la intención y el resultado funcional del código. Un tercer tipo de evaluación es la revisión de seguridad del código, que analiza la solidez de la seguridad del código del desarrollador.
El código puede tener vulnerabilidades inherentes que comprometan la aplicación o los bloques de código circundantes. Una revisión de código seguro puede detectar estas vulnerabilidades y ayudar a identificar errores de lógica relacionados con el funcionamiento de una aplicación. El desarrollador debe poder escribir código en un entorno que lo proteja de ataques externos, que pueden provocar desde el robo de propiedad intelectual hasta pérdidas de ingresos o de datos.
La buena noticia es que existen herramientas de pruebas de seguridad de aplicaciones estáticas (SAST), como Snyk Code, que pueden detectar vulnerabilidades antes de que lleguen a la revisión de código o durante el análisis de código. También existen prácticas recomendadas de codificación segura que protegen el código fuente y permiten realizar revisiones de seguridad de código de manera eficiente. Algunos ejemplos son limitar el acceso al código, aplicar un cifrado sólido e implementar la administración de secretos para proteger las contraseñas y el código fuente de una divulgación amplia.
Conclusión: cómo hacer una revisión de código
Los desarrolladores pueden seguir perfeccionando y optimizando el código sin límite, pero aun así quizá no detecten todos los errores o fallas de seguridad. Al implementar un proceso de revisión de código entre pares, los equipos de desarrollo pueden asegurarse de que el software se pruebe correctamente antes de llevar el código a producción. Combinar la revisión automatizada, los pasos de revisión manual entre pares y las prácticas de revisión de código seguro es la manera más eficiente de entregar rápidamente código seguro y de alta calidad.
Visita nuestra página de Recursos de seguridad para conocer las opciones y herramientas de Snyk que ayudan a los desarrolladores a crear código preciso y seguro.
Herramienta gratuita en línea para revisar código
Protege tu código antes de tu próximo commit.
