In the Norwegian/Brazilian bilateral project “Modern Refactoring” HVL and the Federal University of Campina Grande, Brazil (UFCG) are cooperating on studying software development. Here, we want to analyse the impact of changes to C and C++ programs: these programs contain often many #ifdefs, which make testing of all possible combinations of enabled features impossible. For example, the Linux kernel uses more than 1000 of those flags, and in principle every possible combination of flags would have to be tested!
In this Bachelor project, the idea is to integrate an existing tool that identifies the affected flags by a change commited to git or svn with the Jenkins Continuous Integration system: you will develop a Jenkins plugin which gets activated on every commit, and calls the impact-analyser (an existing piece of Java-software). This analyser produces as output all the different combinations of features that should be re-tested after the commit. You will use this output to trigger compilation (usually through the Makefile) of the different combinations, and collect any compilation errors — each of those errors means that this particular combination of flags does not result in compiled code, probably as a result of the latest commit. Your plugin will then visualize those results within the Jenkins web-interface, so that the developers can see for which combination the commit has broken the code, and possibly fix it in the future.
You have the option of making your plugin available as an open-source project. We will have regular video-meetings with the partners in Brazil, and students get the possibility to participate in project meetings throughout 2018. There will also be the possibility of continuing with related projects in a Master thesis afterwards.
- “A change-centric approach to compile configurable systems with #ifdefs”, L. Braz, R. Gheyi, M. Mongiovi, M. Ribeiro, F. Medeiros, L. Teixeira, GPCE 2016.
Supported through the SIU/CAPES bilateral project “Modern Refactoring” 2017/18