We've got a product that's made up of C++ and Java parts. The C++ stuff is build using make and the java projects are made up of some ant projects and some maven2 projects.
I'm looking for a tool that will help me get useful metrics out of the build system over time. examples include
* Total build time
* C++ project build time
* Java build time
* Number of compiler warnings
* Number of unit tests (run/passed/failed/errors). (Tests are written in cxxTest and JUnit)
* Acceptance test metrics (run/passed/failed/errors)
* Total number of files
* LOC (to keep the managers happy)
There's probably loads of other metrics I could think of, but you get the idea.
Getting these metrics for a once-off report is pretty simple. What I really need is a simple tool that will let me plot these metrics over time.
A simple use case where this would be pretty useful would be compiler warnings as we could see the number of warnings trending towards zero over time. (we can't fix them all at once as it's a pretty big project and we just don't have the time for a big-bang approach). It would also help us quickly spot new warnings as they're introduced.
I've seen this question http://stackoverflow.com/questions/1460571/monitoring-code-metrics-in-java-over-longer-time-period, but I'm looking for something a little more language agnostic
So, to sum up. I'm looking for something that reports metrics over time, that's easily extensible, has a web-based reporting gui and preferably cheap. (not asking for much huh!)
Edit: Just to be clear, we're using CruiseControl as our CI server. I just haven't seen an easy way to add metrics or time-based metrics to it's output. Maybe I'm missing something obvious. I've seem this page about adding custom metrics, but it's a little clunky for me.
Ideally I'd love to write out the metrics to a file in a simple format and have something generate the metrics dynamically. Ideally I'd like to turn something like the output below into a simple chart
Build Id | Build Time | Metric | Value
00000001 10:45 TestPassRate 95
00000001 10:45 BuildTime 300
00000001 10:45 C++BuildTime 200
00000001 10:45 JavaBuildTime 50
00000001 10:45 TestTime 50
00000002 11:45 ......