Sonargraph Product Family
Sonargraph-Architect is a general purpose static analysis tool and can be best described as the swiss army knife for architects, quality analysts and developers. It is also a very powerful tool in the hands of a capable software craftsman. Currently it supports C#, C/C++, Java/Kotlin and Python 3. More languages will be supported in the future. It provides powerful software visualization views, hundreds of metrics, automated architecture checks based on a powerful DSL, a Groovy based scripting engine, a checker for duplicate code, virtual refactorings, issue resolution workflow, advanced metrics like LCOM4 and a break up computer for cyclic dependencies. Moreover you can define quality gates based many different criteria and use baselines to find out what changed compared to a previous version of your software. Your quality gates can be configured to break the build if things got worse in comparison to the baseline. It is also the best available tool for the modernization of monolithic legacy applications.
Code Exploration and Comprehension
Sonargraph has very powerful dependency visualization features. The graph view displays dependencies between arbitrary elements selected by the user in form of a layered graph.
All nodes that are in a cyclic group are combined into a single node, that can be further investigated using the cycle viewer.
The exploration view displays dependencies in a more hierarchical and scalable fashion. The arcs in the view are directional and go counter-clockwise. You should see some cyclic dependencies in the screenshot below.
This view comes with many powerful features that allow you to focus on specific parts of your application. You can drill down, jump to the source code and expand the focus by adding incoming and/or outgoing dependencies. Every dependency can be tracked down to the code.
Architecture as Code: Design your Architecture using Sonargraph's Architecture DSL
use our powerful and easy to learn and understand software architecture DSL to describe the architecture of your system. Watch the video below and read our blog article "How to organize your code" to learn more.
Sonargraph now mines your Git history
This allows us to derive metrics like change frequency and code-churn, which are really useful to indentify the stable and unstable parts of your code base. If you read the book "Your Code as a Crime Scene" you will find that Sonargraph now supports most of the analysis recommended in the book. And we will further enhance this capability.
Visualize Hotspots using 2D and 3D Tree Maps (aka software cities)
Tree maps give you a very powerful and unique way to visualize the metrics of your software system. The 3D example treemap above shows 3 metrics in the different characteristics of the "buildings". The ground area is proportional to the size of a source file in LoC. The color is derived from the number of changes in the last 90 days. The dark red building on the bottom right is the Sonargraph class "TreemapView". It has been changed frequently, because that is a feature we are actively working on. The height of the building reflects complexity measured here in form of average indentation. Tall large buildings in red are good candidates for refactorings, they combine high complexity with frequent changes, which really increases the probability of errors. Of course Sonargraph allows you to choose which metrics you'd like to disply in a treemap. it is even possible to use script based metrics in treemaps.
Virtual Refactorings allow the Simulation of Refactorings without touching the Code
With a virtual refactoring you can delete, move or rename certain elements without actually changing your code. Sonargraph will simulate the effect of those refactorings for you. If you are happy with the results just excute those refactorings in the real world by using your IDE. This is much safer than experimenting with refactorings in your IDE because you can actually see, how your refactorings will impact the architecture and dependency structure of your code.
Break up cyclic Dependencies with minimal Effort
Our cycle break-up computer helps you to identify the dependencies you need to cut to untangle cyclic dependencies with the smallest possible effort. You can then fine tune the result set according to your architectural requirements.
Assess Quality by Analyzing Metrics and Code Structure
The screenshot below shows the overall system metrics of NHibernate (C#) including the associated test projects.
Sonargraph-Architect computes hundreds of code and quality metrics that can be used to quickly assess the technical quality of any software system.p>
Using dependency visualization and metrics it becomes easy to gain a better understanding of any software system, even if it lacks documentation. Moreover the metrics allow a quick and solid assessment of the technical quality of the codebase.
Quality assessments can be performed remotely by using a snapshot file generated by Sonargraph-Architect on a development machine. If the user creating the snapshot permits the snapshot will not only hold a complete model of the software system, but also all of the source code. The remote machine does not need a development environment.
Find Duplicated Code Blocks
Sonargraph-Architect comes with a powerful duplicate code detection algorithm. This makes it easy to detect code sequences created by copy & paste. The duplicate code viewer is able to conveniently display duplicated blocks side by side.
All issues detected by Sonargraph-Architect are displayed in the issues view. Issues can be filtered, ignored or converted into tasks. Ignoring issues is useful for any issue that you do not plan to fix in the near future.
Create Your Own Code Checkers
You can use Groovy Script to check for specific issues in the code. The script in the screenshot below detects all uses of sub classes from their super classes. This is considered to be bad practice. You can configure the script to run automatically with each refresh. The issues detected by the script will then show up in the issues view.
Ready to try Sonargraph-Architect? Here is what you need to do:
- Register now! As a registered user you can download and test Sonargraph-Architect for free.
- After you are registered and logged in you can download and install Sonargraph-Architect. Then you should request a free 14 day evaluation license, that allows you to test the full product on any Java, C# or C/C++ project.