About

Design evaluation

Code Critick is able to heuristically evaluate aspects of design quality, by using metrics. In contrast to existing tools such as FindBugs, CheckStyle and PMD, Critick's rules focus on OO design. Rules include use of encapsulation, Riel's design heuristics and Fowler's code smells. All implemented rules are listed available here.

Feedback is presented back to the developer inside the IDE. A ranked list of all issues is displayed, while code chips and optionally line colouring mark the issue on the source code itself. Issues are ranked and filtered by problem strength, context and user-calibrated preferences, to reduce information overload.

Screenshots: In-IDE feedback (Left), issue options (Center), rule configuration (Right)

Code colouring & ClassCloud

Code Critick also supports code colouring visualization. Instead of presenting metric values in reports or tables, the metric values are presented directly on the code itself by shading the editor background. Code critick supports colouring by several metrics.

Methods and lines can be colored by metrics such complexity and size. The scope size at every line can also be viewed through colouring.

If SVN history data is available, then code can be coloured by its age, from fresh white to stale brown, or by who wrote it. Hotspots (frequently modified lines of code) can be shaded in red. Locally added or modified lines can be shaded within the editor.

Screenshots: Code age (Left), developer (Center), scope size (Right).

The ClassCloud visualises all classes in the system as a tag cloud, mapping OO metrics to font size and colour. This can be used to gain an impression of the important or problematic classes in a system. Supported metrics include LOC, coupling, cohesion and CodeRank

Screenshot: ClassCloud visualising 'Rank'

Downloads

Eclipse plug-in and command line versions are both available from the downloads page.

Development

Code Critick is hosted on SourceForge, the project page is here

Code Critick is a research tool, currently in beta status. It has been tested mostly with small scale projects. It is developed by the SEVG group at the University of Canterbury. A list of related publications can be viewed here