An Efficient and Scalable Platform for Java']Java Source Code Analysis Using Overlaid Graph Representations

被引:18
|
作者
Rodriguez-Prieto, Oscar [1 ]
Mycroft, Alan [2 ]
Ortin, Francisco [1 ,3 ]
机构
[1] Univ Oviedo, Dept Comp Sci, Oviedo 33007, Spain
[2] Univ Cambridge, Dept Comp Sci & Technol, Cambridge CB2 1TN, England
[3] Cork Inst Technol, Dept Comp Sci, Cork T12 P928, Ireland
关键词
!text type='Java']Java[!/text; Syntactics; Semantics; Tools; Databases; Ciphers; Database languages; Code analysis; graph database; coding guidelines; declarative query language; program representation; Cypher; Neo4j; STATIC ANALYSIS; LANGUAGE;
D O I
10.1109/ACCESS.2020.2987631
中图分类号
TP [自动化技术、计算机技术];
学科分类号
0812 ;
摘要
Although source code programs are commonly written as textual information, they enclose syntactic and semantic information that is usually represented as graphs. This information is used for many different purposes, such as static program analysis, advanced code search, coding guideline checking, software metrics computation, and extraction of semantic and syntactic information to create predictive models. Most of the existing systems that provide these kinds of services are designed ad hoc for the particular purpose they are aimed at. For this reason, we created ProgQuery, a platform to allow users to write their own Java program analyses in a declarative fashion, using graph representations. We modify the Java compiler to compute seven syntactic and semantic representations, and store them in a Neo4j graph database. Such representations are overlaid, meaning that syntactic and semantic nodes of the different graphs are interconnected to allow combining different kinds of information in the queries/analyses. We evaluate ProgQuery and compare it to the related systems. Our platform outperforms the other systems in analysis time, and scales better to program sizes and analysis complexity. Moreover, the queries coded show that ProgQuery is more expressive than the other approaches. The additional information stored by ProgQuery increases the database size and associated insertion time, but these increases are significantly lower than the query/analysis performance gains obtained.
引用
收藏
页码:72239 / 72260
页数:22
相关论文
共 50 条
  • [41] Extracting ontological knowledge from Java']Java source code using Hidden Markov Models
    Jiomekong, Azanzi
    Camara, Gaoussou
    Tchuente, Maurice
    OPEN COMPUTER SCIENCE, 2019, 9 (01) : 181 - 199
  • [42] Source Code Features and their Dependencies: An Aggregative Statistical Analysis on Open-Source Java']Java Software Systems
    Toosi, Farshad Ghassemi
    APPLIED COMPUTER SYSTEMS, 2023, 28 (02) : 221 - 231
  • [43] Approach to Improving Java']Java Source Code Considering Non-compliance with a Java']Java Style Guide
    Becker, Pablo
    Olsina, Luis
    Fernanda Papa, Maria
    COMPUTER SCIENCE - CACIC 2022, 2023, 1778 : 123 - 139
  • [44] FastMPJ: a scalable and efficient Java']Java message-passing library
    Exposito, Roberto R.
    Ramos, Sabela
    Taboada, Guillermo L.
    Tourino, Juan
    Doallo, Ramon
    CLUSTER COMPUTING-THE JOURNAL OF NETWORKS SOFTWARE TOOLS AND APPLICATIONS, 2014, 17 (03): : 1031 - 1050
  • [45] Towards Detecting Inconsistent Comments in Java']Java Source Code Automatically
    Stulova, Nataliia
    Blasi, Arianna
    Gorla, Alessandra
    Nierstrasz, Oscar
    2020 20TH IEEE INTERNATIONAL WORKING CONFERENCE ON SOURCE CODE ANALYSIS AND MANIPULATION (SCAM 2020), 2020, : 65 - 69
  • [46] Java']Java Source Code Protection Based on JNI and AES Algorithm
    Hong, Zhao
    Nan, Guo
    2017 IEEE INTERNATIONAL CONFERENCE ON COMPUTATIONAL SCIENCE AND ENGINEERING (CSE) AND IEEE/IFIP INTERNATIONAL CONFERENCE ON EMBEDDED AND UBIQUITOUS COMPUTING (EUC), VOL 1, 2017, : 846 - 849
  • [47] From Lisp S-Expressions to Java']Java Source Code
    Leitao, Antonio Menezes
    COMPUTER SCIENCE AND INFORMATION SYSTEMS, 2008, 5 (02) : 19 - 38
  • [48] Model-Driven Fault Injection in Java']Java Source Code
    Rodrigues Jr, Elder
    Montecchi, Leonardo
    Ceccarelli, Andrea
    2020 IEEE 31ST INTERNATIONAL SYMPOSIUM ON SOFTWARE RELIABILITY ENGINEERING (ISSRE 2020), 2020, : 414 - 425
  • [49] On the Nature of Code Cloning in Open-Source Java']Java Projects
    Golubev, Yaroslav
    Bryksin, Timofey
    2021 IEEE 15TH INTERNATIONAL WORKSHOP ON SOFTWARE CLONES, IWSC 2021, 2021, : 22 - 28
  • [50] SPOON: A library for implementing analyses and transformations of Java']Java source code
    Pawlak, Renaud
    Monperrus, Martin
    Petitprez, Nicolas
    Noguera, Carlos
    Seinturier, Lionel
    SOFTWARE-PRACTICE & EXPERIENCE, 2016, 46 (09): : 1155 - 1179