El contenido de este sitio se ha traducido mediante inteligencia artificial (IA) o tecnología de traducción automática, y puede contener errores.

Skip to content
Systems

Análisis a gran escala del control de versiones semántico en NPM

Author

Donald Pinckney (Northeastern), Federico Cassano (Northeastern), Arjun Guha (Northeastern y Roblox) y Jonathan Bell (Northeastern)

Venue

Mining Software Repositories (MSR) 2023

Abstract

El repositorio de paquetes NPM contiene más de dos millones de paquetes y gestiona decenas de miles de millones de descargas a la semana. Casi todas las aplicaciones JavaScript utilizan el gestor de paquetes NPM para instalar paquetes del repositorio NPM. NPM se basa en un esquema de «versiones semánticas» («semver») para mantener un ecosistema saludable, en el que las correcciones de errores se distribuyen de forma fiable a los paquetes derivados lo más rápido posible, mientras que los cambios que rompen la compatibilidad requieren la intervención manual de los mantenedores de los paquetes derivados. Para comprender cómo utilizan los desarrolladores el semver, creamos un conjunto de datos que contiene todas las versiones de todos los paquetes de NPM y analizamos el flujo de actualizaciones a lo largo del ecosistema. Desarrollamos un resolutor de dependencias con capacidad de viajar en el tiempo para NPM, lo que nos permite determinar con precisión qué versiones de cada dependencia se habrían resuelto en diferentes momentos. Segmentamos nuestro análisis para permitir un análisis directo de las actualizaciones relevantes para la seguridad (aquellas que introducen o corrigen vulnerabilidades) en comparación con el resto del ecosistema. Hemos observado que, cuando los desarrolladores utilizan Semver correctamente, las actualizaciones críticas, como los parches de seguridad, pueden llegar con bastante rapidez a las dependencias posteriores en la mayoría de los casos (90,09 %), pero esto no siempre ocurre, debido al uso imperfecto por parte de los desarrolladores tanto de las restricciones de versión de Semver como de los incrementos de los números de versión de Semver. Nuestros hallazgos tienen implicaciones tanto para los desarrolladores como para los investigadores. Ponemos nuestra infraestructura y nuestro conjunto de datos a disposición del público bajo una licencia de código abierto.