1. Detect Architecture Smells(click to expand/collapse)
Designite identifies architecture smells and presents them in a sunburst visualization. Each detected smell is presented with its definition and its cause. This information could be used to analyze the identified smell further and plan for refactoring of the smell.
The following architecture smells are detectable by Designite:
This smell arises when two or more architecture components depend on each other directly or indirectly.
This smell arises when a component depends on other components that are less stable than itself.
This smell arises when a component offers only a single, general entry-point into the component.
This smell occurs when a component is excessively large either in the terms of LOC or number of classes.
This smell occurs when a component realizes more than one architectural concern/feature.
This smell arises when multiple components are responsible for realizing the same high-level concern.
This smell arises when components have excessive and dense dependencies without any particular structure.
2. Detect Design Smells(click to expand/collapse)
Designite identifies design smells and presents them in a view that classifies them based on the fundamental principle they violate. In addition, Designite also points out the cause of the smell and therefore provides a clue towards refactoring of the smell.
The following design smells are detectable by Designite:
Abstraction Design Smells
Imperative Abstraction, Unnecessary Abstraction, Multifaceted Abstraction, Unutilized Abstraction, Duplicate Abstraction.
Encapsulation Design Smells
Deficient Encapsulation, Unexploited Encapsulation.
Modularization Design Smells
Broken Modularization, Insufficient Modularization, Hub-like Modularization, Cyclically-dependent Modularization.
Hierarchy Design Smells
Wide Hierarchy, Deep Hierarchy, Multipath Hierarchy, Cyclic Hierarchy, Rebellious Hierarchy, Unfactored Hierarchy, Missing Hierarchy.
Please note that the Designite follows classification proposed by “Refactoring for Software Design Smells: Managing Technical Debt” by Girish Suryanarayana, Ganesh Samarthyam, and Tushar Sharma.
3. Compute Metrics(click to expand/collapse)
LOC (Lines Of Code), NON (Number Of Namespaces), NOC (Number Of Classes), NOM (Number Of Methods), MV (Metrics Violations), SD (Smell Density), DUP (Code Duplication).
LOC (Lines Of Code), NON (Number Of Namespaces), NOC (Number Of Classes), NOM (Number Of Methods), MV (Metrics Violations), SD (Smell Density), DUP (Code Duplication), DDS (Detected Design Smells).
NOF (Number Of Fields), NOM (Number Of Methods), NOP (Number Of Properties), NOPF (Number of Public Fields), NOPM (Number of Public Methods), LOC (Lines of Code), WMC (Weighted Methods per Class), NC (Number of Children), DIT (Depth of Inheritance Tree), LCOM (Lack of Cohesion of Methods), FANIN (Fan-in), FANOUT (Fan-out).
LOC (Lines Of Code), CC (Cyclomatic Complexity), PC (Parameter Count).
4. Analyze Trend(click to expand/collapse)
5. Smell Distribution (Treemap)(click to expand/collapse)
Designite allows the user to see the distribution of design and implementation smells using Treemap. The smell treemap shows two dimensions – size of classes/namespace and corresponding severity of smell density. The diagram shows severity of smell density using intuitive color scheme; smell density increases from green to red.
6. Dependency Structure Matrix(click to expand/collapse)
The Dependency Structure Matrix (DSM) is a compact and visual representation of dependencies (with corresponding strength) among software system entities (such as Type, Namespace, or Project) in the form of a square matrix. Designite offers an interactive and simple yet effective implementation of DSM.
7. Detect Implementation Smells(click to expand/collapse)
Long Method, Complex Method, Long Parameter List, Long Identifier, Long Statement, Complex Conditional, Virtual Method Call from Constructor, Empty Catch Block, Magic Number, Duplicate Code, Missing Default.
8. Identify Code Clones(click to expand/collapse)
9. Console Application(click to expand/collapse)
Designite provides a console application with various options to allow integration with external tools. For instance, one can integrate Designite with SonarQube to see the design smells detected by Designite in SonarQube.
The console application supports analyzing projects and exporting the results in CSV format. The analysis using console application can be highly customized (e.g. analyze either by specifying solution file path or batch file, exempt a few projects in a solution from analysis, and trend analysis of a git repository).
10. Customize Your Quality Analysis(click to expand/collapse)
Every piece of code is different in terms of domain, context, and its quality requirements. Measuring quality aspects of all the software systems using the same stick is not appropriate and often not desirable. Keeping it in mind, Designite has introduced a new feature “Preferences” in version 1.33.0 to allow users to customize their analysis by selecting thresholds based on their context and requirements.
11. Identify Hotspots(click to expand/collapse)
12. Export Results(click to expand/collapse)
Designite allows you to export the analyzed information (detected smells and computed metrics). Three export formats are available to choose from MS Excel, XML, and CSV. This extremely useful feature allows you to share the result of the tool with other stakeholders in your team and analyze the results further.
13. Summary of Design Analysis(click to expand/collapse)
14. Visual Studio Extensions(click to expand/collapse)