Proceedings of the Institute for System Programming of the RAS
RUS  ENG    JOURNALS   PEOPLE   ORGANISATIONS   CONFERENCES   SEMINARS   VIDEO LIBRARY   PACKAGE AMSBIB  
General information
Latest issue
Archive

Search papers
Search references

RSS
Latest issue
Current issues
Archive issues
What is RSS



Proceedings of ISP RAS:
Year:
Volume:
Issue:
Page:
Find






Personal entry:
Login:
Password:
Save password
Enter
Forgotten password?
Register


Proceedings of the Institute for System Programming of the RAS, 2017, Volume 29, Issue 3, Pages 57–74
DOI: https://doi.org/10.15514/ISPRAS-2017-29(3)-5
(Mi tisp222)
 

This article is cited in 7 scientific papers (total in 7 papers)

Supporting Java programming in the Svace static analyzer

A. P. Merkulova, S. A. Polyakova, A. A. Belevantsevba

a Institute for System Programming of the Russian Academy of Sciences
b Lomonosov Moscow State University
Full-text PDF (927 kB) Citations (7)
References:
Abstract: The paper is devoted to the works performed within the Svace static analysis tool to support Java language. First, the approach to intercept compilation process for transparently building the analyzer internal representation should be extended to cover usage of the Java compiler API that is popular in Ant and Maven tools. We achieve this goal with implementing our custom Java agent that instruments all calls to the compiler API and notifies the analyzer with the actual compilation parameters. Second, the modified Javac compiler builds the analyzer IR. The changes we made to the compiler include avoiding unnecessary bytecode duplication for easier mapping of bytecode instructions to source code and properly marking the code added by the compiler itself. Third, we discuss the process of bytecode translation to the Svace IR proper (which is a low-level 3-address IR akin to the LLVM IR). It is a straightforward code generation algorithm with further code cleanups that treats stack locations as local variables made possible by the fact that we know the maximum stack size consumed by the method. Finally, we discuss the devirtualization heuristics that assume we know the full class hierarchy and specific Java checkers including synchronization issue checkers. Experimental results obtained on Android 5 source code show that the checkers have high quality (more than 80% true positives). It can be seen that the general infrastructure for analysis and checkers implemented in Svace works well for the Java programming language with the adaptations described in the paper.
Keywords: static analysis, Java, bytecode, devirtualization.
Bibliographic databases:
Document Type: Article
Language: Russian
Citation: A. P. Merkulov, S. A. Polyakov, A. A. Belevantsev, “Supporting Java programming in the Svace static analyzer”, Proceedings of ISP RAS, 29:3 (2017), 57–74
Citation in format AMSBIB
\Bibitem{MerPolBel17}
\by A.~P.~Merkulov, S.~A.~Polyakov, A.~A.~Belevantsev
\paper Supporting Java programming in the Svace static analyzer
\jour Proceedings of ISP RAS
\yr 2017
\vol 29
\issue 3
\pages 57--74
\mathnet{http://mi.mathnet.ru/tisp222}
\crossref{https://doi.org/10.15514/ISPRAS-2017-29(3)-5}
\elib{https://elibrary.ru/item.asp?id=29438840}
Linking options:
  • https://www.mathnet.ru/eng/tisp222
  • https://www.mathnet.ru/eng/tisp/v29/i3/p57
  • This publication is cited in the following 7 articles:
    Citing articles in Google Scholar: Russian citations, English citations
    Related articles in Google Scholar: Russian articles, English articles
    Proceedings of the Institute for System Programming of the RAS
    Statistics & downloads:
    Abstract page:259
    Full-text PDF :233
    References:36
     
      Contact us:
     Terms of Use  Registration to the website  Logotypes © Steklov Mathematical Institute RAS, 2024