82% code trên GitHub là sao chép file đã có sẵn

Họ đã nghiên cứu 4,5 triệu dự án gốc (original) trên GitHub, chứa tất că 482 triệu tập tin. Trong đó chỉ có 85 triệu, tương đương 17,63% là bản gốc.

Các dự án JavaScript hầu hết đều chứa file sao chép

Nghiên cứu chỉ xem xét các dự án viết bằng C++, Java, JavaScript và Python. Trong đó JavaScript có tới 94% file là clone giống hệt bản gốc (dựa trên file hash). C++ đứng thứ 2 với 73%, sau đó là Python và Java, lần lượt là 71% và 40%. Các nhà nghiên cứu cũng xem xét cả nội dung của tập tin (dựa trên token hash) nhưng kết quả cũng gần giống.

Kết quả về số lượng tập tin bị sao chép trên GitHub
Kết quả về số lượng tập tin bị sao chép trên GitHub

Nguyên nhân là do NPM

NPM là một công cụ quản lý thư viện (package hay module) cho cả client và máy chủ trong các dự án JavaScript. NPM hiện là công cụ quản lý package lớn nhất thế giới với hơn 350.000 thư viện, hơn gấp đôi công cụ thứ 2 - Apache Maven.

NPM chứa nhiều thư viện hữu ích nên các nhà phát triển sử dụng nhiều. Do đó, họ nhập nhiều thư viện của dự án JavaScript hơn các ngôn ngữ khác, và số code dùng lại cũng nhiều hơn.

Xem thêm: Microsoft và GitHub hợp tác đưa hệ thống file ảo Git lên macOS và Linux

Nghiên cứu về code dùng lại quan trọng cho các nghiên cứu khác

“Git, hệ thống kiểm soát nguồn trên GitHub được xây dựng để khuyến khích việc “gắp” (sao chép) dự án. Nhưng nhiều code bị sao chép không qua cơ chế gắp và là copy - paste tập tin và thậm chí là toàn bộ thư viện”.

Kết quả nghiên cứu này quan trọng bởi “thứ nhất, có lẽ GitHub nên thu lại quy mô dữ liệu thực sự của mình và thứ hai, ngày càng nhiều nghiên cứu dùng số lượng rất lớn các dự án mã nguồn mở có sẵn trên GitHub”. Việc sao chép code như vậy sẽ ảnh hưởng tới kết quả các nghiên cứu này. Dữ liệu thô về nghiên cứu này bạn có thể tải về tại đây.http://mondego.ics.uci.edu/projects/dejavu/ Còn đây là toàn bộ nghiên cứu. http://janvitek.org/pubs/oopsla17b.pdfhttps://dl.acm.org/citation.cfm?doid=3152284.3133908

Thứ Ba, 05/12/2017 15:47
31 👨 398
0 Bình luận
Sắp xếp theo
    ❖ Chuyện công nghệ