Nội dung trên trang web này đã được dịch bằng trí tuệ nhân tạo (AI) hoặc công nghệ dịch máy và có thể có lỗi.

Skip to content
Systems

Phân tích quy mô lớn về phiên bản ngữ nghĩa trong NPM

Author

Donald Pinckney (Đại học Northeastern), Federico Cassano (Đại học Northeastern), Arjun Guha (Đại học Northeastern và Roblox), và Jonathan Bell (Đại học Northeastern)

Venue

Kho phần mềm khai thác (MSR) 2023

Abstract

Kho gói NPM chứa hơn hai triệu gói và phục vụ hàng chục tỷ lượt tải xuống mỗi tuần. Hầu như mọi ứng dụng JavaScript đều sử dụng trình quản lý gói NPM để cài đặt các gói từ kho NPM. NPM dựa trên sơ đồ “phiên bản ngữ nghĩa” (‘semver’) để duy trì một hệ sinh thái lành mạnh, trong đó các bản sửa lỗi được phân phối một cách đáng tin cậy đến các gói hạ lưu càng nhanh càng tốt, trong khi các thay đổi gây gián đoạn yêu cầu sự can thiệp thủ công của những người quản lý gói hạ lưu. Để hiểu cách các nhà phát triển sử dụng semver, chúng tôi xây dựng một bộ dữ liệu chứa mọi phiên bản của mọi gói trên NPM và phân tích luồng cập nhật trong toàn bộ hệ sinh thái. Chúng tôi phát triển một công cụ giải quyết phụ thuộc có khả năng “du hành thời gian” cho NPM, cho phép xác định chính xác các phiên bản của từng phụ thuộc sẽ được giải quyết tại các thời điểm khác nhau. Chúng tôi phân chia phân tích để có thể so sánh trực tiếp các bản cập nhật liên quan đến bảo mật (những bản cập nhật giới thiệu hoặc vá lỗ hổng) với phần còn lại của hệ sinh thái. Chúng tôi phát hiện ra rằng khi các nhà phát triển sử dụng Semver đúng cách, các bản cập nhật quan trọng như bản vá bảo mật có thể lan truyền khá nhanh đến các phụ thuộc hạ lưu trong phần lớn các trường hợp (90,09%), nhưng điều này không phải lúc nào cũng xảy ra, do việc sử dụng không hoàn hảo của các nhà phát triển đối với cả các ràng buộc phiên bản Semver và việc tăng phiên bản Semver. Các phát hiện của chúng tôi có ý nghĩa đối với cả các nhà phát triển và nhà nghiên cứu. Chúng tôi cung cấp cơ sở hạ tầng và bộ dữ liệu của mình cho công chúng dưới giấy phép nguồn mở.