Другие журналы

scientific edition of Bauman MSTU

SCIENCE & EDUCATION

Bauman Moscow State Technical University.   El № FS 77 - 48211.   ISSN 1994-0408

Implementing Inter-Unit Analysis for C And C++ Languages in a Source-Based Static Code Analyzer

# 09, September 2015
DOI: 10.7463/0915.0812271
Article file: SE-BMSTU...o159.pdf (379.75Kb)
author: A.V. Sidorin1,2,*

The proliferation of automated testing capabilities arises a need for thorough testing of large software systems, including system inter-component interfaces.  The objective of this research is to build a method for inter-procedural inter-unit analysis, which allows us to analyse large and complex software systems including multi-architecture projects (like Android OS) as well as to support complex assembly systems of projects. Since the selected Clang Static Analyzer uses source code directly as input data, we need to develop a special technique to enable inter-unit analysis for such analyzer. This problem is of special nature because of C and C++ language features that assume and encourage the separate compilation of project files. We describe the build and analysis system that was implemented around Clang Static Analyzer to enable inter-unit analysis and consider problems related to support of complex projects. We also consider the task of merging abstract source trees of translation units and its related problems such as handling conflicting definitions, complex build systems and complex projects support, including support for multi-architecture projects, with examples. We consider both issues related to language design and human-related mistakes (that may be intentional). We describe some heuristics that were used for this work to make the merging process faster. The developed system was tested using Android OS as the input to show it is applicable even for such complicated projects. This system does not depend on the inter-procedural analysis method and allows the arbitrary change of its algorithm.

References
  1. Clang Static Analyzer: website. Available at: http://clang-analyzer.llvm.org, accessed 12.06.2015.
  2. clang: a C language family frontend for LLVM. The LLVM Project: website. Available at: http://clang.llvm.org, accessed 12.06.2015.
  3. The LLVM compiler infrastructure. The LLVM Project: website. Available at: http://llvm.org/, accessed 12.06.2015.
  4. Ivannikov V.P., Belevantsev A.A., Borodin A.E., Ignatiev V.N., Zhurikhin D.M., Avetisyan A.I., Leonov M.I. Static analyzer Svace for finding of defects in program source code. Trudy Instituta sistemnogo programmirovaniya RAN = Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS) , 2014, vol. 26, no. 1, pp. 231-250. (in Russian).
  5. Almossawi A., Lim K., Sinha T. Analysis tool evaluation: Coverity Prevent. Final Report . Pittsburgh, PA, Carnegie Mellon University, 2006. 19 p.
  6. A Massively Spiffy Yet Delicately Unobtrusive Compression Library: webcite. Available at: http://www.zlib.net, accessed 25.07.2015. 
  7. Smith R. Working Draft, Standard for Programming Language C++. ISO/IEC N4296, 2014. 1368~p. Available at: https://isocpp.org/files/papers/n4296.pdf, accessed 01.09.2015.
Поделиться:
 
SEARCH
 
elibrary crossref ulrichsweb neicon rusycon
Photos
 
Events
 
News



Authors
Press-releases
Library
Conferences
About Project
Rambler's Top100
Phone: +7 (915) 336-07-65 (строго: среда; пятница c 11-00 до 17-00)
  RSS
© 2003-2024 «Наука и образование»
Перепечатка материалов журнала без согласования с редакцией запрещена
 Phone: +7 (915) 336-07-65 (строго: среда; пятница c 11-00 до 17-00)