When hello2morrow and Software-Tomography merged in 2008, the goal was to merge the capabilities of SonarJ (a hello2morrow product) and Sotograph (a Software-Tomography product) into a powerful next generation static analysis platform. With today’s release of Sonargraph for Java an important milestone of this project has been reached.
SonarJ is now renamed to Sonargraph for Java and also replaces Sotoarc and Sotograph for Java. The new product combines the best features of both worlds and comes in two major product variants. Sonargraph-Architect has its focus on software architecture and structure. Software architects can create two-dimensional architectural models for their application that act as a structural blueprint. Sonargraph-Architect will detect any violations of the blueprint and inform developers about those violations while they are working in their favored IDE. The product comes with plug-ins for Eclipse and IntelliJ-IDEA. Using Sonargraph-Architect bridges the gap between software architects and developers and helps to eliminate one of the most critical issues for many software development teams, which is the uncontrolled accumulation of structural and technical debt in the development process. Many studies prove that most non-trivial projects suffer from severe structural erosion (loss of architectural cohesion and structure), which acts like an ever growing tax on code changes. Avoiding structural erosion leads to significant gains in team productivity and technical quality. The tool also allows simulating refactorings on the code without actually touching the code. If the architect approves a set of refactorings, it can be passed to the IDE, which performs the necessary code changes according to the detailed description provided by Sonargraph-Architect. The tool also comes with an integrated dashboard that integrates the most important architectural and structural project metrics on one page.
Sonargraph-Quality is the big brother of Sonargraph-Architect. It includes all the features of Sonargraph-Architect, but also covers many additional aspects of technical quality. Currently we do not know of any other tool that delivers such a comprehensive and detailed set of quality data for Java projects. The heart of Sonargraph-Quality is its repository. The repository stores snapshots of Java applications containing software metrics, a complete dependency model, architectural models, violations, refactorings and open tasks. Using the repository Sonargraph-Quality can create trend charts of project metrics, compile lists of problems added since the last build or find out which problems have been solved within a given time frame. Sonargraph finds duplicated code blocks and can integrate 3rd party code checkers. Out of the box it comes with support for CheckStyle and PMD. FindBugs support will be added shortly.
In addition to calculating hundreds of different software metrics Sonargraph also includes many predefined queries that can be used to locate bad smells, design patterns or anti-patterns.
Here is an example of the issues that can be found using predefined queries:
• Superclass knows subclass
• Non-local attribute access
• Overriding attributes
• Unused methods, attributes and classes
• Comments: ‘Hack’ etc.
• Classes, methods and attributes that do not need to be public
• Missed abstraction: methods and attributes
• Package call interface
• Dependency bottlenecks
• Structural debt index
• And many more…
The format of a snapshot is fully document so that users can easily create their own project specific metrics and queries using standard SQL. This way the user can extract pretty much any information that is contained in the snapshot model.
Typically Sonargraph-Quality is integrated into the build system so that snapshots are created automatically during the nightly build. It integrates with ANT, Maven, Sonar and Jira, just to name a few popular developer tools.
By customizing one of the predefined quality models users can define their own target ranges and tolerance level for an arbitrary set of project metrics. Customized quality models can be exported and imported to facilitate the creation of company wide quality standards and benchmarks.
The reporting engine of Sonargraph allows the automatic creation of a variety of useful reports ranging from one-pagers containing only a couple of key project metrics up to multi-page detailed metric and trends reports. Reports can contain charts and diagrams and can be fully customized by the user.
Setting up Sonargraph on an existing Java project only takes minutes. It can directly import projects from Eclipse, IntelliJ-IDEA and Maven. For other environments projects can be configured manually with a few mouse-clicks.
The major use cases for Sonargraph-Quality are:
• Permanent fully automated monitoring of project architecture and quality of an ongoing project
• In-depth assessment of architecture and technical quality
• Software due-diligence checks
Typical users are software architects, QA specialists and consultants.
As a next step hello2morrow plans to add support for C/C++ and C# to the Sonargraph product family. Sonargraph for C/C++ and C# is expected to be released in the 4th quarter of 2011.