I have been a great fan of pushing the degree of automation to a limit. And as stated in this blog post: and as a follow up of 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.
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."Source: wikipedia
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)



