NDepend Report

Application name: ContactManger (Quick Project)
This report has been built on: 03/24/2007 22:00:32 in 00:35 by NDepend v2.0.6.677 (Pro Edition)
To get explanations concerning these metrics, go to the NDepend home page.

Application Metrics
Assemblies Metrics
VisualNDepend View
Assemblies Abstractness vs. Instability
Assemblies Dependencies
Assemblies Dependencies Diagram
Assemblies build order
NDepend information and warnings
CQL Queries and Constraints
Types Metrics

Application Metrics

Number of IL instructions: 2060
Number of lines of code: 335
Number of lines of comment: 106
Percentage comment: 24%
Number of assemblies: 5
Number of classes: 16
Number of types: 23
Number of abstract classes: 0
Number of interfaces: 7
Number of value types: 0
Number of exception classes: 0
Number of attribute classes: 0
Number of delegate classes: 1
Number of enumerations classes: 0
Number of generic type definitions: 0
Number of generic method definitions: 2
Percentage of public types: 100%
Percentage of public methods: 85.8%
Percentage of classes with at least one public field: 0%

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()

Assemblies Metrics

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

VisualNDepend View

Assemblies Abstractness vs. Instability

Assemblies Dependencies

Assembly Depends on... Is referenced by...
ContactManger.gui v1.0.0.0 System.Web v2.0.0.0 ; ContactManager.Core v1.0.0.0 ; ContactManager.Presentation v1.0.0.0 ; mscorlib v2.0.0.0 ; ContactManager.Model v1.0.0.0 ; NHibernate v1.0.2.0 ; System.Data v2.0.0.0 ; -
ContactManager.Core v1.0.0.0 mscorlib v2.0.0.0 ; System.Windows.Forms v2.0.0.0 ; System.Web v2.0.0.0 ; ContactManager.Model v1.0.0.0 ; ContactManger.gui v1.0.0.0 ; ContactManager.Presentation v1.0.0.0 ; ContactManager.Service v1.0.0.0 ;
ContactManager.Model v1.0.0.0 mscorlib v2.0.0.0 ; ContactManger.gui v1.0.0.0 ; ContactManager.Core v1.0.0.0 ; ContactManager.Presentation v1.0.0.0 ; ContactManager.Service v1.0.0.0 ;
ContactManager.Presentation v1.0.0.0 mscorlib v2.0.0.0 ; ContactManager.Core v1.0.0.0 ; ContactManager.Model v1.0.0.0 ; ContactManager.Service v1.0.0.0 ; ContactManger.gui v1.0.0.0 ;
ContactManager.Service v1.0.0.0 mscorlib v2.0.0.0 ; ContactManager.Core v1.0.0.0 ; System.Data v2.0.0.0 ; ContactManager.Model v1.0.0.0 ; NHibernate v1.0.2.0 ; ContactManager.Presentation v1.0.0.0 ;

Assemblies Dependencies Diagram

Blue : Assemblies of your application.
Yellow : Framework assemblies referenced by assemblies of your application.

Assemblies build order

ContactManager.Model
ContactManager.Core
ContactManager.Service
ContactManager.Presentation
ContactManger.gui

NDepend information and warnings

INFO: 03/24/2007 21:59:56 NDepend v2.0.6.677
INFO: 03/24/2007 21:59:56 Retrieve dependencies of your application.
INFO: Assemblies loaded from {C:\[SVN]\DeveloperNotes\trunk\MVP Demo\src\ContactManger.UI.Web\bin} ContactManger.gui.dll v1.0.0.0 ContactManager.Core.dll v1.0.0.0 ContactManager.Model.dll v1.0.0.0 ContactManager.Presentation.dll v1.0.0.0 ContactManager.Service.dll v1.0.0.0 NHibernate.dll v1.0.2.0
INFO: Assemblies loaded from {C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727} System.Web.dll v2.0.0.0 mscorlib.dll v2.0.0.0 System.Data.dll v2.0.0.0 System.Windows.Forms.dll v2.0.0.0
INFO: 03/24/2007 22:00:25 Analyse dependencies of your application.
INFO: No dependency cycle detected in assemblies referencement graph.
WARNING: Versioning issue: Assembly {ContactManger.gui v1.0.0.0} references both versions {2.0.0.0} and {1.0.5000.0} of the assembly {mscorlib}. NDepend will only consider the highest version.

WARNING: Versioning issue: Assembly {ContactManager.Service v1.0.0.0} references both versions {2.0.0.0} and {1.0.5000.0} of the assembly {mscorlib}. NDepend will only consider the highest version.

WARNING: Versioning issue: Assembly {ContactManager.Service v1.0.0.0} references both versions {2.0.0.0} and {1.0.5000.0} of the assembly {System.Data}. NDepend will only consider the highest version.

WARNING: ContactManager.Service (instability:0.96) is referenced by ContactManager.Presentation (instability:0.93) but has a greater instability.

WARNING: Versioning issue: Assembly {ContactManger.gui v1.0.0.0} references {System.Data v1.0.5000.0} but NDepend has loaded {System.Data v2.0.0.0}


ContactManger.gui._Default
WARNING: In the context of this application, the method {ContactManger.gui._Default.Page_Load(Object,EventArgs)} is never used.
C:\[SVN]\DeveloperNotes\trunk\MVP Demo\src\ContactManger.UI.Web\ContactList.aspx.cs Ln 27

WARNING: In the context of this application, the method {ContactManger.gui._Default.btnSave_Click(Object,EventArgs)} is never used.
C:\[SVN]\DeveloperNotes\trunk\MVP Demo\src\ContactManger.UI.Web\ContactList.aspx.cs Ln 36

WARNING: In the context of this application, the method {ContactManger.gui._Default.btnUpdate_Click(Object,EventArgs)} is never used.
C:\[SVN]\DeveloperNotes\trunk\MVP Demo\src\ContactManger.UI.Web\ContactList.aspx.cs Ln 41

WARNING: In the context of this application, the method {ContactManger.gui._Default.btnAdd_Click(Object,EventArgs)} is never used.
C:\[SVN]\DeveloperNotes\trunk\MVP Demo\src\ContactManger.UI.Web\ContactList.aspx.cs Ln 46

WARNING: In the context of this application, the method {ContactManger.gui._Default.btnCancel_Click(Object,EventArgs)} is never used.
C:\[SVN]\DeveloperNotes\trunk\MVP Demo\src\ContactManger.UI.Web\ContactList.aspx.cs Ln 51

WARNING: In the context of this application, the method {ContactManger.gui._Default.gvContacts_RowEditing(Object,GridViewEditEventArgs)} is never used.
C:\[SVN]\DeveloperNotes\trunk\MVP Demo\src\ContactManger.UI.Web\ContactList.aspx.cs Ln 124

WARNING: In the context of this application, the method {ContactManger.gui._Default.gvContacts_RowDeleting(Object,GridViewDeleteEventArgs)} is never used.
C:\[SVN]\DeveloperNotes\trunk\MVP Demo\src\ContactManger.UI.Web\ContactList.aspx.cs Ln 129

WARNING: In the context of this application, the field {ContactManger.gui._Default.form1} is never used.

WARNING: In the context of this application, the field {ContactManger.gui._Default.contactId} could have the visibility {private} instead of the visibility {protected}.

WARNING: In the context of this application, the field {ContactManger.gui._Default.txtFirstName} could have the visibility {private} instead of the visibility {protected}.

WARNING: In the context of this application, the field {ContactManger.gui._Default.txtLastName} could have the visibility {private} instead of the visibility {protected}.

WARNING: In the context of this application, the field {ContactManger.gui._Default.txtEmailAddress} could have the visibility {private} instead of the visibility {protected}.

WARNING: In the context of this application, the field {ContactManger.gui._Default.btnSave} could have the visibility {private} instead of the visibility {protected}.

WARNING: In the context of this application, the field {ContactManger.gui._Default.btnUpdate} could have the visibility {private} instead of the visibility {protected}.

WARNING: In the context of this application, the field {ContactManger.gui._Default.btnAdd} could have the visibility {private} instead of the visibility {protected}.

WARNING: In the context of this application, the field {ContactManger.gui._Default.btnCancel} could have the visibility {private} instead of the visibility {protected}.

WARNING: In the context of this application, the field {ContactManger.gui._Default.gvContacts} could have the visibility {private} instead of the visibility {protected}.

WARNING: In the context of this application, the type {ContactManger.gui._Default} is never used.
C:\[SVN]\DeveloperNotes\trunk\MVP Demo\src\ContactManger.UI.Web\ContactList.aspx.cs Ln 23


ContactManger.gui.ContactListCodeBehind
WARNING: In the context of this application, the method {ContactManger.gui.ContactListCodeBehind.Page_Load(Object,EventArgs)} is never used.
C:\[SVN]\DeveloperNotes\trunk\MVP Demo\src\ContactManger.UI.Web\ContactListCodeBehind.aspx.cs Ln 42

WARNING: In the context of this application, the method {ContactManger.gui.ContactListCodeBehind.btnAdd_Click(Object,EventArgs)} is never used.
C:\[SVN]\DeveloperNotes\trunk\MVP Demo\src\ContactManger.UI.Web\ContactListCodeBehind.aspx.cs Ln 77

WARNING: In the context of this application, the method {ContactManger.gui.ContactListCodeBehind.gvContacts_RowCommand(Object,GridViewCommandEventArgs)} is never used.
C:\[SVN]\DeveloperNotes\trunk\MVP Demo\src\ContactManger.UI.Web\ContactListCodeBehind.aspx.cs Ln 137

WARNING: In the context of this application, the method {ContactManger.gui.ContactListCodeBehind.btnUpdate_Click(Object,EventArgs)} is never used.
C:\[SVN]\DeveloperNotes\trunk\MVP Demo\src\ContactManger.UI.Web\ContactListCodeBehind.aspx.cs Ln 158

WARNING: In the context of this application, the method {ContactManger.gui.ContactListCodeBehind.btnSave_Click(Object,EventArgs)} is never used.
C:\[SVN]\DeveloperNotes\trunk\MVP Demo\src\ContactManger.UI.Web\ContactListCodeBehind.aspx.cs Ln 163

WARNING: In the context of this application, the method {ContactManger.gui.ContactListCodeBehind.btnCancel_Click(Object,EventArgs)} is never used.
C:\[SVN]\DeveloperNotes\trunk\MVP Demo\src\ContactManger.UI.Web\ContactListCodeBehind.aspx.cs Ln 167

WARNING: In the context of this application, the method {ContactManger.gui.ContactListCodeBehind.gvContacts_SelectedIndexChanged(Object,EventArgs)} is never used.
C:\[SVN]\DeveloperNotes\trunk\MVP Demo\src\ContactManger.UI.Web\ContactListCodeBehind.aspx.cs Ln 172

WARNING: In the context of this application, the field {ContactManger.gui.ContactListCodeBehind.form1} is never used.

WARNING: In the context of this application, the field {ContactManger.gui.ContactListCodeBehind.txtContactId} could have the visibility {private} instead of the visibility {protected}.

WARNING: In the context of this application, the field {ContactManger.gui.ContactListCodeBehind.txtFirstName} could have the visibility {private} instead of the visibility {protected}.

WARNING: In the context of this application, the field {ContactManger.gui.ContactListCodeBehind.txtLastName} could have the visibility {private} instead of the visibility {protected}.

WARNING: In the context of this application, the field {ContactManger.gui.ContactListCodeBehind.txtEmailAddress} could have the visibility {private} instead of the visibility {protected}.

WARNING: In the context of this application, the field {ContactManger.gui.ContactListCodeBehind.btnSave} could have the visibility {private} instead of the visibility {protected}.

WARNING: In the context of this application, the field {ContactManger.gui.ContactListCodeBehind.btnUpdate} could have the visibility {private} instead of the visibility {protected}.

WARNING: In the context of this application, the field {ContactManger.gui.ContactListCodeBehind.btnAdd} could have the visibility {private} instead of the visibility {protected}.

WARNING: In the context of this application, the field {ContactManger.gui.ContactListCodeBehind.btnCancel} could have the visibility {private} instead of the visibility {protected}.

WARNING: In the context of this application, the field {ContactManger.gui.ContactListCodeBehind.gvContacts} could have the visibility {private} instead of the visibility {protected}.

WARNING: In the context of this application, the type {ContactManger.gui.ContactListCodeBehind} is never used.
C:\[SVN]\DeveloperNotes\trunk\MVP Demo\src\ContactManger.UI.Web\ContactListCodeBehind.aspx.cs Ln 14


ContactManager.Presentation.ContactManagerPresenter
WARNING: In the context of this application, the constructor {ContactManager.Presentation.ContactManagerPresenter..ctor(IContactManagerView,IContactManagerService)} could have the visibility {private} instead of the visibility {public}.
C:\[SVN]\DeveloperNotes\trunk\MVP Demo\src\ContactManager.Presentation\ContactManagerPresenter.cs Ln 21

WARNING: In the context of this application, the method {ContactManager.Presentation.ContactManagerPresenter.EditContact(String)} could have the visibility {private} instead of the visibility {public}.
C:\[SVN]\DeveloperNotes\trunk\MVP Demo\src\ContactManager.Presentation\ContactManagerPresenter.cs Ln 53

WARNING: In the context of this application, the method {ContactManager.Presentation.ContactManagerPresenter.DeleteContact(String)} could have the visibility {private} instead of the visibility {public}.
C:\[SVN]\DeveloperNotes\trunk\MVP Demo\src\ContactManager.Presentation\ContactManagerPresenter.cs Ln 76


ContactManager.Service.BaseService
WARNING: In the context of this application, the method {ContactManager.Service.BaseService.ExecuteQuery<T>(String)} is never used.
C:\[SVN]\DeveloperNotes\trunk\MVP Demo\src\ContactManager.Service\BaseService.cs Ln 17

WARNING: In the context of this application, the method {ContactManager.Service.BaseService.Map<T>(IDataReader)} is never used.
C:\[SVN]\DeveloperNotes\trunk\MVP Demo\src\ContactManager.Service\BaseService.cs Ln 26

WARNING: In the context of this application, the type {ContactManager.Service.BaseService} is never used.
C:\[SVN]\DeveloperNotes\trunk\MVP Demo\src\ContactManager.Service\BaseService.cs Ln 15


ContactManager.Service.ContactManagerService
WARNING: In the context of this application, the method {ContactManager.Service.ContactManagerService.GetContacts()} is never used.
C:\[SVN]\DeveloperNotes\trunk\MVP Demo\src\ContactManager.Service\ContactManagerService.cs Ln 12

WARNING: In the context of this application, the type {ContactManager.Service.ContactManagerService} is never used.
C:\[SVN]\DeveloperNotes\trunk\MVP Demo\src\ContactManager.Service\ContactManagerService.cs Ln 10


ContactManager.Core.UI.IListControlAdapter
WARNING: In the context of this application, the type {ContactManager.Core.UI.IListControlAdapter} could have the visibility {internal} instead of the visibility {public}.
C:\[SVN]\DeveloperNotes\trunk\MVP Demo\src\ContactManager.core\UI\IListControlAdapter.cs Ln 8


ContactManager.Core.UI.Windows.ComboBoxAdapter
WARNING: In the context of this application, the type {ContactManager.Core.UI.Windows.ComboBoxAdapter} is never used.
C:\[SVN]\DeveloperNotes\trunk\MVP Demo\src\ContactManager.core\UI\Windows\ComboBoxAdapter.cs Ln 10


ContactManager.Core.UI.IListItemDTO
WARNING: In the context of this application, the type {ContactManager.Core.UI.IListItemDTO} could have the visibility {internal} instead of the visibility {public}.
C:\[SVN]\DeveloperNotes\trunk\MVP Demo\src\ContactManager.core\UI\ListItemDTO.cs Ln 9


ContactManager.Core.UI.ListItemDTO
WARNING: In the context of this application, the type {ContactManager.Core.UI.ListItemDTO} is never used.
C:\[SVN]\DeveloperNotes\trunk\MVP Demo\src\ContactManager.core\UI\ListItemDTO.cs Ln 16


ContactManager.Core.UI.Windows.TextBoxAdapter
WARNING: In the context of this application, the type {ContactManager.Core.UI.Windows.TextBoxAdapter} is never used.
C:\[SVN]\DeveloperNotes\trunk\MVP Demo\src\ContactManager.core\UI\Windows\TextboxAdapter.cs Ln 10


ContactManager.Core.UI.Windows.ButtonAdapter
WARNING: In the context of this application, the type {ContactManager.Core.UI.Windows.ButtonAdapter} is never used.
C:\[SVN]\DeveloperNotes\trunk\MVP Demo\src\ContactManager.core\UI\Windows\ButtonAdapter.cs Ln 9

CQL Queries and Constraints

{Source Code Quality constraints} Some CQL constraints are not satisfied.
{Code Quality constraints} Some CQL constraints are not satisfied.
{Performance constraints} Some CQL constraints are not satisfied.
{Design constraints} Some CQL constraints are not satisfied.
{Naming constraints} Some CQL constraints are not satisfied.
{Queries to understand code} All CQL queries compile and all CQL contraints are satisfied.
{Constraints extracted from code} All CQL queries compile and all CQL contraints are satisfied.


WARNING: The following CQL constraint is not satisfied. 7 methods on 231 tested match the condition. --> Group {Source Code Quality constraints}
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


WARNING: The following CQL constraint is not satisfied. 1 types on 132 tested match the condition. --> Group {Code Quality constraints}
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


WARNING: The following CQL constraint is not satisfied. 1 types on 132 tested match the condition. --> Group {Code Quality constraints}
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


WARNING: The following CQL constraint is not satisfied. 2 types on 132 tested match the condition. --> Group {Performance constraints}
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


WARNING: The following CQL constraint is not satisfied. 10 methods on 162 tested match the condition. --> Group {Design constraints}
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


WARNING: The following CQL constraint is not satisfied. 3 types on 132 tested match the condition. --> Group {Design constraints}
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


WARNING: The following CQL constraint is not satisfied. 10 types on 132 tested match the condition. --> Group {Design constraints}
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


WARNING: The following CQL constraint is not satisfied. 5 assemblies on 10 tested match the condition. --> Group {Design constraints}
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


WARNING: The following CQL constraint is not satisfied. 1 types on 132 tested match the condition. --> Group {Naming constraints}
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


WARNING: The following CQL constraint is not satisfied. 10 methods on 231 tested match the condition. --> Group {Naming constraints}
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

Types Metrics

rank: TypeRank (based on Google PageRank algo)
lcom/lcom HS: Lack of Cohesion Of Methods of a class (HS means Henderson-Sellers formula)
CC: Cyclomatic Complexity computed on source code
ILCC: Cyclomatic Complexity computed on IL code
Ca: Afferent Coupling
Ce: Efferent Coupling
ABC: Association Between Classes
NOC: Number Of Children
DIT: Depth in Inheritance Tree

A pink cell means that its value belongs to the 15% highest values for its metric

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