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 条
  • [31] JANPA: An open source cross-platform implementation of the Natural Population Analysis on the Java']Java platform
    Nikolaienko, Iymofii Y.
    Bulavin, Leonid A.
    Hovorun, Dmytro M.
    COMPUTATIONAL AND THEORETICAL CHEMISTRY, 2014, 1050 : 15 - 22
  • [32] A Tool for Automated Certification of Java']Java Source Code in Maude
    Alba-Castro, M.
    Alpuente, M.
    Escobar, S.
    Ojeda, P.
    Romero, D.
    ELECTRONIC NOTES IN THEORETICAL COMPUTER SCIENCE, 2009, 248 : 19 - 29
  • [33] JConstHide: A Framework for Java']Java Source Code Constant Hiding
    Sivadasan, Praveen
    Lal, P. Sojan
    Sivadasan, Naveen
    JOURNAL OF INFORMATION ASSURANCE AND SECURITY, 2009, 4 (01): : 21 - 29
  • [34] Automatic Source Code Summarization of Context for Java']Java Methods
    McBurney, Paul W.
    McMillan, Collin
    IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 2016, 42 (02) : 103 - 119
  • [35] Automatic certification of Java']Java source code in rewriting logic
    Alba-Castro, Mauricio
    Alpuente, Maria
    Escobar, Santiago
    FORMAL METHODS FOR INDUSTRIAL CRITICAL SYSTEMS, 2008, 4916 : 200 - 217
  • [36] AUTOMATIC DETECTING AND REMOVING CLONES IN JAVA']JAVA SOURCE CODE
    Bublik, Tomas
    Virius, Miroslav
    SOFTWARE DEVELOPMENT 2011, 2011, : 10 - 18
  • [37] Object-oriented processing of Java']Java source code
    Eichelberger, H
    von Gudenberg, RW
    SOFTWARE-PRACTICE & EXPERIENCE, 2004, 34 (12): : 1157 - 1185
  • [38] ESC/Java']Java2 as a tool to ensure security in the source code of Java']Java applications
    Schubert, Aleksy
    Chrzaszcz, Jacek
    SOFTWARE ENGINEERING TECHNIQUES: DESIGN FOR QUALITY, 2006, 227 : 337 - +
  • [39] Parallel graph coloring using JAVA']JAVA
    Umland, T
    ARCHITECTURES, LANGUAGES AND PATTERNS FOR PARALLEL AND DISTRIBUTED APPLICATIONS, 1998, 52 : 211 - 217
  • [40] Efficient coroutines for the Java platform
    Johannes Kepler University Linz, Austria
    不详
    Proc. Int. Conf. Princ. Pract. Program. Java, PPPJ, (20-28):