O conteúdo deste site foi traduzido usando inteligência artificial (IA) ou tecnologia de tradução automática e pode conter erros.

Skip to content
Systems

Uma análise em grande escala do controle de versão semântico no NPM

Author

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

Venue

Mining Software Repositories (MSR) 2023

Abstract

O repositório de pacotes NPM contém mais de dois milhões de pacotes e atende a dezenas de bilhões de downloads por semana. Quase todos os aplicativos JavaScript utilizam o gerenciador de pacotes NPM para instalar pacotes do repositório NPM. O NPM se baseia em um esquema de “versão semântica” (‘semver’) para manter um ecossistema saudável, no qual correções de bugs são entregues de forma confiável aos pacotes downstream o mais rápido possível, enquanto alterações compatíveis exigem intervenção manual por parte dos mantenedores dos pacotes downstream. Para entender como os desenvolvedores usam o semver, criamos um conjunto de dados contendo todas as versões de todos os pacotes no NPM e analisamos o fluxo de atualizações em todo o ecossistema. Criamos um resolvedor de dependências com viagem no tempo para o NPM, o que nos permite determinar com precisão quais versões de cada dependência teriam sido resolvidas em diferentes momentos. Segmentamos nossa análise para permitir uma análise direta das atualizações relevantes para a segurança (aquelas que introduzem ou corrigem vulnerabilidades) em comparação com o restante do ecossistema. Constatamos que, quando os desenvolvedores utilizam o semver corretamente, atualizações críticas, como correções de segurança, podem fluir rapidamente para dependências a jusante na maioria dos casos (90,09%), mas isso nem sempre ocorre, devido ao uso imperfeito, por parte dos desenvolvedores, tanto das restrições de versão do semver quanto dos incrementos nos números de versão. Nossas descobertas têm implicações tanto para desenvolvedores quanto para pesquisadores. Disponibilizamos publicamente nossa infraestrutura e nosso conjunto de dados sob uma licença de código aberto.