<< Back to previous view |
![]() |
[QB-566] Improve reporting system
|
|
Status: | Resolved |
Project: | QuickBuild |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | Improvement | Priority: | Major |
Reporter: | Robin Shen | Assigned To: | Robin Shen |
Resolution: | Fixed | Votes: | 0 |
Remaining Estimate: | Unknown | Time Spent: | Unknown |
Original Estimate: | Unknown |
Description |
My company would like to start analyzing our code (Java, C#, C/C++) for metrics; as many metrics as we can find. They can be both tool generated metrics like findbugs, PMD, cobertura, as well as custom metrics that we come up with. Currently, QB2 can integrate with all of the external tools we need AND has the new custom stat plugin to handle our custom stuff. What QB2 is mainly lacking right now is the presentation of these metrics. Yes, QB2 has the ability to graph all of these metrics, but it seems limited. Also, the storage of these metrics in flat files within the storage directory also seems inefficient.
I was thinking of something with the following requirements: 1. Ability to store all metrics (whether produced from external tools or custom) in a common database. Perhaps the same MySQL database used by QB2 configuration data itself. This should allow anybody to generate charts and graphs with external tools simply by connecting to the MySQL database backend (if QB2 can't do what we need). 2. Ability to generate charts and graphs over time from these metrics in an aggregated manner. I should be able to select one or more arbitrary QB2 configurations and have those metrics averaged or summed into an aggregate metric for the chart or graph. QB2 is great at showing me metrics per module (QB configuration), but I want to see metrics per release (made up of 80 modules) aggregated together. I believe you have a workaround for this by making another QB aggregate configuration, but this seems like a kluge to me. I may need to arbitrarily and dynamically aggregate different modules at different times to see charts and graphs. I wouldn't want to have to make several different aggregate QB configurations. If the metrics are in a database, the power of SQL SUM() or AVERAGE() operators should make this easy and fast since no scanning of flat files is required. 3. If possible, the ability to drill down to the source code with inline metric information. You pretty much have this already with your findbugs and other plugins now. 4. More charting options like available in the Sonar open-source project located here: http://www.sonarsource.org Speaking of Sonar... It is a great tool. I am looking into it right now as a solution to my requirements above since QB2 seems a little limited. Things I like about Sonar: 1. common database for all metrics 2. plugin API 3. already has a plugin to aggregate ALL projects into one so would seem very possible to write a plugin to aggregate arbitrary projects into one 4. nice web interface dashboard with fancy charts and graphs Things I don't like about Sonar: 1. No C#, C/C++ support 2. custom metrics must be typed in by hand with the web interface. No way to inject custom metrics from the command line in an automated way. 3. requires Maven on the client when running the code analyzer 4. slow web interface on large projects 5. trend charts and graphs cannot be customized. horizontal time axis is only by day and not per build. Therefore, multiple builds per day are hidden since there is only one data point per day |