Tuesday, November 13, 2007

metrics and clouds and other cool ideas

so, i've talked about atlassian's clover metrics before:
two roads and in metrics, metrics, metrics

so, you would think i should move on to another subject. but i won't. so too bad. haha. anyway, i found this on the clover website:

here is what they say about that graphic:

The Project Risks Cloud highlights those classes that are the most complex, yet are the least covered by your tests. The larger and redder the class, the greater the risk that class poses for your project.
This Cloud highlights the "low hanging coverage fruit" of your project. You will achieve the greatest increase in overall project coverage by covering the largest, reddest classes first.

wow.. okay that is a cool idea; metrics clouds. but, again i think they (atlassian) is trapped by limitations of their framework and infrastructure. just doing coverage to identify low hanging fruit is probably really really basic, not to mention potentially meaningless and might actually do more harm than good. its like doing Priority Ranked Inspection with just one metric. nevertheless, the cloud idea is a good one. and yet again, hackystat could do much better.


pte said...

The thing about any metric (even when they appear as a pretty visualization) is that they don't prove anything in themselves. That is they can highlight potentially interesting/risky/good/bad/whatever things but are rarely authoritative.

Note that Clover provides two clouds that highlight different things. The Project Risks cloud and the Quick Wins, often referred to as the developer cloud and the manager cloud. Used with their intended purpose in mind they are pretty good at showing you where there is "relatively untested complex code" or "the most uncovered statements".

Coverage != Quality it is valid indicator though. That said Clover 2 goes a long way to making coverage more useful by showing which tests delivered the coverage. E.g. you could quickly see that additionTest.java isn't fully executing addition.java by ignoring the coverage generated by multiplicationTest.java

Anyway, coverage may not be a silver bullet, however it is still a bullet. Clover 2 certainly helps you fire lots of them quickly ;)

Check out the sample reports to see the clouds (and per test coverage) in action on a range of projects and configurations

pte said...

woops - so what I actually wanted to say in my previous comment before I got off track is that the quote from the user guide is for two different clouds.

aaron said...

thanks to PTE for leaving comments. Clover is really cool, i'd like to use the product. i'm actually going to write a hackystat sensor for it in the next couple days.

i completely agree with what PTE is saying. i'm sure that the clover cloud is very useful for identifying areas of the code that has low coverage.

all i am saying is that hackystat could follow this idea but also add other metrics to form a more informed cloud that can be used for a different purpose.