views:

60

answers:

3

I'm trying to collect software code metrics in my Java project on every cycle of continuous integration. I'm interested mostly in size-related metrics like number of classes, number of methods, function points, lines of code, etc. I would like to get a summary report with these metrics in some XML file. Later I will use it in project report, or somehow else.

Is there any free open-source tool which I can integrate with Maven for this purpose?

+2  A: 

Take a look at the javancss-maven-plugin.

JavaNCSS is a source measurement suite for Java which produces quantity & complexity metrics for your java source code.

This plugin provides the capability to run the JavaNCSS tool on your Maven 2 project sources and produce an html report. Optionally you can fail the build whenever one of the metrics goes beyond a fixed limit.

matt b
NCSS stands for "Non Commenting Source Statements". Took me a while to work out :)
dogbane
JavaNCSS is an old tool that doesn't handle correctly the syntax introduced by Java 1.5. `Sonar` is a far better alternative, and since 1.9 it bundles its own *JavaNCSS-like* tool, called `Sonar Squid`.
romaintaz
@romaintaz Sonar is excellent but I'm not sure that you're right about JavaNCSS: [the homepage](http://www.kclee.de/clemens/java/javancss/) lists support for 1.5/generics syntax.
matt b
@matt_b Annotations and Generics are in fact **partially** supported. JavaNCSS does not handle nested classes. That's why I said that this tool is a not up to date. Have a look here: http://www.sonarsource.org/the_next_major_version_of_javancss_is_on_its_way/
romaintaz
+7  A: 

One good option is Sonar.

Its primary purpose is to manage technical debt, so it does a lot of things you don't need, but it provides really good metrics.

You can integrate it with Hudson or whatever other continuous integration system you are using.

Alan Geleynse
+1 Hudson supports Maven, which has a Sonar plugin. The makes it trivial to get Hudson to run a sonar analysis nightly.
Qwerky
Not just nightly, you can have it run on every commit. That is how we use it and it works great.
Alan Geleynse
@Alan The negative side is that "Sonar Server" has to be up and running..
Vincenzo
Well, so does your Hudson server, your Maven repo, etc etc.. not a big deal.
matt b
A: 

I'll throw in XRadar which provides similar functionality to Sonar.

Philipp Jardas