Articulo de referencia

Revisión automatizada del código

La revisión automatizada de código se refiere al uso de herramientas y técnicas de software para asistir o automatizar completamente el proceso de revisión del código fuente en ...

Página semiprotegida

La revisión automatizada de código se refiere al uso de herramientas y técnicas de software para asistir o automatizar completamente el proceso de revisión del código fuente en busca de defectos, problemas de estilo, vulnerabilidades de seguridad y problemas de mantenibilidad. Dichas herramientas se utilizan ampliamente en la ingeniería de software moderna, particularmente dentro de los procesos de integración continua (CI) y entrega continua (CD). [ 1 ]

Descripción general

El uso de métodos analíticos para inspeccionar y revisar el código fuente con el fin de detectar errores o problemas de seguridad ha sido una práctica de desarrollo estándar tanto en el ámbito del software de código abierto como en el comercial . [ 2 ] Este proceso puede realizarse tanto de forma manual como automatizada. [ 3 ] [ 4 ] Con la automatización, las herramientas de software facilitan el proceso de revisión e inspección del código. El programa o herramienta de revisión suele mostrar una lista de advertencias (violaciones de los estándares de programación). Un programa de revisión también puede proporcionar una forma automatizada o asistida por un programador para corregir los problemas encontrados. Este es un componente para dominar el software fácilmente. Esto contribuye a la práctica de la Inteligencia de Software . Este proceso se suele denominar "linting" ya que una de las primeras herramientas para el análisis estático de código se llamaba Lint .

Algunas herramientas de análisis de código estático pueden utilizarse para ayudar con la revisión automatizada de código. No se comparan favorablemente con las revisiones manuales, sin embargo, pueden hacerse más rápido y de manera más eficiente. Estas herramientas también encapsulan un conocimiento profundo de las reglas y la semántica subyacentes necesarias para realizar este tipo de análisis, de modo que no requieren que el revisor de código humano tenga el mismo nivel de experiencia que un auditor humano experto. [ 3 ] Muchos entornos de desarrollo integrados también proporcionan funcionalidad básica de revisión automatizada de código. Por ejemplo, los IDE Eclipse [ 5 ] y Microsoft Visual Studio [ 6 ] admiten una variedad de complementos que facilitan la revisión de código.

Además de las herramientas de análisis de código estático , existen herramientas que analizan y visualizan las estructuras de software y ayudan a los usuarios a comprenderlas mejor. Estos sistemas están más orientados al análisis, ya que normalmente no contienen un conjunto predefinido de reglas para verificar el software. Algunas de estas herramientas (por ejemplo, Imagix 4D , Resharper , SonarJ , Sotoarc, Structure101 , ACTool [ 7 ] ) permiten definir arquitecturas objetivo y garantizar que la implementación del software no infrinja las restricciones de dicha arquitectura.

Investigaciones recientes también han explorado el uso de grandes modelos de lenguaje (LLM) como componentes en flujos de trabajo automatizados de revisión de código. Se han evaluado modelos de código de propósito general entrenados con código de código abierto en un entorno de "entrenamiento inicial" , donde se le pide al modelo que proponga correcciones para vulnerabilidades de seguridad directamente a partir del código fuente y los diagnósticos asociados. Estos estudios informan que los LLM pueden reparar algunas vulnerabilidades simples o sintéticas, pero que su rendimiento se degrada en errores complejos del mundo real , y los parches generados a menudo son incompletos o funcionalmente incorrectos. Como resultado, el trabajo actual trata a los LLM como asistentes potenciales que pueden sugerir parches candidatos para ser validados por herramientas de análisis tradicionales y revisores humanos, en lugar de como sistemas de revisión de código independientes y confiables. [ 8 ]

Aplicaciones

La revisión automatizada de código se utiliza en:

  • proyectos de código abierto a gran escala alojados en plataformas como GitHub, donde los servicios de integración continua ejecutan automáticamente compilaciones y conjuntos de pruebas en conjuntos de cambios; [ 9 ]
  • industrias críticas para la seguridad, como la automotriz y la aeroespacial, donde se utilizan análisis estáticos y comprobaciones automatizadas relacionadas para respaldar el cumplimiento de las normas de seguridad funcional y reducir el riesgo de defectos de software en los sistemas implementados; [ 10 ]
  • Flujos de trabajo de desarrollo centrados en la seguridad, donde las herramientas de pruebas de seguridad de aplicaciones estáticas (SAST) y los analizadores relacionados se integran en las canalizaciones de CI/CD para escanear automáticamente el código fuente en busca de vulnerabilidades. [ 11 ] [ 10 ]

Herramientas automatizadas de revisión de código

Véase también

Referencias

  1. Davila, Nicole; Nunes, Ingrid (1 de julio de 2021). "Una revisión sistemática de la literatura y una taxonomía de la revisión de código moderna" . Journal of Systems and Software . 177 110951. arXiv : 2103.08777 . doi : 10.1016/j.jss.2021.110951 . ISSN 0164-1212 . 
  2. McIntosh, Shane; Kamei, Yasutaka; Adams, Bram; Hassan, Ahmed E. (2014). "El impacto de la cobertura de la revisión de código y la participación en la revisión de código en la calidad del software: un estudio de caso de los proyectos qt, vtk e itk". Actas de la 11.ª Conferencia de Trabajo sobre Minería de Repositorios de Software . doi : 10.1145/2597073.2597076 .
  3. 1 2 Gómez, Ivo; Morgado, Pedro; Gómez, Tiago; Moreira, Rodrigo (2009). "Una descripción general del enfoque de análisis de código estático en el desarrollo de software" (PDF) . Universidade do Porto . Consultado el 3 de octubre de 2010 .
  4. "Tricorder: Construyendo un ecosistema de análisis de programas" . 2015.
  5. "Desarrollo de herramientas para la revisión colaborativa de código" . www.eclipse.org. Archivado del original el 1 de abril de 2010. Consultado el 13 de octubre de 2010 .
  6. "Complemento de revisión de código para Visual Studio 2008, ReviewPal" . www.codeproject.com. 4 de noviembre de 2009. Consultado el 13 de octubre de 2010 .
  7. Complemento de coherencia de arquitectura para Eclipse
  8. Pearce, Hammond; Tan, Benjamin; Ahmad, Baleegh; Karri, Ramesh; Dolan-Gavitt, Brendan (mayo de 2023). "Examinando la reparación de vulnerabilidades de disparo cero con modelos de lenguaje grandes". Simposio IEEE de 2023 sobre seguridad y privacidad (SP) . IEEE. págs. 2339–2356 . arXiv : 2112.02125 . doi : 10.1109 /SP46215.2023.10179324 . 
  9. Hilton, Michael; Tunnell, Timothy; Huang, Kai; Marinov, Darko; Dig, Danny (25 de agosto de 2016). «Uso, costes y beneficios de la integración continua en proyectos de código abierto». Actas de la 31.ª Conferencia Internacional IEEE/ACM sobre Ingeniería de Software Automatizada . ASE '16. Nueva York, NY, EE. UU.: Association for Computing Machinery. págs. 426–437 . doi : 10.1145/2970276.2970358 . ISBN  978-1-4503-3845-5.
  10. 1 2 "Pruebas de seguridad de aplicaciones estáticas (SAST) | Documentación de GitLab" . docs.gitlab.com . Consultado el 2 de diciembre de 2025 .
  11. Hilton, Michael; Nelson, Nicholas; Tunnell, Timothy; Marinov, Darko; Dig, Danny (21 de agosto de 2017). «Compromisos en la integración continua: garantía, seguridad y flexibilidad» . Actas de la 11.ª Reunión Conjunta sobre Fundamentos de la Ingeniería de Software de 2017. ESEC/FSE 2017. Nueva York, NY, EE. UU.: Association for Computing Machinery. págs. 197–207 . doi : 10.1145/3106237.3106270 . ISBN  978-1-4503-5105-8.