Sonargraph is a commercial tool for static code analysis of software written in Java, C#, C or C++. By parsing the source code it builds an in memory dependency and metrics model of the analyzed code. The model dependencies can then be visualized graphically so that the user is able to understand the structure of the system. Moreover, the tool allows the definition of a logical architecture model (intended structure of the software) based on a domain specific language designed for software architecture. By comparing the logical model with the real dependency structure Sonargraph finds and list all architecture violations (deviations from the intended structure).
Moreover, Sonargraph computes a wide range of software metrics that help the user to pinpoint problematic code sections and to estimate the overall technical quality of his project. It also helps with finding duplicated blocks of code, which are usually considered undesirable. A Groovy based scripting engine allows the user to compute user defined metrics and to create customized code checkers.