I contenuti di questo sito sono stati tradotti mediante intelligenza artificiale (IA) o tecnologia di traduzione automatica e potrebbero contenere errori.

Skip to content
Systems

Analisi su larga scala del versioning semantico in NPM

Author

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

Venue

Mining Software Repositories (MSR) 2023

Abstract

Il repository di pacchetti NPM contiene oltre due milioni di pacchetti e gestisce decine di miliardi di download a settimana. Quasi tutte le applicazioni JavaScript utilizzano il gestore di pacchetti NPM per installare pacchetti dal repository NPM. NPM si basa su uno schema di "versioni semantiche" ("semver") per mantenere un ecosistema sano, in cui le correzioni di bug vengono fornite in modo affidabile ai pacchetti a valle il più rapidamente possibile, mentre le modifiche sostanziali richiedono l'intervento manuale da parte dei manutentori dei pacchetti a valle. Per capire come gli sviluppatori utilizzano semver, abbiamo creato un set di dati contenente ogni versione di ogni pacchetto su NPM e analizzato il flusso degli aggiornamenti nell'ecosistema. Abbiamo realizzato un risolutore di dipendenze "time-travelling" per NPM, che ci permette di determinare con precisione quali versioni di ciascuna dipendenza sarebbero state risolte in momenti diversi. Abbiamo segmentato la nostra analisi per consentire un'analisi diretta degli aggiornamenti rilevanti per la sicurezza (quelli che introducono o correggono vulnerabilità) rispetto al resto dell'ecosistema. Abbiamo riscontrato che quando gli sviluppatori utilizzano correttamente Semver, gli aggiornamenti critici come le patch di sicurezza possono fluire abbastanza rapidamente verso le dipendenze a valle nella maggior parte dei casi (90,09%), ma ciò non sempre avviene, a causa dell'uso imperfetto da parte degli sviluppatori sia dei vincoli di versione Semver che degli incrementi del numero di versione Semver. I nostri risultati hanno implicazioni sia per gli sviluppatori che per i ricercatori. Rendiamo la nostra infrastruttura e il nostro set di dati disponibili al pubblico sotto una licenza open source.