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, 2015, Volume 27, Issue 2, Pages 53–64
DOI: https://doi.org/10.15514/ISPRAS-2015-27(2)-4
(Mi tisp122)
 

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

Analyzing C/C++ code entities and relations for program understanding

A. Belevantsev, E. Velesevich

Institute for System Programming of the Russian Academy of Sciences
Full-text PDF (232 kB) Citations (2)
References:
Abstract: This paper describes the static analysis tool for finding program entities, their metrics, and relations between entities. Program entities are files/directories (physical structure) and classes/functions/methods/global variables (logical structure). Relations are connections between entities, such as calls, inheritance, aggregation, reading/writing, inclusion. The need for constructing such a tool arises from the program understanding problems. The basis of these problems’ solutions should be automatic extraction of necessary data from program source code. The tool implementing this extraction should support all C/C++ constructs and should scale to millions lines of code to be applicable to real life applications.
In the paper we concentrate on the methods for developing such a tool for C/C++ languages based on open source components: LLVM/Clang compiler infrastructure, GNU Binutils linker and archiver. The final whole-program analysis works on the LLVM internal representation (bitcode) level, so it is necessary to save the additional source level data in the bitcode files that is usually lost during compilation. We have made more than 400 patches to the Clang compiler in order to support this additional data storing and also to support many varieties of C/C++ dialects. For the main analyzer, the central component is a kind of linker that unifies the collected data for the same entities used in different program components (like an application and a library it uses). The correct entities unification performed by the linker allows to trace component relations more precisely.
Finally, we briefly present the results of testing our tool on Android OS.
Keywords: program understanding, LLVM compiler, static analysis, code metrics.
Funding agency Grant number
Russian Foundation for Basic Research 14-01-31363
Bibliographic databases:
Document Type: Article
Language: Russian
Citation: A. Belevantsev, E. Velesevich, “Analyzing C/C++ code entities and relations for program understanding”, Proceedings of ISP RAS, 27:2 (2015), 53–64
Citation in format AMSBIB
\Bibitem{BelVel15}
\by A.~Belevantsev, E.~Velesevich
\paper Analyzing C/C++ code entities and relations for program understanding
\jour Proceedings of ISP RAS
\yr 2015
\vol 27
\issue 2
\pages 53--64
\mathnet{http://mi.mathnet.ru/tisp122}
\crossref{https://doi.org/10.15514/ISPRAS-2015-27(2)-4}
\elib{https://elibrary.ru/item.asp?id=23827846}
Linking options:
  • https://www.mathnet.ru/eng/tisp122
  • https://www.mathnet.ru/eng/tisp/v27/i2/p53
  • This publication is cited in the following 2 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:234
    Full-text PDF :184
    References:37
     
      Contact us:
     Terms of Use  Registration to the website  Logotypes © Steklov Mathematical Institute RAS, 2024