| Stat | # Occurrences | Avg | StdDev | Max |
| Properties on Interfaces | 7 Interfaces | 3.29 | 3.15 | 10 properties on Asm:ContactManager.Core Interface:ContactManager.Core.IContactManagerView |
| Methods on Interfaces | 7 Interfaces | 5.14 | 2.9 | 10 methods on Asm:ContactManager.Core Interface:ContactManager.Core.IContactManagerView |
| Arguments on Methods on Interfaces | 36 Methods | 0.47 | 0.55 | 2 arguments on Asm:ContactManager.Core Interface:ContactManager.Core.UI.IGridAdapter Method:RowSelected(Object,GridViewCommandEventArgs) |
| Public Properties on Classes | 16 Classes | 3.44 | 3.12 | 10 public properties on Asm:NDepend.CodeStructureContainer.NAssembly Class:ContactManger.gui._Default |
| Public Methods on Classes | 16 Classes | 6.44 | 2.98 | 12 public methods on Asm:ContactManager.Model Class:ContactManager.Model.ContactDTO |
| Arguments on Public Methods on Classes | 103 Methods | 0.62 | 0.73 | 4 arguments on Asm:ContactManager.Model Class:ContactManager.Model.ContactDTO Method:.ctor(Guid,String,String,String) |
| IL Instructions in non-abstract Methods | 162 Methods | 12.72 | 21.09 | 116 IL instructions in Asm:ContactManger.gui Class:ContactManger.gui.ContactListCodeBehind Method:EditContact(Guid) |
| Cyclomatic complexity on non abstract Methods | 162 Methods | 0.23 | 0.76 | CC = 4 for Asm:ContactManger.gui Type:ContactManger.gui.ContactListCodeBehind Method:GetContacts() |
| Assembly | # Types | # Abstract Types | # IL instruction | # lines of code | # lines of comment | % comment | Afferent Coupling | Efferent Coupling | Relational Cohesion | Instability | Abstractness | Distance |
| ContactManger.gui v1.0.0.0 | 2 | 0 | 629 | 103 | 35 | 25% | 0 | 96 | 0.5 | 1 | 0 | 0 |
| ContactManager.Core v1.0.0.0 | 16 | 7 | 502 | 75 | 20 | 21% | 4 | 41 | 1.38 | 0.91 | 0.44 | 0.35 |
| ContactManager.Model v1.0.0.0 | 1 | 0 | 131 | 23 | 16 | 41% | 7 | 6 | 1 | 0.46 | 0 | 0.54 |
| ContactManager.Presentation v1.0.0.0 | 1 | 0 | 511 | 81 | 16 | 16% | 1 | 13 | 1 | 0.93 | 0 | 0.07 |
| ContactManager.Service v1.0.0.0 | 3 | 0 | 287 | 53 | 19 | 26% | 1 | 25 | 0.33 | 0.96 | 0 | 0.04 |
WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE PercentageComment < 20 AND NbLinesOfCode > 10 ORDER BY PercentageComment ASC
// METHODS WHERE %Comment < 20 and that have at least 10 lines of code should be more commented.
// Refer to NbLinesOfComment documentation to understand how PercentageComment is computed.
| methods | Percentage Comment | # lines of code (LOC) | Full Name |
| Initialize() | 0 | 16 | ContactManager.Presentation.ContactManagerPresenter.Initialize() |
| Cancel() | 0 | 15 | ContactManager.Presentation.ContactManagerPresenter.Cancel() |
| NewContact() | 0 | 12 | ContactManager.Presentation.ContactManagerPresenter.NewContact() |
| EditContact(String) | 0 | 17 | ContactManager.Presentation.ContactManagerPresenter.EditContact(String) |
| Initialize() | 0 | 15 | ContactManger.gui.ContactListCodeBehind.Initialize() |
| btnAdd_Click(Object,EventArgs) | 0 | 12 | ContactManger.gui.ContactListCodeBehind.btnAdd_Click(Object,EventArgs) |
| EditContact(Guid) | 4 | 21 | ContactManger.gui.ContactListCodeBehind.EditContact(Guid) |
| Sum: | 4 | 108 | |
| Average: | 0.5714286 | 15.429 | |
| Minimum: | 0 | 12 | |
| Maximum: | 4 | 21 | |
| Standard deviation: | 1.3997 | 2.8714 | |
| Variance: | 1.9592 | 8.2449 |
WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE LCOM > 0.8 AND NbFields > 10 AND NbMethods >10 ORDER BY LCOM DESC
// TYPES WHERE LCOM > 0.8 AND NbFields > 10 AND NbMethods >10 might be problematic.
// However, it is very hard to avoid such non-cohesive types. The LCOMHS metric
// is often considered as more efficient to detect non-cohesive types.
| types | Lack of Cohesion Of Methods (LCOM) | # Fields | # Methods | Full Name |
| _Default | 0.9166667 | 12 | 18 | ContactManger.gui._Default |
| Sum: | 0.9166667 | 12 | 18 | |
| Average: | 0.9166667 | 12 | 18 | |
| Minimum: | 0.9166667 | 12 | 18 | |
| Maximum: | 0.9166667 | 12 | 18 | |
| Standard deviation: | NaN | 0 | 0 | |
| Variance: | -2.317958E-08 | 0 | 0 |
WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE LCOMHS > 0.95 AND NbFields > 10 AND NbMethods >10 ORDER BY LCOMHS DESC
// TYPES WHERE LCOMHS > 1.0 AND NbFields > 10 AND NbMethods >10 should be avoided.
// Note that this constraint is stronger than the constraint
// TYPES WHERE LCOM > 0.8 AND NbFields > 10 AND NbMethods >10.
| types | LCOM Henderson-Sellers (LCOMHS) | # Fields | # Methods | Full Name |
| _Default | 0.9705882 | 12 | 18 | ContactManger.gui._Default |
| Sum: | 0.9705882 | 12 | 18 | |
| Average: | 0.9705882 | 12 | 18 | |
| Minimum: | 0.9705882 | 12 | 18 | |
| Maximum: | 0.9705882 | 12 | 18 | |
| Standard deviation: | NaN | 0 | 0 | |
| Variance: | -1.134345E-08 | 0 | 0 |
WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE SizeOfInst > 64 ORDER BY SizeOfInst DESC
// TYPES WHERE SizeOfInst > 64 might degrade performance (depending on the number of
// instances created at runtime) and might be hard to maintain.
// However it is not a rule since sometime there is no alternative
// (the size of instances of the System.Net.NetworkInformation.SystemIcmpV6Statistics
// standard class is 2064 bytes).
| types | Size of instance | Full Name |
| _Default | 429 | ContactManger.gui._Default |
| ContactListCodeBehind | 429 | ContactManger.gui.ContactListCodeBehind |
| Sum: | 858 | |
| Average: | 429 | |
| Minimum: | 429 | |
| Maximum: | 429 | |
| Standard deviation: | 0 | |
| Variance: | 0 |
WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE MethodCa == 0 AND
!IsPublic AND !IsEntryPoint AND
!IsExplicitInterfaceImpl AND !IsClassConstructor AND !IsFinalizer
// Detect unused methods.
| methods | Afferent coupling at method level (MethodCa) | Full Name |
| btnAdd_Click(Object,EventArgs) | 0 | ContactManger.gui.ContactListCodeBehind.btnAdd_Click(Object,EventArgs) |
| gvContacts_RowCommand(Object,GridViewCommandEventArgs) | 0 | ContactManger.gui.ContactListCodeBehind.gvContacts_RowCommand(Object,GridViewCommandEventArgs) |
| Page_Load(Object,EventArgs) | 0 | ContactManger.gui.ContactListCodeBehind.Page_Load(Object,EventArgs) |
| btnCancel_Click(Object,EventArgs) | 0 | ContactManger.gui.ContactListCodeBehind.btnCancel_Click(Object,EventArgs) |
| gvContacts_SelectedIndexChanged(Object,EventArgs) | 0 | ContactManger.gui.ContactListCodeBehind.gvContacts_SelectedIndexChanged(Object,EventArgs) |
| btnUpdate_Click(Object,EventArgs) | 0 | ContactManger.gui.ContactListCodeBehind.btnUpdate_Click(Object,EventArgs) |
| btnSave_Click(Object,EventArgs) | 0 | ContactManger.gui.ContactListCodeBehind.btnSave_Click(Object,EventArgs) |
| Page_Load(Object,EventArgs) | 0 | ContactManger.gui._Default.Page_Load(Object,EventArgs) |
| btnAdd_Click(Object,EventArgs) | 0 | ContactManger.gui._Default.btnAdd_Click(Object,EventArgs) |
| btnUpdate_Click(Object,EventArgs) | 0 | ContactManger.gui._Default.btnUpdate_Click(Object,EventArgs) |
| Sum: | 0 | |
| Average: | 0 | |
| Minimum: | 0 | |
| Maximum: | 0 | |
| Standard deviation: | 0 | |
| Variance: | 0 |
WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE SizeOfInst ==0 AND !IsStatic AND !IsGeneric AND !IsInterface
// It indicate stateless types that might eventually be turned into static classes.
| types | Size of instance | Full Name |
| DefaultContactManagerService | 0 | ContactManager.Service.DefaultContactManagerService |
| ContactManagerService | 0 | ContactManager.Service.ContactManagerService |
| BaseService | 0 | ContactManager.Service.BaseService |
| Sum: | 0 | |
| Average: | 0 | |
| Minimum: | 0 | |
| Maximum: | 0 | |
| Standard deviation: | 0 | |
| Variance: | 0 |
WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE IsClass AND NbChildren ==0 AND !IsSealed ORDER BY NbLinesOfCode
// Classes with no descendant should be sealed.
| types | # Children | # lines of code (LOC) | Full Name |
| BaseService | 0 | 4 | ContactManager.Service.BaseService |
| ButtonAdapter | 0 | 7 | ContactManager.Core.UI.Web.ButtonAdapter |
| ButtonAdapter | 0 | 7 | ContactManager.Core.UI.Windows.ButtonAdapter |
| ListItemDTO | 0 | 7 | ContactManager.Core.UI.ListItemDTO |
| TextboxAdapter | 0 | 8 | ContactManager.Core.UI.Web.TextboxAdapter |
| TextBoxAdapter | 0 | 8 | ContactManager.Core.UI.Windows.TextBoxAdapter |
| HiddenAdapter | 0 | 9 | ContactManager.Core.UI.Web.HiddenAdapter |
| ComboBoxAdapter | 0 | 14 | ContactManager.Core.UI.Windows.ComboBoxAdapter |
| ContactManagerService | 0 | 15 | ContactManager.Service.ContactManagerService |
| GridAdapter | 0 | 15 | ContactManager.Core.UI.Web.GridAdapter |
| Sum: | 0 | 94 | |
| Average: | 0 | 9.4 | |
| Minimum: | 0 | 4 | |
| Maximum: | 0 | 15 | |
| Standard deviation: | 0 | 3.6661 | |
| Variance: | 0 | 13.44 |
WARN IF Count > 0 IN SELECT TOP 10 ASSEMBLIES WHERE RelationalCohesion < 1.5 OR RelationalCohesion > 4.0
// As classes inside an assembly should be strongly related,
// the cohesion should be high. On the other hand, a value which is too high may
// indicate over-coupling. A good range for RelationalCohesion is 1.5 to 4.0.
| assemblies | Relational cohesion | Full Name |
| ContactManger.gui | 0.5 | ContactManger.gui |
| ContactManager.Presentation | 1 | ContactManager.Presentation |
| ContactManager.Core | 1.375 | ContactManager.Core |
| ContactManager.Service | 0.3333333 | ContactManager.Service |
| ContactManager.Model | 1 | ContactManager.Model |
| Sum: | 4.2083 | |
| Average: | 0.8416666 | |
| Minimum: | 0.3333333 | |
| Maximum: | 1.375 | |
| Standard deviation: | 0.3767554 | |
| Variance: | 0.1419446 |
WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE
!NameLike "^[A-Z]" AND // The name of a type should begin with an Upper letter.
!NameLike "__StaticArrayInit" AND // Except __StaticArrayInit generated type
!NameLike "struct0x" AND // Except struct0x generated type
!NameLike "<" // Except C# compiler generated type
| types | # lines of code (LOC) | Full Name |
| _Default | 22 | ContactManger.gui._Default |
| Sum: | 22 | |
| Average: | 22 | |
| Minimum: | 22 | |
| Maximum: | 22 | |
| Standard deviation: | 0 | |
| Variance: | 0 |
WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE
!NameLike "^[A-Z]" AND
!(IsClassConstructor OR IsConstructor OR
IsPropertyGetter OR IsPropertySetter OR
IsIndexerGetter OR IsIndexerSetter OR
IsEventAdder OR IsEventRemover OR
IsOperator)
// The name of a regular method should begin with an Upper letter.
| methods | # lines of code (LOC) | Full Name |
| btnAdd_Click(Object,EventArgs) | 12 | ContactManger.gui.ContactListCodeBehind.btnAdd_Click(Object,EventArgs) |
| gvContacts_RowCommand(Object,GridViewCommandEventArgs) | 8 | ContactManger.gui.ContactListCodeBehind.gvContacts_RowCommand(Object,GridViewCommandEventArgs) |
| btnCancel_Click(Object,EventArgs) | 0 | ContactManger.gui.ContactListCodeBehind.btnCancel_Click(Object,EventArgs) |
| gvContacts_SelectedIndexChanged(Object,EventArgs) | 0 | ContactManger.gui.ContactListCodeBehind.gvContacts_SelectedIndexChanged(Object,EventArgs) |
| btnUpdate_Click(Object,EventArgs) | 0 | ContactManger.gui.ContactListCodeBehind.btnUpdate_Click(Object,EventArgs) |
| btnSave_Click(Object,EventArgs) | 0 | ContactManger.gui.ContactListCodeBehind.btnSave_Click(Object,EventArgs) |
| btnAdd_Click(Object,EventArgs) | 1 | ContactManger.gui._Default.btnAdd_Click(Object,EventArgs) |
| btnUpdate_Click(Object,EventArgs) | 1 | ContactManger.gui._Default.btnUpdate_Click(Object,EventArgs) |
| btnSave_Click(Object,EventArgs) | 1 | ContactManger.gui._Default.btnSave_Click(Object,EventArgs) |
| btnCancel_Click(Object,EventArgs) | 1 | ContactManger.gui._Default.btnCancel_Click(Object,EventArgs) |
| Sum: | 24 | |
| Average: | 2.4 | |
| Minimum: | 0 | |
| Maximum: | 12 | |
| Standard deviation: | 3.9294 | |
| Variance: | 15.44 |
| Type | rank | # ILInst | # lines of code | # lines of comment | % comment | lcom | lcom(HS) | CC | ILCC | Ca | Ce | ABC | # Instance Methods | # Static Methods | # Prop | # Fld | NOC | DIT | Namespace |
| IControl | 7.17 | 0 | 0 | 0 | 0 | - | - | 0 | - | 11 | 2 | - | 4 | - | 4 | - | 8 | - | ContactManager.Core.UI |
| ContactDTO | 3.01 | 131 | 23 | 0 | 0 | 0.83 | 0.91 | 15 | 4 | 7 | 6 | 3 | 12 | 0 | 8 | 3 | 0 | 1 | ContactManager.Model |
| ITextBoxAdapter | 2.59 | 0 | 0 | 0 | 0 | - | - | 0 | - | 6 | 3 | - | 2 | - | 2 | - | 3 | - | ContactManager.Core.UI |
| IListItemDTO | 2.49 | 0 | 0 | 0 | 0 | - | - | 0 | - | 3 | 2 | - | 3 | - | 3 | - | 1 | - | ContactManager.Core.UI |
| CommandHandler | 1.59 | 0 | 0 | - | - | - | - | 0 | 0 | 3 | 15 | 0 | 4 | 0 | 0 | - | 0 | 3 | ContactManager.Core.UI |
| IGridAdapter | 1.5 | 0 | 0 | 0 | 0 | - | - | 0 | - | 4 | 6 | - | 9 | - | 4 | - | 1 | - | ContactManager.Core.UI |
| IContactManagerService | 1.04 | 0 | 0 | 0 | 0 | - | - | 0 | - | 3 | 4 | - | 5 | - | 0 | - | 2 | - | ContactManager.Core |
| IContactManagerView | 0.51 | 0 | 0 | 0 | 0 | - | - | 0 | - | 2 | 6 | - | 10 | - | 10 | - | 1 | - | ContactManager.Core |
| DefaultContactManagerService | 0.46 | 192 | 34 | 0 | 0 | - | - | 8 | 10 | 1 | 19 | 24 | 6 | 1 | 0 | 1 | 0 | 1 | ContactManager.Service |
| IListControlAdapter | 0.45 | 0 | 0 | 0 | 0 | - | - | 0 | - | 1 | 4 | - | 3 | - | 0 | - | 1 | - | ContactManager.Core.UI |
| HiddenAdapter | 0.2 | 48 | 9 | 0 | 0 | 0.29 | 0.33 | 7 | 0 | 1 | 9 | 6 | 7 | 0 | 6 | 0 | 0 | 1 | ContactManager.Core.UI.Web |
| TextboxAdapter | 0.2 | 54 | 8 | 0 | 0 | 0 | 0 | 7 | 0 | 1 | 9 | 7 | 7 | 0 | 6 | 0 | 0 | 1 | ContactManager.Core.UI.Web |
| ButtonAdapter | 0.2 | 42 | 7 | 0 | 0 | 0 | 0 | 5 | 0 | 1 | 7 | 5 | 5 | 0 | 4 | 0 | 0 | 1 | ContactManager.Core.UI.Web |
| GridAdapter | 0.2 | 136 | 15 | 0 | 0 | 0.68 | 0.75 | 8 | 2 | 1 | 14 | 18 | 10 | 0 | 4 | 3 | 0 | 1 | ContactManager.Core.UI.Web |
| ContactManagerPresenter | 0.2 | 511 | 81 | 0 | 0 | 0.4 | 0.44 | 12 | 3 | 1 | 13 | 39 | 10 | 0 | 0 | 1 | 0 | 1 | ContactManager.Presentation |
| _Default | 0.15 | 152 | 22 | 0 | 0 | 0.92 | 0.97 | 20 | 2 | 0 | 79 | 15 | 18 | 0 | 10 | 11 | 0 | 4 | ContactManger.gui |
| ContactListCodeBehind | 0.15 | 477 | 81 | 1 | 1.22 | 0.77 | 0.84 | 17 | 10 | 0 | 85 | 43 | 12 | 0 | 0 | 11 | 0 | 4 | ContactManger.gui |
| ComboBoxAdapter | 0.15 | 90 | 14 | 0 | 0 | 0.12 | 0.14 | 9 | 4 | 0 | 13 | 10 | 8 | 0 | 4 | 0 | 0 | 1 | ContactManager.Core.UI.Windows |
| ListItemDTO | 0.15 | 36 | 7 | 0 | 0 | 0.5 | 0.67 | 4 | 0 | 0 | 4 | 1 | 4 | 0 | 3 | 2 | 0 | 1 | ContactManager.Core.UI |
| TextBoxAdapter | 0.15 | 54 | 8 | 0 | 0 | 0 | 0 | 7 | 0 | 0 | 8 | 7 | 7 | 0 | 6 | 0 | 0 | 1 | ContactManager.Core.UI.Windows |
| ButtonAdapter | 0.15 | 42 | 7 | 0 | 0 | 0 | 0 | 5 | 0 | 0 | 6 | 5 | 5 | 0 | 4 | 0 | 0 | 1 | ContactManager.Core.UI.Windows |
| BaseService | 0.15 | 20 | 4 | 0 | 0 | - | - | 2 | 0 | 0 | 6 | 3 | 3 | 0 | 0 | - | 0 | 1 | ContactManager.Service |
| ContactManagerService | 0.15 | 75 | 15 | 3 | 16.67 | - | - | 7 | 2 | 0 | 11 | 12 | 7 | 0 | 0 | - | 0 | 1 | ContactManager.Service |