Using static analysis to support variability implementation decisions in C++

Samer A.L. Masri, Sarah Nadi, Matthew Gaudet, Xiaoli Liang, Robert W. Young

Research output: Chapter in Book/Report/Conference proceedingConference contribution


Eclipse OMR is an open-source C++ framework for building robust language runtimes. The OMR toolkit includes a dynamic Just-In-Time (JIT) compiler, a garbage collector, a platform abstraction library, and a set of developer tooling capabilities. To support the diverse languages and architectures targeted by the framework, OMR's variability implementation uses a combination of buildsystem variability and static polymorphism. That is, all implementation classes that depend on the selected language and architecture are decided at compile time. However, OMR developers now realize that the current variability design decision, specifically the static polymorphism implementation, has its drawbacks. They are considering using dynamic polymorphism instead of static polymorphism. Before making such a fundamental design change, however, it is crucial to collect function information and overload/override statistics about the current variability in the code base. In this paper, we present OMRStatistics, a static analysis tool that we built for OMR developers to help them collect this information. Specifically, OMRStatistics (1) visualizes the class hierarchy from OMR's current static polymorphic implementation, (2) visualizes the function overloads and overrides with their respective locations in the source code, (3) collects important information about the classes and functions, and (4) stores all the collected information in a database for further analysis. Our tool OMRStatistics allows OMR developers to make better design decisions on which variability extension points should be switched from static polymorphism to dynamic polymorphism.

Original languageEnglish (US)
Title of host publicationPDC 2018
Subtitle of host publicationParticipatory Design, Democracy and Politics - Proceedings of the 15th Participatory Design Conference
EditorsAnn Light, Yanki Lee, Yanki Lee, Julia Garde, Goetz Botterweck, Sarah Nadi, Anne Marie Kanstrup, Paulo Borba, John Vines, Thorsten Berger, Tomi Mannisto, Maurizio Teli, Eva Brandt, Keld Bodker, David Benavides
PublisherAssociation for Computing Machinery
Number of pages10
ISBN (Electronic)9781450363716, 9781450364645
StatePublished - Aug 20 2018
Event22nd International Systems and Software Product Line Conference, SPLC 2018 - Gothenburg, Sweden
Duration: Sep 10 2018Sep 14 2018

Publication series

NameACM International Conference Proceeding Series


Conference22nd International Systems and Software Product Line Conference, SPLC 2018


  • Build path variability
  • C++
  • Clang plugin
  • Dynamic polymorphism
  • Software variability analysis
  • Static analysis
  • Static polymorphism

ASJC Scopus subject areas

  • Software
  • Human-Computer Interaction
  • Computer Vision and Pattern Recognition
  • Computer Networks and Communications


Dive into the research topics of 'Using static analysis to support variability implementation decisions in C++'. Together they form a unique fingerprint.

Cite this