BBROEKSEMA ARE YOU DEAD?? NO MAN!!!
I just have been busy finishing my master. Which, I can say, is progressing nicely. I’m winding up my last two courses and preparing for my move to Berlin, where I’ll do my master thesis research at KDAB.
However, that’s not what I wanted to blog about. I wanted to write an update about the work I’m doing on the english breakfast network, krazy2 and the integration of a C++ parser in the framework. Due to one of the courses I followed I got interested in software maintenance, evolution and quality. Within KDE we have all kind of policies and measures in place to guarantee some kind of quality like coding standards, commit policies, program lifetime policies and what not more. Another framework we also have is the englishbreakfastnetwork which most of you probably know by now.
EBN shows the results of several tools that are developed like krazy2 and documentation sanitzers, which are ran against the KDE code base. So, what’s the actual use of this? Most of the checks are not that advanced. In this  paper it is even concluded that the presence of public coding standards and shared practices does not seem to have a significant influence on the quality in comparison to projects where this isn’t the case. So what is the use of krazy2/ebn in it’s current form than? I think that its main function, in its current form, is to provide a good point for starters who want to help out with easy coding/documentation tasks.
However I think that we can get more out of the EBN framework. To get more we also need to store a bit more. And that’s one of the things I’m currently working on. Currently a new tool is in development. It is (becomming) a framework which can run different tools on a software component. It’s a bit like the krazy2ebn script, but more flexible as it will support not only krazy2 but also other checkers to be plugged in. The framework will store not only results of the checkers (and their plugins) in a database but also the versions of the checkers/plugins that are used for a specific run. The main differences in storing the results will lie in the fact that the new framework will store detailed result information of all runs done. Storing all this information will enable us to not only see the current state (in terms of issues found by the tools) of the software, but will also enable us to relate checker evolution to the quality. It will also be possible to search for modules/submodules that shows tendency of bitrot (e.g. modules which have only a growing amount of issues over a specified period). This whole framework is in an early state and comments/suggestions are of course welcome.
Another thing I’ve been working on with a collegue student is integrating a C++ parser into the quality framework. I’ve played with several parsers and currently I’m using SolidFX from SolidSource IT . This is a commercial parser but we can use it for free on EBN, due to the fact that one of my profs at the university is the author of it. It has some really nice features like:
It does full syntax analysis of several C/C++ dialects (including the one(s) supported by the gcc compiler suite); own preprocessing; and an almost full semantic analysis along the C++
Standard, including most of the template instantiation/specialization stuff. Tested on things like Boost, Python, Coin3D, wxWidgets, parts of the Linux kernel, also Windows code. There’s also a mechanism for error recovery in case of lexer/parser/type-checker errors due to wrong code/missing includes.
Currently we’re Implementing a check using this parser which checks if a class overrides non-virtual methods of (one of its) base classes. We’re interested in implementing other checks, of which you think are useful and require a full fledged parser. So feel free to leave a comment or drop me an email. Please describe precisely what you want to check and also why. I’m also idling in #ebn btw. That’s all for now folks, thanks for reading.
 From the author, prof. Alex Telea