Sonargraph Product Family
Sonargraph is a powerful static code analyzer and comes in three major product variants. Sonargraph-Explorer is the swiss army knife for software architects, quality analysts and anyone else who needs to dig through complicated badly documented code bases. This is our newest product and it supports Java, C# and C/C++ out of the box. The two other products Sonargraph-Architect and Sonargraph-Quality only support Java at this time and will add support for C# and C/C++ later in 2014. Sonargraph-Architect is the successor of SonarJ and has a focus on software structure and architecture. Sonargraph-Quality includes the capabilities of Sonargraph-Architect and adds more metrics, quality models, integration of 3rd party code checkers and other features.
Sonargraph-Explorer is a general purpose static analysis tool. It parses your project and builds an in-memory model of it. This model can be stored in a binary snapshot that can be used to analyze a system on any other machine - the original compile/build environment is not needed when opening a system from a snapshot. Sonargraph Explorer computes 100's of metrics, finds code duplications (copy & paste detector), visualizes dependencies on all levels and in different representation viewers and has a scripting engine, that allows you to define your own metrics or code checkers in form of a Groovy script.
These are typical use-cases for Sonargraph-Explorer:
- In depth quality assessments of software systems
- Remote assessments using snapshots created on another machine
- Code comprehension of complex systems
- Gathering of software metrics (including user defined metrics)
- Reverse engineering and visualization of complex undocumented code bases
- Checking user defined quality rules by using the scripting capabilities
If you need to enforce an architectural model or want to integrate Sonargraph into your build process you need Sonargraph-Architect or Sonargraph-Quality. The next release of Sonargraph-Architect scheduled for later in 2014 will be based on Sonargraph-Explorer. Our license model allows you to upgrade an existing license at any time during the lifetime of the license. You only have to pay the difference in cost.
Sonargraph-Architect uses direct parsing to build an in-memory model of your software project. Since everything happens in memory Sonargraph-Architect is incredibly fast while still being able to analyze large systems on a typical developer machine. As soon as you define an architectural model for your system, Sonargraph-Architect will compare your architecture with the dependency structure of your code and list all places, where the code does not conform to your architecture. This feature is also available in our IDE plugins for Eclipse and IntelliJ, so that developers are able to detect rule violations while they are working on the code.
These are the typical use-cases for Sonargraph architect:
- Permanent monitoring of architecture rules and dependency structure in the development process
- Assessment of architectural and structural quality of a code base
- Analyze and visualize the dependency structure of your code
- Analyze and visualize cyclic dependencies
- Break up cyclic dependencies with the least amount of effort
- Prepare and simulate complex refactorings to improve the structure of your system
- Implement planned refactorings in cooperation with your IDE
- Define and enforce architectural rules and constraints for your system in your IDE and during build time
- Monitor dozens of different software metrics and use thresholds to create violations for bad values
- Integrate sophisticated architecture and metrics rule checking into your Sonar build
- Find duplicate code blocks (sophisticated copy & paste detection)
Adding Sonargraph-Architect to your development process will significantly improve the technical quality, maintainability and comprehensibility of your code base. It will help to keep coupling low and greatly simplify the reuse of existing components. As a result you can expect a sizeable productivity boost for your development team. Developers will spend less time trying to understand complex code and therefore spend more time implementing useful functionality.
Sonargraph-Quality includes all the features of Sonargraph-Architect and adds many features that will help you to analyze, manage and assess the overall technical quality of a software system. Sonargraph-Quality uses a persistent repository to store all the information gained from analyzing your system. While it supports direct parsing you would usually do all the heavy-duty parsing and analysis during your nightly build. The result of such an analysis is a snapshot of your system. The snapshot contains a complete model of your code base including structural information, metrics and other data. Since Sonargraph will create many snaphots over time it is easy to compare different snapshots with each other.
Here are some typical use-cases for Sonargraph-Quality:
- All the use cases of Sonargraph-Architect
- In-depth code quality assessments and due diligence checks
- Permanent monitoring of most aspects of code quality in the development process
- Use predefined or customized quality models to identify problems and quality trends in your code base
- Discover metric trends
- Find out which problems have been added or solved since the last build
- Retrieve and analyze hundreds of different software metrics
- Create your own customized metrics
- Use prepared queries to find bad smells and other anomalies in your system
- Create your own customized queries
Sonargraph-Quality is the big brother of Sonargraph-Architect. It brings you all the benefits of Sonargraph-Architect, but also allows much more in-depth analysis of many different aspects of technical quality. While the typical user of Sonargraph-Architect is a software architect or development team leader, Sonargraph-Quality can also be used by QA specialists or the central QA department. Another typical user group are consultants doing code quality assessments or software due diligence.