- Plugin architecture
- Flexible roll-up rules
- Current perspective
- Trend perspective
- Languages supported
- Environments supported
- Supports qualitative data
- Build environments
- Custom dashboards
- Aggregates multiple projects
- Continuous integration servers
- User community
- Tool quality (is the quality calculator buggy?)
- Latest release (is this project alive?)
- Documentation (can I figure out how to use it?)
- Calculates maintainability
- Calculates flexibility
- Calculates portability
- Calculates reusability
- Calculates readability
- Calculates testability
- Calculates understandability
In making these evaluations, I need some projects to run through the tools to see how they perform. The obvious choice is some open-source projects. These projects should:
- Be developed in Java
- Have their development history captured in a version control system
- Have high development activity
- Have JUnit tests
- Some built with Ant, some with Maven 2
Jena - A framework for building Semantic Web applications. I'll focus on the ARQ component. (Ant)
Jena (ARQ module) has eight releases in its Subversion tags folder:
$> svn ls https://jena.svn.sourceforge.net/svn/root/jena/ARQ/tagsARQ-2.0/ARQ-2.0-RC/ARQ-2.0-beta/ARQ-2.1/ARQ-2.1-beta/ARQ-2.2/ARQ-2.3/ARQ-2.4/
Tiles - A Web templating framework. (Maven 2)
Tiles has eight releases in its Subversion tags folder:
$>svn ls http://svn.apache.org/repos/asf/tiles/framework/tagstiles-2.0.0/tiles-2.0.1/tiles-2.0.2/tiles-2.0.3/tiles-2.0.4/tiles-2.0.5/tiles-2.0.6/tiles-2.1.0/
This would seem a trivial matter to pick out some projects to use as a basis for our tool evaluation. It turns out this is not so. I won't bore you with the reasons, but this took WAY longer than I expected.
With criteria and test cases in hand, I'll move on to evaluating the options. Sonar seems like a reasonable place to start.