A Large-Scale Study On Repetitiveness, Containment, and Composability of Routines in Open-Source Projects

被引:0
|
作者
Anh Tuan Nguyen [1 ]
Hoan Anh Nguyen [1 ]
Nguyen, Tien N. [1 ]
机构
[1] Iowa State Univ, ECpE Dept, Ames, IA 50011 USA
关键词
Repetitiveness; Containment; Composability; Code Reuse; SOFTWARE;
D O I
10.1145/2901739.2901759
中图分类号
TP [自动化技术、计算机技术];
学科分类号
0812 ;
摘要
Source code in software systems has been shown to have a good degree of repetitiveness at the lexical, syntactical, and API usage levels. This paper presents a large-scale study on the repetitiveness, containment, and composability of source code at the semantic level. We collected a large dataset consisting of 9,224 Java projects with 2.79M class files, 17.54M methods with 187M SLOCs. For each method in a project, we build the program dependency graph (PDG) to represent a routine, and compare PDGs with one another as well as the subgraphs within them. We found that within a project, 12.1% of the routines are repeated, and most of them repeat from 2-7 times. As entirety, the routines are quite project-specific with only 3.3% of them exactly repeating in 1-4 other projects with at most 8 times. We also found that 26.1% and 7.27% of the routines are contained in other routine(s), i.e., implemented as part of other routine( s) elsewhere within a project and in other projects, respectively. Except for trivial routines, their repetitiveness and containment is independent of their complexity. Defining a subroutine via a per-variable slicing subgraph in a PDG, we found that 14.3% of all routines have all of their subroutines repeated. A high percentage of subroutines in a routine can be found/reused elsewhere. We collected 8,764,971 unique subroutines (with 323,564 unique JDK subroutines) as basic units for code searching/synthesis. We also provide practical implications of our findings to automated tools.
引用
收藏
页码:362 / 373
页数:12
相关论文
共 50 条
  • [41] SGL: A domain-specific language for large-scale analysis of open-source code
    Foo, Darius
    Yi, Ang Ming
    Yeo, Jason
    Sharma, Asankhaya
    2018 IEEE CYBERSECURITY DEVELOPMENT CONFERENCE (SECDEV 2018), 2018, : 61 - 68
  • [42] Empowering OCL research: a large-scale corpus of open-source data from GitHub
    Josh G. M. Mengerink
    Jeroen Noten
    Alexander Serebrenik
    Empirical Software Engineering, 2019, 24 : 1574 - 1609
  • [43] Empowering OCL research: a large-scale corpus of open-source data from GitHub
    Mengerink, Josh G. M.
    Noten, Jeroen
    Serebrenik, Alexander
    EMPIRICAL SOFTWARE ENGINEERING, 2019, 24 (03) : 1574 - 1609
  • [44] Leveraging Human Oversight and Intervention in Large-Scale Parallel Processing of Open-source Data
    Casini, Enrico
    Suri, Niranjan
    Bradshaw, Jeffrey M.
    NEXT-GENERATION ANALYST III, 2015, 9499
  • [45] Exploiting Open-source Projects to Study Software Design
    Fuhrman, Christopher P.
    INFORMATICS IN EDUCATION, 2007, 6 (01): : 53 - 66
  • [46] Disseminating Architectural Knowledge on Open-Source Projects A Case Study of the Book "Architecture of Open-Source Applications"
    Robillard, Martin P.
    Medvidovic, Nenad
    2016 IEEE/ACM 38TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE), 2016, : 476 - 487
  • [47] Verification in the light and large: Large-scale verification for fast-moving open source C projects
    Breuer, Peter T.
    Pickin, Simon
    31ST IEEE SOFTWARE ENGINEERING WORKSHOP, PROCEEDINGS, 2007, : 246 - 255
  • [48] FOUNTAIN: A JAVA open-source package to assist large sequencing projects
    Jean-Marie Buerstedde
    Florian Prill
    BMC Bioinformatics, 2
  • [49] Identifying and characterizing change-prone classes in two large-scale open-source products
    Koru, A. Guenes
    Liu, Hongfang
    JOURNAL OF SYSTEMS AND SOFTWARE, 2007, 80 (01) : 63 - 73
  • [50] Interpreting Large-Scale Attacks Against Open-Source Medical Systems Using eXplainable AI
    Lu, Wei
    COMPLEX, INTELLIGENT AND SOFTWARE INTENSIVE SYSTEMS, CISIS-2024, 2024, 87 : 60 - 71