Measuring Metrics with Teamscale

Posted on 07/24/2015 by Fabian Streitel

Who doesn’t love metrics? They measure your progress in achieving a goal. They can help you objectively answer important questions. They help you understand complex situations or problems.

However, there are some caveats: it’s easy to pile on a ton of metrics and be drowned in information. Selecting the relevant ones is important. Some metrics may also be hard to interpret when you see merely the raw data. Only with the right visualization will you reap its full benefits and gain an intuitive understanding of your problem.

Metrics as First-Class Citizens

Teamscale calculates a lot of different metrics for your source code. The following screenshot shows Teamscale’s code perspective with all metrics enabled. You can see how the screen is overflowing because there are so many.

The code perspective with all metrics enabled

Here at CQSE we believe in personalized feedback. Therefore we make it possible for you to only show the metrics that are really relevant for you. For me, e.g., Clone Coverage and the status of our code reviews are two very useful indicators, so I configured Teamscale accordingly (plus some other interesting ones):

The dialog where you can configure the metrics that are interesting to you

The result is is a very clean code perspective. For each top-level folder of our project, I can see the relevant metrics. If I want to dig down to a deeper level, Teamscale will show me the metrics aggregated up to those subfolders and even for a single file. This allows me to find hotspots of cloning or large portions of code that have not yet been reviewed.

The code perspective with only the metrics that are relevant to me

Visualizing the Important Things

For the whole system, though, raw numbers are not that exciting. Instead, a good visualization will tell you much more, much faster. From the sidebar of the code perspective, you can directly request a treemap or the history of any metric, e.g. the trend of the number of findings in the current folder:

You can get a treemap or the history of a metric from anywhere in the code perspective!

Usually though, you’ll have some metrics that you will want to check on regularly. For this purpose, Teamscale offers dashboards:

An example dashboard with widgets that visualize certain metrics

These are fully configurable and customizable. You can place the widgets anywhere. All of them can be focused on the entire system or on parts of it, depending on your repository layout. Plus, they let you visualize the time component, as you can, e.g., see in the line graph of the clone coverage. This helps you see how your project develops over time and gives you a great sense of progress when you start cleaning up your code!

Measuring what’s important to you is one thing, but setting a target for yourself that you want to achieve enables lasting improvement. These dashboards let you visualize these goals (e.g., less than 10% clone coverage or no compiler warnings) and make them visible to everyone on the team. Just share your dashboard with them! We even hung a giant monitor in our offices just to display our KPI dashboard. This motivates people to stay on track and feel responsible for the quality of their source code.