De content op deze site is vertaald met behulp van kunstmatige intelligentie (AI) of machinevertalingstechnologie en kan fouten bevatten.

Skip to content
Systems

Flexibel en optimaal afhankelijkheidsbeheer via Max-SMT

Author

Donald Pinckney (Northeastern), Federico Cassano (Northeastern), Arjun Guha, Jonathan Bell (Northeastern), Massimiliano Culpo (zelfstandig), Todd Gamblin (Lawrence Livermore National Lab)

Venue

IEEE/ACM International Conference on Software Engineering (ICSE), 2023

Abstract

Pakketbeheerders zoals NPM zijn essentieel geworden voor softwareontwikkeling. De NPM-repository bevat meer dan 2 miljoen pakketten en verwerkt wekelijks meer dan 43 miljard downloads. Helaas heeft de NPM-afhankelijkheidsoplosser verschillende tekortkomingen. 1) NPM is gulzig en slaagt er vaak niet in de nieuwste versies van afhankelijkheden te installeren; 2) Het algoritme van NPM leidt tot dubbele afhankelijkheden en opgeblazen code, wat vooral slecht is voor webapplicaties die de codegrootte moeten minimaliseren; 3) Het algoritme van NPM voor het verhelpen van kwetsbaarheden is ook gulzig en kan zelfs nieuwe kwetsbaarheden introduceren; en 4) Het vermogen van NPM om afhankelijkheden te dupliceren kan stateful frameworks verstoren en vereist veel zorg om te omzeilen. Hoewel bestaande tools deze problemen proberen aan te pakken, zijn ze ofwel kwetsbaar, vertrouwen ze op achteraf aangebrachte wijzigingen in de afhankelijkheidsboom, garanderen ze geen optimaliteit, of zijn ze niet samen te stellen. We presenteren Pacsolve, een uniform framework en implementatie voor het oplossen van afhankelijkheden dat aanpasbare beperkingen en optimalisatiedoelen mogelijk maakt. We gebruiken Pacsolve om Maxnpm te bouwen, een complete, drop-in vervanging voor NPM, die ontwikkelaars in staat stelt meerdere doelstellingen te combineren bij het installeren van afhankelijkheden. We evalueren Maxnpm met een grote steekproef van pakketten uit het NPM-ecosysteem en laten zien dat het: 1) in 33% van de gevallen meer kwetsbaarheden in afhankelijkheden kan verminderen dan de audittool van NPM; 2) in 14% van de gevallen nieuwere afhankelijkheden kiest dan NPM; en 3) in 21% van de gevallen minder afhankelijkheden kiest dan NPM. Al onze code en gegevens zijn open en beschikbaar.