Die Inhalte dieser Website wurden mithilfe künstlicher Intelligenz (KI) oder maschineller Übersetzungstechnologie übersetzt und können Fehler enthalten.

Skip to content
Systems

Eine groß angelegte Analyse der semantischen Versionierung in NPM

Author

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

Venue

Mining Software Repositories (MSR) 2023

Abstract

Das NPM-Paket-Repository enthält über zwei Millionen Pakete und verzeichnet wöchentlich mehrere zehn Milliarden Downloads. Nahezu jede einzelne JavaScript-Anwendung nutzt den NPM-Paketmanager, um Pakete aus dem NPM-Repository zu installieren. NPM stützt sich auf ein „Semantic Versioning“-Schema („Semver“), um ein gesundes Ökosystem aufrechtzuerhalten, in dem Bugfixes so schnell wie möglich zuverlässig an nachgelagerte Pakete weitergegeben werden, während grundlegende Änderungen ein manuelles Eingreifen der Betreuer nachgelagerter Pakete erfordern. Um zu verstehen, wie Entwickler semver nutzen, erstellen wir einen Datensatz, der jede Version jedes Pakets auf NPM enthält, und analysieren den Fluss von Updates im gesamten Ökosystem. Wir entwickeln einen zeitreisenden Abhängigkeitslöser für NPM, der es uns ermöglicht, genau zu bestimmen, welche Versionen jeder Abhängigkeit zu verschiedenen Zeitpunkten aufgelöst worden wären. Wir segmentieren unsere Analyse, um eine direkte Untersuchung sicherheitsrelevanter Updates (solcher, die Schwachstellen einführen oder beheben) im Vergleich zum Rest des Ökosystems zu ermöglichen. Wir stellen fest, dass bei korrekter Anwendung von Semver durch Entwickler kritische Updates wie Sicherheitspatches in den meisten Fällen (90,09 %) recht schnell zu nachgelagerten Abhängigkeiten gelangen können; dies ist jedoch nicht immer der Fall, da Entwickler sowohl die Semver-Versionsbeschränkungen als auch die Semver-Versionsinkremente nicht immer korrekt anwenden. Unsere Ergebnisse haben Auswirkungen sowohl für Entwickler als auch für Forscher. Wir stellen unsere Infrastruktur und unseren Datensatz unter einer Open-Source-Lizenz öffentlich zur Verfügung.