NDepend Report

Application name: nunit_VS2005
This report has been built on: 12/14/2006 11:48:31 in 00:19
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
CQL Queries and Constraints
NDepend information and warnings

Application Metrics

Number of IL instructions: 101561
Number of lines of code: 15071
Number of lines of comment: 14544
Percentage comment: 49%
Number of assemblies: 25
Number of classes: 488
Number of types: 523
Number of abstract classes: 22
Number of interfaces: 19
Number of value types: 16
Number of exception classes: 11
Number of attribute classes: 20
Number of delegate classes: 12
Number of enumerations classes: 11
Number of generic type definitions: 0
Number of generic method definitions: 0
Percentage of public types: 83.37%
Percentage of public methods: 82.91%
Percentage of classes with at least one public field: 2.66%

Stat# OccurrencesAvgStdDevMax
Properties on Interfaces 19 Interfaces 2.164.0217 properties on Asm:nunit.core Interface:NUnit.Core.ITest
Methods on Interfaces 19 Interfaces 910.8846 methods on Asm:nunit.util Interface:NUnit.Util.ITestEvents
Arguments on Methods on Interfaces 171 Methods 0.951.036 arguments on Asm:nunit.uikit Interface:CP.Windows.Shell.FolderBrowser+IShellFolder Method:ParseDisplayName(IntPtr,IntPtr,String,ref.Int32,ref.IntPtr,ref.Int32)
Public Properties on Classes 488 Classes 1.013.0422 public properties on Asm:NDepend.CodeStructureContainer.NAssembly Class:NUnit.Core.Test
Public Methods on Classes 488 Classes 6.048.94130 public methods on Asm:nunit.framework Class:NUnit.Framework.Assert
Arguments on Public Methods on Classes 2948 Methods 0.620.966 arguments on Asm:nunit.uikit Class:CP.Windows.Shell.FolderBrowser+BrowseCallbackHandler Method:BeginInvoke(IntPtr,UInt32,UInt32,UInt32,AsyncCallback,Object)
IL Instructions in non-abstract Methods 3779 Methods 26.88176.566135 IL instructions in Asm:nunit-gui-runner Class:NUnit.Gui.ProjectEditor Method:InitializeComponent()
Cyclomatic complexity on non abstract Methods 3779 Methods 0.732.22 CC = 54 for Asm:nunit.core Type:NUnit.Core.PlatformHelper Method:IsPlatformSupported(String)

Assemblies Metrics

Assembly# Types# Abstract Types# IL instruction# lines of code# lines of comment% commentAfferent CouplingEfferent CouplingRelational CohesionInstabilityAbstractnessDistance
nunit.testutilities v2.2.8.042197312110847%7450.330.870.020.11
mock-assembly v2.2.8.06065816595%15100.170.400.6
nonamespace-assembly v2.2.8.0101216998%5510.500.5
timing-tests v2.2.8.02091176579%0180.5100
notestfixtures-assembly v2.2.8.0101014998%021100
nunit.core v2.2.8.010118117221770362067%92864.260.480.180.34
nunit-console-runner v2.2.8.030143524416139%4591.330.9400.06
nunit-gui-runner v2.2.8.0140247743411108224%72751.860.9800.02
nunit.mocks v2.2.8.011585013816153%5302.270.860.450.31
nunit.uikit v2.2.8.0452188302837164436%113181.290.970.040.01
nunit.util v2.2.8.0446109721661190653%831401.450.630.140.24
nunit.framework v2.2.8.04964015532242882%204432.860.170.120.7
nunit.mocks.tests v2.2.8.06114031804921%0260.8310.170.17
nunit.uikit.tests v2.2.8.080226437227742%0710.25100
nunit-console v2.2.8.0101014998%051100
nunit-console.tests v2.2.8.070136617712240%0290.71100
nunit.util.tests v2.2.8.03208027121372937%01080.34100
nunit.framework.tests v2.2.8.01212121421992129639%21850.640.990.020.01
nunit-gui v2.2.8.0101014998%051100
nunit-gui.tests v2.2.8.060166923819545%0450.17100
nunit-server.tests v2.2.8.02072125281%0170.5100
nunit.extensions.tests v2.2.8.080320585347%0241.25100
nunit.core.extensions v2.2.8.0902864311272%6500.330.8900.11
nunit-test-server v2.2.8.020204345461%33210.9100.09
nunit-server v2.2.8.0103994984%071100

VisualNDepend View

Assemblies Abstractness vs. Instability

Assemblies Dependencies

AssemblyDepends on...Is referenced by...
nunit.testutilities v2.2.8.0mscorlib v2.0.0.0 ; nunit.util v2.2.8.0 ; System.Windows.Forms v2.0.0.0 ; nunit.core v2.2.8.0 ; nunit.framework v2.2.8.0 ; nunit.uikit.tests v2.2.8.0 ; nunit.util.tests v2.2.8.0 ; nunit.framework.tests v2.2.8.0 ; nunit-gui.tests v2.2.8.0 ;
mock-assembly v2.2.8.0mscorlib v2.0.0.0 ; nunit.core v2.2.8.0 ; nunit.framework v2.2.8.0 ; timing-tests v2.2.8.0 ; nunit.uikit.tests v2.2.8.0 ; nunit.util.tests v2.2.8.0 ; nunit.framework.tests v2.2.8.0 ;
nonamespace-assembly v2.2.8.0mscorlib v2.0.0.0 ; nunit.framework v2.2.8.0 ; nunit.util.tests v2.2.8.0 ; nunit.framework.tests v2.2.8.0 ;
timing-tests v2.2.8.0mscorlib v2.0.0.0 ; nunit.util v2.2.8.0 ; nunit.core v2.2.8.0 ; nunit.framework v2.2.8.0 ; mock-assembly v2.2.8.0 ; -
notestfixtures-assembly v2.2.8.0mscorlib v2.0.0.0 ; -
nunit.core v2.2.8.0mscorlib v2.0.0.0 ; System v2.0.0.0 ; nunit.testutilities v2.2.8.0 ; mock-assembly v2.2.8.0 ; timing-tests v2.2.8.0 ; nunit-console-runner v2.2.8.0 ; nunit-gui-runner v2.2.8.0 ; nunit.uikit v2.2.8.0 ; nunit.util v2.2.8.0 ; nunit.uikit.tests v2.2.8.0 ; nunit.util.tests v2.2.8.0 ; nunit.framework.tests v2.2.8.0 ; nunit-server.tests v2.2.8.0 ; nunit.extensions.tests v2.2.8.0 ; nunit.core.extensions v2.2.8.0 ; nunit-test-server v2.2.8.0 ;
nunit-console-runner v2.2.8.0nunit.util v2.2.8.0 ; mscorlib v2.0.0.0 ; nunit.core v2.2.8.0 ; System.Xml v2.0.0.0 ; System v2.0.0.0 ; nunit-console v2.2.8.0 ; nunit-console.tests v2.2.8.0 ;
nunit-gui-runner v2.2.8.0nunit.util v2.2.8.0 ; System.Windows.Forms v2.0.0.0 ; mscorlib v2.0.0.0 ; nunit.core v2.2.8.0 ; nunit.uikit v2.2.8.0 ; System v2.0.0.0 ; System.Drawing v2.0.0.0 ; nunit-gui v2.2.8.0 ; nunit-gui.tests v2.2.8.0 ;
nunit.mocks v2.2.8.0mscorlib v2.0.0.0 ; nunit.framework v2.2.8.0 ; nunit.mocks.tests v2.2.8.0 ; nunit.framework.tests v2.2.8.0 ;
nunit.uikit v2.2.8.0System.Windows.Forms v2.0.0.0 ; mscorlib v2.0.0.0 ; nunit.util v2.2.8.0 ; System v2.0.0.0 ; System.Drawing v2.0.0.0 ; nunit.core v2.2.8.0 ; nunit-gui-runner v2.2.8.0 ; nunit.uikit.tests v2.2.8.0 ;
nunit.util v2.2.8.0mscorlib v2.0.0.0 ; nunit.core v2.2.8.0 ; System.Xml v2.0.0.0 ; System v2.0.0.0 ; nunit.testutilities v2.2.8.0 ; timing-tests v2.2.8.0 ; nunit-console-runner v2.2.8.0 ; nunit-gui-runner v2.2.8.0 ; nunit.uikit v2.2.8.0 ; nunit.uikit.tests v2.2.8.0 ; nunit-console.tests v2.2.8.0 ; nunit.util.tests v2.2.8.0 ; nunit.framework.tests v2.2.8.0 ; nunit-gui.tests v2.2.8.0 ;
nunit.framework v2.2.8.0mscorlib v2.0.0.0 ; System v2.0.0.0 ; nunit.testutilities v2.2.8.0 ; mock-assembly v2.2.8.0 ; nonamespace-assembly v2.2.8.0 ; timing-tests v2.2.8.0 ; nunit.mocks v2.2.8.0 ; nunit.mocks.tests v2.2.8.0 ; nunit.uikit.tests v2.2.8.0 ; nunit-console.tests v2.2.8.0 ; nunit.util.tests v2.2.8.0 ; nunit.framework.tests v2.2.8.0 ; nunit-gui.tests v2.2.8.0 ; nunit-server.tests v2.2.8.0 ; nunit.extensions.tests v2.2.8.0 ;
nunit.mocks.tests v2.2.8.0mscorlib v2.0.0.0 ; nunit.mocks v2.2.8.0 ; nunit.framework v2.2.8.0 ; -
nunit.uikit.tests v2.2.8.0mscorlib v2.0.0.0 ; nunit.util v2.2.8.0 ; nunit.testutilities v2.2.8.0 ; nunit.uikit v2.2.8.0 ; System.Windows.Forms v2.0.0.0 ; nunit.core v2.2.8.0 ; nunit.framework v2.2.8.0 ; mock-assembly v2.2.8.0 ; System.Drawing v2.0.0.0 ; -
nunit-console v2.2.8.0mscorlib v2.0.0.0 ; nunit-console-runner v2.2.8.0 ; -
nunit-console.tests v2.2.8.0mscorlib v2.0.0.0 ; nunit-console-runner v2.2.8.0 ; nunit.framework v2.2.8.0 ; nunit.util v2.2.8.0 ; -
nunit.util.tests v2.2.8.0mscorlib v2.0.0.0 ; nunit.util v2.2.8.0 ; nunit.framework v2.2.8.0 ; nunit.framework.tests v2.2.8.0 ; nunit.core v2.2.8.0 ; System.Xml v2.0.0.0 ; System v2.0.0.0 ; nunit.testutilities v2.2.8.0 ; nonamespace-assembly v2.2.8.0 ; mock-assembly v2.2.8.0 ; -
nunit.framework.tests v2.2.8.0mscorlib v2.0.0.0 ; nunit.mocks v2.2.8.0 ; nunit.framework v2.2.8.0 ; nunit.core v2.2.8.0 ; nunit.testutilities v2.2.8.0 ; System.Xml v2.0.0.0 ; System.Data v2.0.0.0 ; nunit.util v2.2.8.0 ; mock-assembly v2.2.8.0 ; nonamespace-assembly v2.2.8.0 ; System v2.0.0.0 ; nunit.util.tests v2.2.8.0 ; nunit.extensions.tests v2.2.8.0 ;
nunit-gui v2.2.8.0mscorlib v2.0.0.0 ; nunit-gui-runner v2.2.8.0 ; -
nunit-gui.tests v2.2.8.0mscorlib v2.0.0.0 ; nunit.testutilities v2.2.8.0 ; nunit-gui-runner v2.2.8.0 ; System.Drawing v2.0.0.0 ; nunit.util v2.2.8.0 ; nunit.framework v2.2.8.0 ; System.Windows.Forms v2.0.0.0 ; -
nunit-server.tests v2.2.8.0mscorlib v2.0.0.0 ; nunit.framework v2.2.8.0 ; nunit-test-server v2.2.8.0 ; System v2.0.0.0 ; nunit.core v2.2.8.0 ; System.Runtime.Remoting v2.0.0.0 ; -
nunit.extensions.tests v2.2.8.0mscorlib v2.0.0.0 ; nunit.framework.tests v2.2.8.0 ; nunit.core v2.2.8.0 ; nunit.framework v2.2.8.0 ; nunit.core.extensions v2.2.8.0 ; -
nunit.core.extensions v2.2.8.0nunit.core v2.2.8.0 ; mscorlib v2.0.0.0 ; nunit.extensions.tests v2.2.8.0 ;
nunit-test-server v2.2.8.0mscorlib v2.0.0.0 ; nunit.core v2.2.8.0 ; System.Runtime.Remoting v2.0.0.0 ; nunit-server.tests v2.2.8.0 ; nunit-server v2.2.8.0 ;
nunit-server v2.2.8.0mscorlib v2.0.0.0 ; nunit-test-server v2.2.8.0 ; -

Assemblies Dependencies Diagram

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

Assemblies build order

nunit.core
nunit.util
nunit.framework
nunit.testutilities
mock-assembly
nonamespace-assembly
timing-tests
notestfixtures-assembly
nunit-console-runner
nunit.uikit
nunit-gui-runner
nunit.mocks
nunit.mocks.tests
nunit.uikit.tests
nunit-console
nunit-console.tests
nunit.framework.tests
nunit.util.tests
nunit-gui
nunit-gui.tests
nunit-test-server
nunit-server.tests
nunit.core.extensions
nunit.extensions.tests
nunit-server

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. 10 methods on 4838 tested match the condition. --> Group {Source Code Quality constraints}
WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE NbLinesOfCode > 30 ORDER BY NbLinesOfCode DESC

// METHODS WHERE NbLinesOfCode > 30 are extremely complex and 
// should be split in smaller methods 
// (except if they are automatically generated by a tool).
methods# lines of code (LOC)Full Name
InitializeComponent()806NUnit.Gui.ProjectEditor.InitializeComponent()
InitializeComponent()781NUnit.Gui.NUnitForm.InitializeComponent()
InitializeComponent()623NUnit.Gui.OptionsDialog.InitializeComponent()
InitializeComponent()490NUnit.UiKit.TestPropertiesDialog.InitializeComponent()
InitializeComponent()307NUnit.Gui.AboutBox.InitializeComponent()
InitializeComponent()199NUnit.UiKit.ConfigurationEditor.InitializeComponent()
InitializeComponent()172NUnit.UiKit.TestTree.InitializeComponent()
InitializeComponent()160NUnit.UiKit.AddConfigurationDialog.InitializeComponent()
InitializeComponent()120NUnit.UiKit.AssemblyPathDialog.InitializeComponent()
InitializeComponent()98NUnit.UiKit.RenameConfigurationDialog.InitializeComponent()
Sum:3756
Average:375.6
Minimum:98
Maximum:806
Standard deviation:262.7
Variance:69011


WARNING: The following CQL constraint is not satisfied. 3 methods on 4838 tested match the condition. --> Group {Source Code Quality constraints}
WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE CyclomaticComplexity > 20 ORDER BY CyclomaticComplexity DESC

// METHODS WHERE CyclomaticComplexity > 15 are hard to understand and maintain.
// METHODS WHERE CyclomaticComplexity > 30 are extremely complex and should be split 
// in smaller methods (except if they are automatically generated by a tool).
methodsCyclomatic Complexity (CC)Full Name
IsPlatformSupported(String)50NUnit.Core.PlatformHelper.IsPlatformSupported(String)
IsNumericType(Object)23NUnit.Framework.EqualityAsserter.IsNumericType(Object)
Load()21NUnit.Util.NUnitProject.Load()
Sum:94
Average:31.333
Minimum:21
Maximum:50
Standard deviation:13.225
Variance:174.89


WARNING: The following CQL constraint is not satisfied. 10 methods on 4838 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.
methodsPercentage Comment# lines of code (LOC)Full Name
GetCachePath()011NUnit.Util.TestDomain.GetCachePath()
GetBinPath(String[])013NUnit.Util.TestDomain.GetBinPath(String[])
get_PrivateBinPath()016NUnit.Util.ProjectConfig.get_PrivateBinPath()
RelativePath(String,String)032NUnit.Util.PathUtils.RelativePath(String,String)
.ctor(ITest,Boolean)022NUnit.Util.UITestNode..ctor(ITest,Boolean)
LoadVS2003Project(String,XmlDocument)022NUnit.Util.VSProject.LoadVS2003Project(String,XmlDocument)
LoadMSBuildProject(String,XmlDocument)033NUnit.Util.VSProject.LoadMSBuildProject(String,XmlDocument)
IsProjectFile(String)012NUnit.Util.VSProject.IsProjectFile(String)
Initialize(TestResult)014NUnit.Util.XmlResultVisitor.Initialize(TestResult)
Visit(TestCaseResult)029NUnit.Util.XmlResultVisitor.Visit(TestCaseResult)
Sum:0204
Average:020.4
Minimum:011
Maximum:033
Standard deviation:08.0399
Variance:064.64


WARNING: The following CQL constraint is not satisfied. 10 methods on 4838 tested match the condition. --> Group {Code Quality constraints}
WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE NbILInstructions > 200 ORDER BY NbILInstructions DESC

// METHODS WHERE NbILInstructions > 200 are extremely complex and 
// should be split in smaller methods 
// (except if they are automatically generated by a tool).
methods# IL instructionsFull Name
InitializeComponent()6135NUnit.Gui.ProjectEditor.InitializeComponent()
InitializeComponent()5683NUnit.Gui.NUnitForm.InitializeComponent()
InitializeComponent()4722NUnit.Gui.OptionsDialog.InitializeComponent()
InitializeComponent()3563NUnit.UiKit.TestPropertiesDialog.InitializeComponent()
InitializeComponent()2221NUnit.Gui.AboutBox.InitializeComponent()
InitializeComponent()1474NUnit.UiKit.ConfigurationEditor.InitializeComponent()
InitializeComponent()1146NUnit.UiKit.AddConfigurationDialog.InitializeComponent()
InitializeComponent()930NUnit.UiKit.TestTree.InitializeComponent()
InitializeComponent()851NUnit.UiKit.AssemblyPathDialog.InitializeComponent()
InitializeComponent()688NUnit.UiKit.RenameConfigurationDialog.InitializeComponent()
Sum:27413
Average:2741.3
Minimum:688
Maximum:6135
Standard deviation:2006.5
Variance:4026097


WARNING: The following CQL constraint is not satisfied. 1 methods on 4838 tested match the condition. --> Group {Code Quality constraints}
WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE ILCyclomaticComplexity > 40 ORDER BY ILCyclomaticComplexity DESC

// METHODS WHERE ILCyclomaticComplexity > 20 are hard to understand and maintain.
// METHODS WHERE ILCyclomaticComplexity > 40 are extremely complex and should be split 
// in smaller methods (except if they are automatically generated by a tool).
methodsIL Cyclomatic Complexity (ILCC)Full Name
IsPlatformSupported(String)54NUnit.Core.PlatformHelper.IsPlatformSupported(String)
Sum:54
Average:54
Minimum:54
Maximum:54
Standard deviation:0
Variance:0


WARNING: The following CQL constraint is not satisfied. 5 methods on 4838 tested match the condition. --> Group {Code Quality constraints}
WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE NbParameters > 5 ORDER BY NbParameters DESC

// METHODS WHERE NbParameters > 5 might be painful to call and might degrade performance. 
// You should prefer using additional properties/fields to the declaring type to handle 
// numerous states. Another alternative is to provide a class or structure dedicated to 
// handle arguments passing (for example see the class System.Diagnostics.ProcessStartInfo 
// and the method System.Diagnostics.Process.Start(ProcessStartInfo))
methods# ParametersFull Name
.ctor(String,String,String,String,String,String,String,String,String,String,String,String,Boolean,Boolean,Boolean)15NUnit.Core.TestFixtureParameters..ctor(String,String,String,String,String,String,String,String,String,String,String,String,Boolean,Boolean,Boolean)
.ctor(String,String,String,String,String,String,Boolean)7NUnit.Core.TestFramework+FrameworkInfo..ctor(String,String,String,String,String,String,Boolean)
ParseDisplayName(IntPtr,IntPtr,String,ref.Int32,ref.IntPtr,ref.Int32)6CP.Windows.Shell.FolderBrowser+IShellFolder.ParseDisplayName(IntPtr,IntPtr,String,ref.Int32,ref.IntPtr,ref.Int32)
BeginInvoke(IntPtr,UInt32,UInt32,UInt32,AsyncCallback,Object)6CP.Windows.Shell.FolderBrowser+BrowseCallbackHandler.BeginInvoke(IntPtr,UInt32,UInt32,UInt32,AsyncCallback,Object)
GetUIObjectOf(IntPtr,Int32,ref.IntPtr,ref.Guid,ref.Int32,ref.IntPtr)6CP.Windows.Shell.FolderBrowser+IShellFolder.GetUIObjectOf(IntPtr,Int32,ref.IntPtr,ref.Guid,ref.Int32,ref.IntPtr)
Sum:40
Average:8
Minimum:6
Maximum:15
Standard deviation:3.5214
Variance:12.4


WARNING: The following CQL constraint is not satisfied. 5 methods on 4838 tested match the condition. --> Group {Code Quality constraints}
WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE NbVariables > 15 ORDER BY NbVariables DESC

// METHODS WHERE NbVariables > 8 are hard to understand and maintain.
// METHODS WHERE NbVariables > 15 are extremely complex and should be split in 
// smaller methods (except if they are automatically generated by a tool).
methods# VariablesFull Name
LoadMSBuildProject(String,XmlDocument)21NUnit.Util.VSProject.LoadMSBuildProject(String,XmlDocument)
EqualsSameTypes()21NUnit.Framework.Tests.EqualsFixture.EqualsSameTypes()
AssertEqualsSameTypes()21NUnit.Core.Tests.AssertionTest.AssertEqualsSameTypes()
Load()20NUnit.Util.VSProject.Load()
Execute(ConsoleOptions)16NUnit.ConsoleRunner.ConsoleUi.Execute(ConsoleOptions)
Sum:99
Average:19.8
Minimum:16
Maximum:21
Standard deviation:1.9391
Variance:3.76


WARNING: The following CQL constraint is not satisfied. 10 types on 982 tested match the condition. --> Group {Code Quality constraints}
WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE NbMethods > 20 ORDER BY LCOM DESC

// TYPES WHERE NbMethods > 20 might be hard to understand and maintain 
// but there might be cases where it is relevant to have a high value for NbMethods. 
// For example, the System.Windows.Forms.DataGridView standard class has more than 1000 methods.
types# MethodsLack of Cohesion Of Methods (LCOM)Full Name
NUnitForm750.9699471NUnit.Gui.NUnitForm
TestEventDispatcher720.9577295NUnit.Util.TestEventDispatcher
TestSuiteTreeView810.9484386NUnit.UiKit.TestSuiteTreeView
TestTree360.9277778NUnit.UiKit.TestTree
TestSuite330.9225589NUnit.Core.TestSuite
ProjectEditor300.912037NUnit.Gui.ProjectEditor
Test340.9117647NUnit.Core.Test
ProgressBar290.8965517NUnit.UiKit.ProgressBar
VSProjectTests230.8913044NUnit.Util.Tests.VSProjectTests
UITestNode270.8858024NUnit.Util.UITestNode
Sum:4409.2239
Average:440.9223911
Minimum:230.8858024
Maximum:810.9699471
Standard deviation:21.3310.02722502
Variance:4550.0007412016


WARNING: The following CQL constraint is not satisfied. 8 types on 982 tested match the condition. --> Group {Code Quality constraints}
WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE NbFields > 20 AND !IsEnumeration 

// TYPES WHERE NbFields > 20 AND !IsEnumeration might be hard to understand and maintain 
// but there might be cases where it is relevant to have a high value for NbFields. 
// For example, the System.Windows.Forms.Control standard class has more than 200 fields. 
// The value of the metric SizeOfInst might be a better indicator of complex type.
types# FieldsFull Name
NUnitForm63NUnit.Gui.NUnitForm
ProjectEditor36NUnit.Gui.ProjectEditor
OptionsDialog26NUnit.Gui.OptionsDialog
FormSettings22NUnit.Gui.FormSettings
TestPropertiesDialog27NUnit.UiKit.TestPropertiesDialog
TestTree35NUnit.UiKit.TestTree
FolderBrowser27CP.Windows.Shell.FolderBrowser
TestEventDispatcher23NUnit.Util.TestEventDispatcher
Sum:259
Average:32.375
Minimum:22
Maximum:63
Standard deviation:12.509
Variance:156.48


WARNING: The following CQL constraint is not satisfied. 10 methods on 4838 tested match the condition. --> Group {Code Quality constraints}
WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE 

     (  NbILInstructions > 200 OR 
        ILCyclomaticComplexity > 50 OR 
        NbParameters > 5 OR 
        NbVariables > 8) 
     AND 
// Here is a way to avoid to take account of generated methods.
// Another way would be to use the SELECT METHODS FROM or SELECT METHODS OUT OF facilities.
     !( NameLike "InitializeComponent" OR NameLike "Generated") 
methods# IL instructionsIL Cyclomatic Complexity (ILCC)# Parameters# VariablesFull Name
privateBinPathTextBox_Validating(Object,CancelEventArgs)79429NUnit.Gui.ProjectEditor.privateBinPathTextBox_Validating(Object,CancelEventArgs)
Main(String[])17110111NUnit.Gui.AppEntry.Main(String[])
.ctor()342001NUnit.UiKit.TestTree..ctor()
InvokeHandler(MulticastDelegate,EventArgs)83729NUnit.UiKit.GuiTestEventDispatcher.InvokeHandler(MulticastDelegate,EventArgs)
OnLoad(EventArgs)306917CP.Windows.Forms.TipWindow.OnLoad(EventArgs)
BeginInvoke(IntPtr,UInt32,UInt32,UInt32,AsyncCallback,Object)0060CP.Windows.Shell.FolderBrowser+BrowseCallbackHandler.BeginInvoke(IntPtr,UInt32,UInt32,UInt32,AsyncCallback,Object)
GetUIObjectOf(IntPtr,Int32,ref.IntPtr,ref.Guid,ref.Int32,ref.IntPtr)0060CP.Windows.Shell.FolderBrowser+IShellFolder.GetUIObjectOf(IntPtr,Int32,ref.IntPtr,ref.Guid,ref.Int32,ref.IntPtr)
ParseDisplayName(IntPtr,IntPtr,String,ref.Int32,ref.IntPtr,ref.Int32)0060CP.Windows.Shell.FolderBrowser+IShellFolder.ParseDisplayName(IntPtr,IntPtr,String,ref.Int32,ref.IntPtr,ref.Int32)
AssertEqualsSameTypes()1550021NUnit.Core.Tests.AssertionTest.AssertEqualsSameTypes()
CheckPlatforms(PlatformHelper,String,String)12812313NUnit.Core.Tests.PlatformDetectionTests.CheckPlatforms(PlatformHelper,String,String)
Sum:1264422771
Average:126.44.22.77.1
Minimum:0000
Maximum:34212621
Standard deviation:115.594.62172.32596.625
Variance:1336121.365.4143.89


WARNING: The following CQL constraint is not satisfied. 10 types on 982 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.
typesLack of Cohesion Of Methods (LCOM)# Fields# MethodsFull Name
NUnitForm0.96994716375NUnit.Gui.NUnitForm
TestEventDispatcher0.95772952372NUnit.Util.TestEventDispatcher
TestSuiteTreeView0.94843861781NUnit.UiKit.TestSuiteTreeView
TestTree0.92777783536NUnit.UiKit.TestTree
ConsoleOptions0.92279411716NUnit.ConsoleRunner.ConsoleOptions
ProjectEditor0.9120373630NUnit.Gui.ProjectEditor
ProgressBar0.89655171129NUnit.UiKit.ProgressBar
UITestNode0.88580241227NUnit.Util.UITestNode
TipWindow0.88265311428CP.Windows.Forms.TipWindow
TestPropertiesDialog0.86507932714NUnit.UiKit.TestPropertiesDialog
Sum:9.1688255408
Average:0.91688125.540.8
Minimum:0.86507931114
Maximum:0.96994716381
Standard deviation:0.0330054415.11523.928
Variance:0.001089359228.45572.56


WARNING: The following CQL constraint is not satisfied. 10 types on 982 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).
typesSize of instanceFull Name
NUnitForm268NUnit.Gui.NUnitForm
ProjectEditor144NUnit.Gui.ProjectEditor
TestTree140NUnit.UiKit.TestTree
GenericTestFixture123NUnit.Core.GenericTestFixture
SampleFixtureExtension123NUnit.Core.Extensions.SampleFixtureExtension
NUnitTestFixture123NUnit.Core.NUnitTestFixture
CSUnitTestFixture123NUnit.Core.Builders.CSUnitTestFixture
VstsTestFixture123NUnit.Core.Builders.VstsTestFixture
TestPropertiesDialog108NUnit.UiKit.TestPropertiesDialog
OptionsDialog104NUnit.Gui.OptionsDialog
Sum:1379
Average:137.9
Minimum:104
Maximum:268
Standard deviation:44.856
Variance:2012.1


WARNING: The following CQL constraint is not satisfied. 81 types on 982 tested match the condition. --> Group {Performance constraints}
WARN IF Percentage > 5 IN SELECT TYPES WHERE IsUsingBoxing OR IsUsingUnboxing 

// Thanks to generics, boxing and unboxing should be rare.
types# lines of code (LOC)Full Name
Sum:8529
Average:105.3
Minimum:4
Maximum:1096
Standard deviation:182.34
Variance:33247.3


WARNING: The following CQL constraint is not satisfied. 1 assemblies on 32 tested match the condition. --> Group {Design constraints}
WARN IF Count > 0 IN SELECT TOP 10 ASSEMBLIES WHERE ContainsNamespaceDependencyCycle

 // Dependency cycles between namespaces must be avoided 
// in order to have a levelized and comprehensive design.
assemblies# lines of code (LOC)Full Name
nunit.core1770nunit.core
Sum:1770
Average:1770
Minimum:1770
Maximum:1770
Standard deviation:0
Variance:0


WARNING: The following CQL constraint is not satisfied. 10 methods on 3779 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. 
methodsAfferent coupling at method level (MethodCa)Full Name
Dispose(Boolean)0NUnit.Gui.NUnitForm.Dispose(Boolean)
InvokeRunFinished(Object,TestEventArgs)0NUnit.Gui.NUnitForm.InvokeRunFinished(Object,TestEventArgs)
Dispose(Boolean)0NUnit.Gui.ProjectEditor.Dispose(Boolean)
get_TestLoaderUI()0NUnit.Gui.ProjectEditor.get_TestLoaderUI()
Dispose(Boolean)0NUnit.Gui.OptionsDialog.Dispose(Boolean)
Dispose(Boolean)0NUnit.Gui.AboutBox.Dispose(Boolean)
Dispose(Boolean)0NUnit.Gui.ExceptionDetailsForm.Dispose(Boolean)
InvalidOption(String)0NUnit.Gui.GuiOptions.InvalidOption(String)
Dispose(Boolean)0NUnit.UiKit.TestPropertiesDialog.Dispose(Boolean)
ProcessKeyPreview(ref.Message)0NUnit.UiKit.TestPropertiesDialog.ProcessKeyPreview(ref.Message)
Sum:0
Average:0
Minimum:0
Maximum:0
Standard deviation:0
Variance:0


WARNING: The following CQL constraint is not satisfied. 5 types on 523 tested match the condition. --> Group {Design constraints}
WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE TypeCa == 0 AND !IsPublic 

// Detect unused types. 
typesAfferent coupling at type level (TypeCa)Full Name
EmptyFixture0NUnit.Core.Tests.EmptyFixture
MockFixture0NUnit.Core.Tests.MockFixture
SampleFixtureExtension0NUnit.Core.Extensions.SampleFixtureExtension
TestServerConsoleApp0NUnit.TestServer.TestServerConsoleApp
Class10NUnit.ConsoleRunner.Class1
Sum:0
Average:0
Minimum:0
Maximum:0
Standard deviation:0
Variance:0


WARNING: The following CQL constraint is not satisfied. 10 types on 982 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.
typesSize of instanceFull Name
AppEntry0NUnit.Gui.AppEntry
TestLoaderUI0NUnit.UiKit.TestLoaderUI
UserMessage0NUnit.UiKit.UserMessage
NotRunTree0NUnit.UiKit.NotRunTree
CheckFailedNodesVisitor0NUnit.UiKit.CheckFailedNodesVisitor
RestoreVisualStateVisitor0NUnit.UiKit.RestoreVisualStateVisitor
TestEventInvocationException0NUnit.UiKit.TestEventInvocationException
ClearCheckedNodesVisitor0NUnit.UiKit.ClearCheckedNodesVisitor
SelectedTestChangedHandler0NUnit.UiKit.SelectedTestChangedHandler
SelectedTestsChangedEventHandler0NUnit.UiKit.SelectedTestsChangedEventHandler
Sum:0
Average:0
Minimum:0
Maximum:0
Standard deviation:0
Variance:0


WARNING: The following CQL constraint is not satisfied. 10 types on 982 tested match the condition. --> Group {Design constraints}
WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE DepthOfInheritance >= 6 ORDER BY DepthOfInheritance DESC 

 // Branches too long in the derivation should be avoided.
typesDepth of inheritanceFull Name
SampleFixtureExtension8NUnit.Core.Extensions.SampleFixtureExtension
AssemblyListBox7NUnit.UiKit.AssemblyListBox
RenameConfigurationDialog7NUnit.UiKit.RenameConfigurationDialog
AssemblyPathDialog7NUnit.UiKit.AssemblyPathDialog
TipWindow7CP.Windows.Forms.TipWindow
VstsTestFixture7NUnit.Core.Builders.VstsTestFixture
CSUnitTestFixture7NUnit.Core.Builders.CSUnitTestFixture
NUnitTestFixture7NUnit.Core.NUnitTestFixture
AddConfigurationDialog7NUnit.UiKit.AddConfigurationDialog
ProjectEditor7NUnit.Gui.ProjectEditor
Sum:71
Average:7.1
Minimum:7
Maximum:8
Standard deviation:0.3000022
Variance:0.09000135


WARNING: The following CQL constraint is not satisfied. 10 assemblies on 32 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.
assembliesRelational cohesionFull Name
nunit.uikit1.2889nunit.uikit
nunit.framework.tests0.6446281nunit.framework.tests
nunit.core4.2574nunit.core
nunit.util1.4545nunit.util
nunit.util.tests0.34375nunit.util.tests
nunit.uikit.tests0.25nunit.uikit.tests
nunit-console-runner1.3333nunit-console-runner
nunit-gui.tests0.1666667nunit-gui.tests
nunit.mocks.tests0.8333333nunit.mocks.tests
nunit-console.tests0.7142857nunit-console.tests
Sum:11.287
Average:1.1287
Minimum:0.1666667
Maximum:4.2574
Standard deviation:1.13
Variance:1.277


WARNING: The following CQL constraint is not satisfied. 6 types on 982 tested match the condition. --> Group {Naming constraints}
WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE IsInterface AND !NameLike "^I" AND !IsNested 

// The name of a non-nested interface should begin with a 'I'
types# lines of code (LOC)Full Name
ResultVisitor0NUnit.Core.ResultVisitor
EventListener0NUnit.Core.EventListener
TestRunner0NUnit.Core.TestRunner
RecentFiles0NUnit.Util.RecentFiles
_ExceptionN/ASystem.Runtime.InteropServices._Exception
_AttributeN/ASystem.Runtime.InteropServices._Attribute
Sum:0
Average:0
Minimum:0
Maximum:0
Standard deviation:0
Variance:0


WARNING: The following CQL constraint is not satisfied. 1 types on 982 tested match the condition. --> Group {Naming constraints}
WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE IsExceptionClass AND !NameLike "Exception$" 

// The name of an exception class should end with 'Exception'
types# lines of code (LOC)Full Name
FailFixture+ExceptionWithBadStackTrace2NUnit.Core.Tests.FailFixture+ExceptionWithBadStackTrace
Sum:2
Average:2
Minimum:2
Maximum:2
Standard deviation:0
Variance:0


WARNING: The following CQL constraint is not satisfied. 2 types on 982 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
_ExceptionN/ASystem.Runtime.InteropServices._Exception
_AttributeN/ASystem.Runtime.InteropServices._Attribute
Sum:0
Average:0
Minimum:0
Maximum:0
Standard deviation:0
Variance:0


WARNING: The following CQL constraint is not satisfied. 10 methods on 4838 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
projectMenu_Popup(Object,EventArgs)16NUnit.Gui.NUnitForm.projectMenu_Popup(Object,EventArgs)
helpMenuItem_Click(Object,EventArgs)12NUnit.Gui.NUnitForm.helpMenuItem_Click(Object,E