
Static code analyzer monitors software systems for technical quality and enforces software architecture rules.
Features
- New Features
- Metric values can now be visualized as a histogram and pie chart.
- You can now display several metrics next to each other in the metrics view by selecting more than one metric in the metrics list.
- New metric "Depth of Inheritance" according to Chidamber and Kemerer, available as script in the core quality model.
- New metric "Number of Children" according to Chidamber and Kemerer, available as script in the core quality model.
- Script API now allows recursive but flat information retrieval for namespaces, i.e. these operations focus on elements contained directly in this namespace.
- C#: Support for nuget package references via MSBuild executor.
- C#: Support for COM references via MSBuild executor.
- C#: Support for $(Solution*) variables (e.g. $(SolutionDir), $(SolutionName)) via MSBuild executor.
- Added navigation support, gestures like expand, collapse and select are recorded and can be undone/redone by using the forward and backward buttons in the toolbar (i.e. the yellow left and right arrows).
- Added 'Home' interaction, resetting the view back to it's initial state.
- Added 'Expand To' interaction, expanding the selected elements down to component or top-level programming element level (physical/logical).
- Components or top-level programming elements (physical/logical) can now be moved (refactoring) to other parents.
- Added operation 'create element' used to create packages, namespaces or directories needed as targets for a move refactoring.
- Added first 'Focus' operations:
- 'Set', 'Add To' and 'Remove From' focus on nodes and dependencies.
- For nodes select dependencies mode 'In And Out', 'In', 'Out' and 'No Additional'.
- 'Add To' focus nodes that already have been removed via the 'Search Elements...' dialog.
- Improvements
- C/C++: Improved determination if a single header component is external or unbound.
- Instead of using background colors to provide certain additional information in Metrics, Element Metrics and Cycle Break Up views now icons and icon decorators are used providing more detailed information (e.g. now the user can easily spot ignored/to be fixed threshold violations).
- PRIMARY_MODIFIER_KEY (CTRL on Windows/Linux and CMD on Mac) + A selects all visible leaf nodes.
- Added dependency options to focus properties.
- Added transitive node options to focus properties.
- C/C++: Unbound components can now be assigned to Visual Studio based modules.
- XML report now contains info about executed plugins.
- Cycle issues in XML report now contain information about Structural Debt Index, Component Dependencies to Remove, and Parser Dependencies to Remove. This information can be extracted with Sonargraph Integration Access project.
- Workspace filters are included in XML report and diff calculation.
- Plugin configuration files can be exported within a quality model.
- Timeout info of an automated script is now also written to output file.
- Persistence uses tabs instead of spaces for indentation.
- Eclipse plugin - More logic is now executed in jobs to make the UI more responsive.
- Drag and drop support
- When dragging an element over an expand (+) symbol the corresponding node will auto-expand.
- When dragging an element near the top or bottom boundary of the view it starts to auto-scroll in the same direction if there is any not visible space left.
- Double click on components or top-level programming element now opens the Source view.
- Now multiple dependencies can be selected and deleted.
- Manual and automatic filter artifacts can now be mixed (i.e. a manual filter artifact may contain an automatic filter artifact and the other way round).
- View options are now persisted.
Fixes
- C#: Exclude NuGet marker assemblies (_._) from processing.
- C#: If processing of Visual Studio project files (.csproj) fails, the built-in XML parser is used automatically. An issue marks the module accordingly.
- C#: For a module based on a Visual Studio project file, the directory of the .csproj file is automatically added as root directory.
- C#: Fixed rare issue in context of static using directives.
- C/C++: Fixed NPE occurring when loading Visual C++ modules from a snapshot.
- Fixed NPE when closing view after having opened dynamic help (regression bug).
- Fixed NullPointerException in Metrics view on Linux.
- Fixed NoSuchMethodError exception due to library mismatch in underlying platform on Windows.
- Dynamic help now also reacts on focus events for auxiliary views, e.g. Markers view.
- C#: Fixed potential assertion error during import (Parameter 'to' of method 'getOutgoingWorkspaceDependency' must not be null).
- C#: Fixed NPE on saving software system after adding a workspace dependency between manual C# modules.
- C#: To prevent inclusion of too many files per module, the root directory that is determined automatically for a module based on Visual Studio project file can no longer be higher up in the directory structure than the project file's directory.
- C#: Fixed IllegalArgumentException ('Comparison method violates its general contract').
- Fixed potential UnknownFormatConversionException.
- C#: Fixed potential assertion error when updating workspace dependencies.