OSGi dependenciesNovember 25th, 2008 • 1 Comment
I have been a great fan of pushing the degree of automation to a limit. And as stated in this blog post: Software engineering and as a follow up of OSGi dependencies and OSGI Best practices: I now present the consistency and OSGi dependency checker 🙂
The setting is a multi modul maven project for a OSGI based application – with all the nice maven features turned on (reports (all kind off), scm, issue tracker, mailinglist, etc) – so to speak of a complete Software Development Environment.
The broken window principal says:
"Consider a building with a few broken windows. If the windows are not repaired, the tendency is for vandals to break a few more windows. Eventually, they may even break into the building, and if it's unoccupied, perhaps become squatters or light fires inside.Source: wikipedia
Or consider a sidewalk. Some litter accumulates. Soon, more litter accumulates. Eventually, people even start leaving bags of trash from take-out restaurants there or breaking into cars."
And to prevent the broken window principal I implemented a small tool doing some of this stuff:
- Checks what kind of dependencies are available between the OSGi Bundles
- Detects cycles (which is bad :-))
- Looks for unused imports and exports
As a result you get e.g. a report and a graph.
The second part of the tool is maybe even nicer 🙂 Beside all the good reports and tools you can use like findbugs, pmd, checkstyle, and others; sometimes I’m missing the very basic stuff. I implemented some consistency checks which can check for the following stuff, and verify the consistency of your project:
- Look if all needed Unittests are available
- Look for old unused code
- Look for old empty packages
- Test if the 80% code coverage mark is reached by the Unittest (and if methods are tested for sanity, failure, and success)
- Look for files which are not included in the binary build (they might be obsolete)
You could integrate those checks in the build systems or even force them on checkin like svnchecker does. Or you can use it to generate reports.