NDepend Report
Application name: nunit_VS2005
This report has been built on: 12/14/2006 11:48:31
in 00:19
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 | # Occurrences | Avg | StdDev | Max |
|
Properties on Interfaces
| 19 Interfaces
| 2.16 | 4.02 | 17 properties on Asm:nunit.core Interface:NUnit.Core.ITest |
|
Methods on Interfaces
| 19 Interfaces
| 9 | 10.88 | 46 methods on Asm:nunit.util Interface:NUnit.Util.ITestEvents |
|
Arguments on Methods on Interfaces
| 171 Methods
| 0.95 | 1.03 | 6 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.01 | 3.04 | 22 public properties on Asm:NDepend.CodeStructureContainer.NAssembly Class:NUnit.Core.Test |
|
Public Methods on Classes
| 488 Classes
| 6.04 | 8.94 | 130 public methods on Asm:nunit.framework Class:NUnit.Framework.Assert |
|
Arguments on Public Methods on Classes
| 2948 Methods
| 0.62 | 0.96 | 6 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.88 | 176.56 | 6135 IL instructions in Asm:nunit-gui-runner Class:NUnit.Gui.ProjectEditor Method:InitializeComponent() |
|
|
|
Cyclomatic complexity on non abstract Methods
| 3779 Methods
| 0.73 | 2.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 | % comment | Afferent Coupling | Efferent Coupling | Relational Cohesion | Instability | Abstractness | Distance |
| nunit.testutilities v2.2.8.0 | 42 | 1 | 973 | 121 | 108 | 47% | 7 | 45 | 0.33 | 0.87 | 0.02 | 0.11 |
| mock-assembly v2.2.8.0 | 6 | 0 | 65 | 8 | 165 | 95% | 15 | 10 | 0.17 | 0.4 | 0 | 0.6 |
| nonamespace-assembly v2.2.8.0 | 1 | 0 | 12 | 1 | 69 | 98% | 5 | 5 | 1 | 0.5 | 0 | 0.5 |
| timing-tests v2.2.8.0 | 2 | 0 | 91 | 17 | 65 | 79% | 0 | 18 | 0.5 | 1 | 0 | 0 |
| notestfixtures-assembly v2.2.8.0 | 1 | 0 | 10 | 1 | 49 | 98% | 0 | 2 | 1 | 1 | 0 | 0 |
| nunit.core v2.2.8.0 | 101 | 18 | 11722 | 1770 | 3620 | 67% | 92 | 86 | 4.26 | 0.48 | 0.18 | 0.34 |
| nunit-console-runner v2.2.8.0 | 3 | 0 | 1435 | 244 | 161 | 39% | 4 | 59 | 1.33 | 0.94 | 0 | 0.06 |
| nunit-gui-runner v2.2.8.0 | 14 | 0 | 24774 | 3411 | 1082 | 24% | 7 | 275 | 1.86 | 0.98 | 0 | 0.02 |
| nunit.mocks v2.2.8.0 | 11 | 5 | 850 | 138 | 161 | 53% | 5 | 30 | 2.27 | 0.86 | 0.45 | 0.31 |
| nunit.uikit v2.2.8.0 | 45 | 2 | 18830 | 2837 | 1644 | 36% | 11 | 318 | 1.29 | 0.97 | 0.04 | 0.01 |
| nunit.util v2.2.8.0 | 44 | 6 | 10972 | 1661 | 1906 | 53% | 83 | 140 | 1.45 | 0.63 | 0.14 | 0.24 |
| nunit.framework v2.2.8.0 | 49 | 6 | 4015 | 532 | 2428 | 82% | 204 | 43 | 2.86 | 0.17 | 0.12 | 0.7 |
| nunit.mocks.tests v2.2.8.0 | 6 | 1 | 1403 | 180 | 49 | 21% | 0 | 26 | 0.83 | 1 | 0.17 | 0.17 |
| nunit.uikit.tests v2.2.8.0 | 8 | 0 | 2264 | 372 | 277 | 42% | 0 | 71 | 0.25 | 1 | 0 | 0 |
| nunit-console v2.2.8.0 | 1 | 0 | 10 | 1 | 49 | 98% | 0 | 5 | 1 | 1 | 0 | 0 |
| nunit-console.tests v2.2.8.0 | 7 | 0 | 1366 | 177 | 122 | 40% | 0 | 29 | 0.71 | 1 | 0 | 0 |
| nunit.util.tests v2.2.8.0 | 32 | 0 | 8027 | 1213 | 729 | 37% | 0 | 108 | 0.34 | 1 | 0 | 0 |
| nunit.framework.tests v2.2.8.0 | 121 | 2 | 12142 | 1992 | 1296 | 39% | 2 | 185 | 0.64 | 0.99 | 0.02 | 0.01 |
| nunit-gui v2.2.8.0 | 1 | 0 | 10 | 1 | 49 | 98% | 0 | 5 | 1 | 1 | 0 | 0 |
| nunit-gui.tests v2.2.8.0 | 6 | 0 | 1669 | 238 | 195 | 45% | 0 | 45 | 0.17 | 1 | 0 | 0 |
| nunit-server.tests v2.2.8.0 | 2 | 0 | 72 | 12 | 52 | 81% | 0 | 17 | 0.5 | 1 | 0 | 0 |
| nunit.extensions.tests v2.2.8.0 | 8 | 0 | 320 | 58 | 53 | 47% | 0 | 24 | 1.25 | 1 | 0 | 0 |
| nunit.core.extensions v2.2.8.0 | 9 | 0 | 286 | 43 | 112 | 72% | 6 | 50 | 0.33 | 0.89 | 0 | 0.11 |
| nunit-test-server v2.2.8.0 | 2 | 0 | 204 | 34 | 54 | 61% | 3 | 32 | 1 | 0.91 | 0 | 0.09 |
| nunit-server v2.2.8.0 | 1 | 0 | 39 | 9 | 49 | 84% | 0 | 7 | 1 | 1 | 0 | 0 |
VisualNDepend View

Assemblies Abstractness vs. Instability

Assemblies Dependencies
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() | 806 | NUnit.Gui.ProjectEditor.InitializeComponent() |
| InitializeComponent() | 781 | NUnit.Gui.NUnitForm.InitializeComponent() |
| InitializeComponent() | 623 | NUnit.Gui.OptionsDialog.InitializeComponent() |
| InitializeComponent() | 490 | NUnit.UiKit.TestPropertiesDialog.InitializeComponent() |
| InitializeComponent() | 307 | NUnit.Gui.AboutBox.InitializeComponent() |
| InitializeComponent() | 199 | NUnit.UiKit.ConfigurationEditor.InitializeComponent() |
| InitializeComponent() | 172 | NUnit.UiKit.TestTree.InitializeComponent() |
| InitializeComponent() | 160 | NUnit.UiKit.AddConfigurationDialog.InitializeComponent() |
| InitializeComponent() | 120 | NUnit.UiKit.AssemblyPathDialog.InitializeComponent() |
| InitializeComponent() | 98 | NUnit.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).
| methods | Cyclomatic Complexity (CC) | Full Name |
| IsPlatformSupported(String) | 50 | NUnit.Core.PlatformHelper.IsPlatformSupported(String) |
| IsNumericType(Object) | 23 | NUnit.Framework.EqualityAsserter.IsNumericType(Object) |
| Load() | 21 | NUnit.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.
| methods | Percentage Comment | # lines of code (LOC) | Full Name |
| GetCachePath() | 0 | 11 | NUnit.Util.TestDomain.GetCachePath() |
| GetBinPath(String[]) | 0 | 13 | NUnit.Util.TestDomain.GetBinPath(String[]) |
| get_PrivateBinPath() | 0 | 16 | NUnit.Util.ProjectConfig.get_PrivateBinPath() |
| RelativePath(String,String) | 0 | 32 | NUnit.Util.PathUtils.RelativePath(String,String) |
| .ctor(ITest,Boolean) | 0 | 22 | NUnit.Util.UITestNode..ctor(ITest,Boolean) |
| LoadVS2003Project(String,XmlDocument) | 0 | 22 | NUnit.Util.VSProject.LoadVS2003Project(String,XmlDocument) |
| LoadMSBuildProject(String,XmlDocument) | 0 | 33 | NUnit.Util.VSProject.LoadMSBuildProject(String,XmlDocument) |
| IsProjectFile(String) | 0 | 12 | NUnit.Util.VSProject.IsProjectFile(String) |
| Initialize(TestResult) | 0 | 14 | NUnit.Util.XmlResultVisitor.Initialize(TestResult) |
| Visit(TestCaseResult) | 0 | 29 | NUnit.Util.XmlResultVisitor.Visit(TestCaseResult) |
| Sum: | 0 | 204 | |
| Average: | 0 | 20.4 | |
| Minimum: | 0 | 11 | |
| Maximum: | 0 | 33 | |
| Standard deviation: | 0 | 8.0399 | |
| Variance: | 0 | 64.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 instructions | Full Name |
| InitializeComponent() | 6135 | NUnit.Gui.ProjectEditor.InitializeComponent() |
| InitializeComponent() | 5683 | NUnit.Gui.NUnitForm.InitializeComponent() |
| InitializeComponent() | 4722 | NUnit.Gui.OptionsDialog.InitializeComponent() |
| InitializeComponent() | 3563 | NUnit.UiKit.TestPropertiesDialog.InitializeComponent() |
| InitializeComponent() | 2221 | NUnit.Gui.AboutBox.InitializeComponent() |
| InitializeComponent() | 1474 | NUnit.UiKit.ConfigurationEditor.InitializeComponent() |
| InitializeComponent() | 1146 | NUnit.UiKit.AddConfigurationDialog.InitializeComponent() |
| InitializeComponent() | 930 | NUnit.UiKit.TestTree.InitializeComponent() |
| InitializeComponent() | 851 | NUnit.UiKit.AssemblyPathDialog.InitializeComponent() |
| InitializeComponent() | 688 | NUnit.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).
| methods | IL Cyclomatic Complexity (ILCC) | Full Name |
| IsPlatformSupported(String) | 54 | NUnit.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 | # Parameters | Full Name |
| .ctor(String,String,String,String,String,String,String,String,String,String,String,String,Boolean,Boolean,Boolean) | 15 | NUnit.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) | 7 | NUnit.Core.TestFramework+FrameworkInfo..ctor(String,String,String,String,String,String,Boolean) |
| ParseDisplayName(IntPtr,IntPtr,String,ref.Int32,ref.IntPtr,ref.Int32) | 6 | CP.Windows.Shell.FolderBrowser+IShellFolder.ParseDisplayName(IntPtr,IntPtr,String,ref.Int32,ref.IntPtr,ref.Int32) |
| BeginInvoke(IntPtr,UInt32,UInt32,UInt32,AsyncCallback,Object) | 6 | CP.Windows.Shell.FolderBrowser+BrowseCallbackHandler.BeginInvoke(IntPtr,UInt32,UInt32,UInt32,AsyncCallback,Object) |
| GetUIObjectOf(IntPtr,Int32,ref.IntPtr,ref.Guid,ref.Int32,ref.IntPtr) | 6 | CP.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 | # Variables | Full Name |
| LoadMSBuildProject(String,XmlDocument) | 21 | NUnit.Util.VSProject.LoadMSBuildProject(String,XmlDocument) |
| EqualsSameTypes() | 21 | NUnit.Framework.Tests.EqualsFixture.EqualsSameTypes() |
| AssertEqualsSameTypes() | 21 | NUnit.Core.Tests.AssertionTest.AssertEqualsSameTypes() |
| Load() | 20 | NUnit.Util.VSProject.Load() |
| Execute(ConsoleOptions) | 16 | NUnit.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 | # Methods | Lack of Cohesion Of Methods (LCOM) | Full Name |
| NUnitForm | 75 | 0.9699471 | NUnit.Gui.NUnitForm |
| TestEventDispatcher | 72 | 0.9577295 | NUnit.Util.TestEventDispatcher |
| TestSuiteTreeView | 81 | 0.9484386 | NUnit.UiKit.TestSuiteTreeView |
| TestTree | 36 | 0.9277778 | NUnit.UiKit.TestTree |
| TestSuite | 33 | 0.9225589 | NUnit.Core.TestSuite |
| ProjectEditor | 30 | 0.912037 | NUnit.Gui.ProjectEditor |
| Test | 34 | 0.9117647 | NUnit.Core.Test |
| ProgressBar | 29 | 0.8965517 | NUnit.UiKit.ProgressBar |
| VSProjectTests | 23 | 0.8913044 | NUnit.Util.Tests.VSProjectTests |
| UITestNode | 27 | 0.8858024 | NUnit.Util.UITestNode |
| Sum: | 440 | 9.2239 | |
| Average: | 44 | 0.9223911 | |
| Minimum: | 23 | 0.8858024 | |
| Maximum: | 81 | 0.9699471 | |
| Standard deviation: | 21.331 | 0.02722502 | |
| Variance: | 455 | 0.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 | # Fields | Full Name |
| NUnitForm | 63 | NUnit.Gui.NUnitForm |
| ProjectEditor | 36 | NUnit.Gui.ProjectEditor |
| OptionsDialog | 26 | NUnit.Gui.OptionsDialog |
| FormSettings | 22 | NUnit.Gui.FormSettings |
| TestPropertiesDialog | 27 | NUnit.UiKit.TestPropertiesDialog |
| TestTree | 35 | NUnit.UiKit.TestTree |
| FolderBrowser | 27 | CP.Windows.Shell.FolderBrowser |
| TestEventDispatcher | 23 | NUnit.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 instructions | IL Cyclomatic Complexity (ILCC) | # Parameters | # Variables | Full Name |
| privateBinPathTextBox_Validating(Object,CancelEventArgs) | 79 | 4 | 2 | 9 | NUnit.Gui.ProjectEditor.privateBinPathTextBox_Validating(Object,CancelEventArgs) |
| Main(String[]) | 171 | 10 | 1 | 11 | NUnit.Gui.AppEntry.Main(String[]) |
| .ctor() | 342 | 0 | 0 | 1 | NUnit.UiKit.TestTree..ctor() |
| InvokeHandler(MulticastDelegate,EventArgs) | 83 | 7 | 2 | 9 | NUnit.UiKit.GuiTestEventDispatcher.InvokeHandler(MulticastDelegate,EventArgs) |
| OnLoad(EventArgs) | 306 | 9 | 1 | 7 | CP.Windows.Forms.TipWindow.OnLoad(EventArgs) |
| BeginInvoke(IntPtr,UInt32,UInt32,UInt32,AsyncCallback,Object) | 0 | 0 | 6 | 0 | CP.Windows.Shell.FolderBrowser+BrowseCallbackHandler.BeginInvoke(IntPtr,UInt32,UInt32,UInt32,AsyncCallback,Object) |
| GetUIObjectOf(IntPtr,Int32,ref.IntPtr,ref.Guid,ref.Int32,ref.IntPtr) | 0 | 0 | 6 | 0 | CP.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) | 0 | 0 | 6 | 0 | CP.Windows.Shell.FolderBrowser+IShellFolder.ParseDisplayName(IntPtr,IntPtr,String,ref.Int32,ref.IntPtr,ref.Int32) |
| AssertEqualsSameTypes() | 155 | 0 | 0 | 21 | NUnit.Core.Tests.AssertionTest.AssertEqualsSameTypes() |
| CheckPlatforms(PlatformHelper,String,String) | 128 | 12 | 3 | 13 | NUnit.Core.Tests.PlatformDetectionTests.CheckPlatforms(PlatformHelper,String,String) |
| Sum: | 1264 | 42 | 27 | 71 | |
| Average: | 126.4 | 4.2 | 2.7 | 7.1 | |
| Minimum: | 0 | 0 | 0 | 0 | |
| Maximum: | 342 | 12 | 6 | 21 | |
| Standard deviation: | 115.59 | 4.6217 | 2.3259 | 6.625 | |
| Variance: | 13361 | 21.36 | 5.41 | 43.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.
| types | Lack of Cohesion Of Methods (LCOM) | # Fields | # Methods | Full Name |
| NUnitForm | 0.9699471 | 63 | 75 | NUnit.Gui.NUnitForm |
| TestEventDispatcher | 0.9577295 | 23 | 72 | NUnit.Util.TestEventDispatcher |
| TestSuiteTreeView | 0.9484386 | 17 | 81 | NUnit.UiKit.TestSuiteTreeView |
| TestTree | 0.9277778 | 35 | 36 | NUnit.UiKit.TestTree |
| ConsoleOptions | 0.9227941 | 17 | 16 | NUnit.ConsoleRunner.ConsoleOptions |
| ProjectEditor | 0.912037 | 36 | 30 | NUnit.Gui.ProjectEditor |
| ProgressBar | 0.8965517 | 11 | 29 | NUnit.UiKit.ProgressBar |
| UITestNode | 0.8858024 | 12 | 27 | NUnit.Util.UITestNode |
| TipWindow | 0.8826531 | 14 | 28 | CP.Windows.Forms.TipWindow |
| TestPropertiesDialog | 0.8650793 | 27 | 14 | NUnit.UiKit.TestPropertiesDialog |
| Sum: | 9.1688 | 255 | 408 | |
| Average: | 0.916881 | 25.5 | 40.8 | |
| Minimum: | 0.8650793 | 11 | 14 | |
| Maximum: | 0.9699471 | 63 | 81 | |
| Standard deviation: | 0.03300544 | 15.115 | 23.928 | |
| Variance: | 0.001089359 | 228.45 | 572.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).
| types | Size of instance | Full Name |
| NUnitForm | 268 | NUnit.Gui.NUnitForm |
| ProjectEditor | 144 | NUnit.Gui.ProjectEditor |
| TestTree | 140 | NUnit.UiKit.TestTree |
| GenericTestFixture | 123 | NUnit.Core.GenericTestFixture |
| SampleFixtureExtension | 123 | NUnit.Core.Extensions.SampleFixtureExtension |
| NUnitTestFixture | 123 | NUnit.Core.NUnitTestFixture |
| CSUnitTestFixture | 123 | NUnit.Core.Builders.CSUnitTestFixture |
| VstsTestFixture | 123 | NUnit.Core.Builders.VstsTestFixture |
| TestPropertiesDialog | 108 | NUnit.UiKit.TestPropertiesDialog |
| OptionsDialog | 104 | NUnit.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.core | 1770 | nunit.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.
| methods | Afferent coupling at method level (MethodCa) | Full Name |
| Dispose(Boolean) | 0 | NUnit.Gui.NUnitForm.Dispose(Boolean) |
| InvokeRunFinished(Object,TestEventArgs) | 0 | NUnit.Gui.NUnitForm.InvokeRunFinished(Object,TestEventArgs) |
| Dispose(Boolean) | 0 | NUnit.Gui.ProjectEditor.Dispose(Boolean) |
| get_TestLoaderUI() | 0 | NUnit.Gui.ProjectEditor.get_TestLoaderUI() |
| Dispose(Boolean) | 0 | NUnit.Gui.OptionsDialog.Dispose(Boolean) |
| Dispose(Boolean) | 0 | NUnit.Gui.AboutBox.Dispose(Boolean) |
| Dispose(Boolean) | 0 | NUnit.Gui.ExceptionDetailsForm.Dispose(Boolean) |
| InvalidOption(String) | 0 | NUnit.Gui.GuiOptions.InvalidOption(String) |
| Dispose(Boolean) | 0 | NUnit.UiKit.TestPropertiesDialog.Dispose(Boolean) |
| ProcessKeyPreview(ref.Message) | 0 | NUnit.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.
| types | Afferent coupling at type level (TypeCa) | Full Name |
| EmptyFixture | 0 | NUnit.Core.Tests.EmptyFixture |
| MockFixture | 0 | NUnit.Core.Tests.MockFixture |
| SampleFixtureExtension | 0 | NUnit.Core.Extensions.SampleFixtureExtension |
| TestServerConsoleApp | 0 | NUnit.TestServer.TestServerConsoleApp |
| Class1 | 0 | NUnit.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.
| types | Size of instance | Full Name |
| AppEntry | 0 | NUnit.Gui.AppEntry |
| TestLoaderUI | 0 | NUnit.UiKit.TestLoaderUI |
| UserMessage | 0 | NUnit.UiKit.UserMessage |
| NotRunTree | 0 | NUnit.UiKit.NotRunTree |
| CheckFailedNodesVisitor | 0 | NUnit.UiKit.CheckFailedNodesVisitor |
| RestoreVisualStateVisitor | 0 | NUnit.UiKit.RestoreVisualStateVisitor |
| TestEventInvocationException | 0 | NUnit.UiKit.TestEventInvocationException |
| ClearCheckedNodesVisitor | 0 | NUnit.UiKit.ClearCheckedNodesVisitor |
| SelectedTestChangedHandler | 0 | NUnit.UiKit.SelectedTestChangedHandler |
| SelectedTestsChangedEventHandler | 0 | NUnit.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.
| types | Depth of inheritance | Full Name |
| SampleFixtureExtension | 8 | NUnit.Core.Extensions.SampleFixtureExtension |
| AssemblyListBox | 7 | NUnit.UiKit.AssemblyListBox |
| RenameConfigurationDialog | 7 | NUnit.UiKit.RenameConfigurationDialog |
| AssemblyPathDialog | 7 | NUnit.UiKit.AssemblyPathDialog |
| TipWindow | 7 | CP.Windows.Forms.TipWindow |
| VstsTestFixture | 7 | NUnit.Core.Builders.VstsTestFixture |
| CSUnitTestFixture | 7 | NUnit.Core.Builders.CSUnitTestFixture |
| NUnitTestFixture | 7 | NUnit.Core.NUnitTestFixture |
| AddConfigurationDialog | 7 | NUnit.UiKit.AddConfigurationDialog |
| ProjectEditor | 7 | NUnit.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.
| assemblies | Relational cohesion | Full Name |
| nunit.uikit | 1.2889 | nunit.uikit |
| nunit.framework.tests | 0.6446281 | nunit.framework.tests |
| nunit.core | 4.2574 | nunit.core |
| nunit.util | 1.4545 | nunit.util |
| nunit.util.tests | 0.34375 | nunit.util.tests |
| nunit.uikit.tests | 0.25 | nunit.uikit.tests |
| nunit-console-runner | 1.3333 | nunit-console-runner |
| nunit-gui.tests | 0.1666667 | nunit-gui.tests |
| nunit.mocks.tests | 0.8333333 | nunit.mocks.tests |
| nunit-console.tests | 0.7142857 | nunit-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 |
| ResultVisitor | 0 | NUnit.Core.ResultVisitor |
| EventListener | 0 | NUnit.Core.EventListener |
| TestRunner | 0 | NUnit.Core.TestRunner |
| RecentFiles | 0 | NUnit.Util.RecentFiles |
| _Exception | N/A | System.Runtime.InteropServices._Exception |
| _Attribute | N/A | System.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+ExceptionWithBadStackTrace | 2 | NUnit.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 |
| _Exception | N/A | System.Runtime.InteropServices._Exception |
| _Attribute | N/A | System.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) | 16 | NUnit.Gui.NUnitForm.projectMenu_Popup(Object,EventArgs) |
| helpMenuItem_Click(Object,EventArgs) | 12 | NUnit.Gui.NUnitForm.helpMenuItem_Click(Object,E |