NDepend Report

Application name: SimpleNote (Quick Project)
This report has been built on: 11/22/2008 15:36:24 in 00:44 by NDepend v2.10.4.2598 (Pro Edition)
To get explanations concerning these metrics, go to the NDepend home page.

Application Metrics
Assemblies Metrics
Visual NDepend 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: 9638
Number of lines of code: 1306
Number of lines of comment: 393
Percentage comment: 23%
Number of assemblies: 1
Number of classes: 49
Number of types: 53
Number of abstract classes: 0
Number of interfaces: 1
Number of value types: 3
Number of exception classes: 2
Number of attribute classes: 0
Number of delegate classes: 4
Number of enumerations classes: 2
Number of generic type definitions: 0
Number of generic method definitions: 1
Percentage of public types: 81.13%
Percentage of public methods: 64.91%
Percentage of classes with at least one public field: 16.33%

Stat # Occurrences Avg StdDev Max
Properties on Interfaces 1 Interfaces 0 0 0 properties on Asm:SimpleNote Interface:SimpleNote.IEngineOperationParams
Methods on Interfaces 1 Interfaces 0 0 0 methods on Asm:SimpleNote Interface:SimpleNote.IEngineOperationParams
Arguments on Methods on Interfaces 0 Methods 0 0 -1 arguments on
Public Properties on Classes 49 Classes 1.31 2.38 14 public properties on Asm:NDepend.CodeStructureContainer.NAssembly Class:SimpleNote.Properties.Settings
Public Methods on Classes 49 Classes 5.27 6.02 28 public methods on Asm:SimpleNote Class:SimpleNote.Properties.Settings
Arguments on Public Methods on Classes 258 Methods 0.71 0.85 4 arguments on Asm:SimpleNote Class:SimpleNote.DataModel+NotesRowChangeEventHandler Method:BeginInvoke(Object,DataModel+NotesRowChangeEvent,AsyncCallback,Object)
IL Instructions in non-abstract Methods 399 Methods 24.16 43.57 441 IL instructions in Asm:SimpleNote Class:SimpleNote.DataSourceWindow Method:acceptButton_Click(Object,RoutedEventArgs)
Cyclomatic complexity on non abstract Methods 399 Methods 1.19 3.51 CC = 39 for Asm:SimpleNote Type:SimpleNote.DataSourceWindow Method:acceptButton_Click(Object,RoutedEventArgs)

Assemblies Metrics

Assembly # Types # Abstract Types # IL instruction # lines of code # lines of comment % comment Afferent Coupling Efferent Coupling Relational Cohesion Instability Abstractness Distance
SimpleNote v1.0.2.0 53 1 9638 1306 393 23% 0 306 2.85 1 0.02 0.02

Visual NDepend View

Assemblies Abstractness vs. Instability

Assemblies Dependencies

Assembly Depends on... Is referenced by...
SimpleNote v1.0.2.0 mscorlib v2.0.0.0 ; PresentationFramework v3.0.0.0 ; WindowsBase v3.0.0.0 ; System.Data v2.0.0.0 ; System.Data.DataSetExtensions v3.5.0.0 ; System v2.0.0.0 ; System.Windows.Forms v2.0.0.0 ; PresentationCore v3.0.0.0 ; System.Drawing v2.0.0.0 ; System.Core v3.5.0.0 ; System.Xml v2.0.0.0 ; Microsoft.VisualBasic v8.0.0.0 ; -

Assemblies Dependencies Diagram

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

Assemblies build order

SimpleNote

NDepend information and warnings

11/22/2008 15:35:39 Begin analysis with NDepend v2.10.4.2598
11/22/2008 15:35:39 Retrieve dependencies of your application.
Don't load a previous analysis to compare with.
Assemblies loaded from {C:\Windows\Microsoft.NET\Framework\v2.0.50727} mscorlib.dll v2.0.0.0 System.Data.dll v2.0.0.0 System.dll v2.0.0.0 System.Drawing.dll v2.0.0.0 Microsoft.VisualBasic.dll v8.0.0.0 System.Xml.dll v2.0.0.0 System.Windows.Forms.dll v2.0.0.0
Assemblies loaded from {C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0} PresentationFramework.dll v3.0.0.0 WindowsBase.dll v3.0.0.0 PresentationCore.dll v3.0.0.0
Assemblies loaded from {C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5} System.Data.DataSetExtensions.dll v3.5.0.0 System.Core.dll v3.5.0.0
Assemblies loaded from {C:\Users\peancor\Documents\svn\SimpleNote\Source\SimpleNote\bin\Debug} SimpleNote.exe v1.0.2.0
0 CQL constraint has been extracted from code.
11/22/2008 15:36:00 Analyse dependencies of your application.
No dependency cycle detected in assemblies referencement graph.
11/22/2008 15:36:24 End NDepend analyse.
11/22/2008 15:36:24 Duration: 00:00:44
11/22/2008 15:36:24 Building the report (standard).

CQL Queries and Constraints

{Code Quality} Some CQL constraints are not satisfied.
{Code Quality \ Type Metrics} Some CQL constraints are not satisfied.
{Design} Some CQL constraints are not satisfied.
{Design \ Performance} Some CQL constraints are not satisfied.
{Unused Code / Dead Code} Some CQL constraints are not satisfied.
{Encapsulation} Some CQL constraints are not satisfied.
{Encapsulation \ Methods Optimal Encapsulation} Some CQL constraints are not satisfied.
{Encapsulation \ Types Optimal Encapsulation} Some CQL constraints are not satisfied.
{Encapsulation \ Fields Optimal Encapsulation} Some CQL constraints are not satisfied.
{Diff / Changes / Evolution} All CQL queries compile and all CQL contraints are satisfied.
{Test Coverage} Some CQL constraints are not satisfied.
{Purity / Immutability / Side-Effects} Some CQL constraints are not satisfied.
{Naming Conventions} Some CQL constraints are not satisfied.
{Naming Conventions \ Name too long} Some CQL constraints are not satisfied.
{.NET Framework Usage} Some CQL constraints are not satisfied.
{.NET Framework Usage \ System} Some CQL constraints are not satisfied.
{.NET Framework Usage \ System.Collection} All CQL queries compile and all CQL contraints are satisfied.
{.NET Framework Usage \ System.Runtime.InteropServices} Some CQL constraints are not satisfied.
{.NET Framework Usage \ System.Threading} All CQL queries compile and all CQL contraints are satisfied.
{.NET Framework Usage \ System.Xml} All CQL queries compile and all CQL contraints are satisfied.
{Constraints extracted from Source Code} No active CQL query compiled.


WARNING: The following CQL constraint is not satisfied. 10 methods on 793 tested match the condition. --> Group {Code Quality}
// <Name>Quick summary of methods to refactor</Name>

WARN IF Count > 0 IN SELECT TOP 10 METHODS /*OUT OF "YourGeneratedCode" */ WHERE 

                                           
// Metrics' definitions
     (  NbLinesOfCode > 30 OR              // http://www.ndepend.com/Metrics.aspx#NbLinesOfCode
        NbILInstructions > 200 OR          // http://www.ndepend.com/Metrics.aspx#NbILInstructions
        CyclomaticComplexity > 20 OR       // http://www.ndepend.com/Metrics.aspx#CC
        ILCyclomaticComplexity > 50 OR     // http://www.ndepend.com/Metrics.aspx#ILCC
        ILNestingDepth > 4 OR              // http://www.ndepend.com/Metrics.aspx#ILNestingDepth
        NbParameters > 5 OR                // http://www.ndepend.com/Metrics.aspx#NbParameters
        NbVariables > 8 OR                 // http://www.ndepend.com/Metrics.aspx#NbVariables
        NbOverloads > 6 )                  // http://www.ndepend.com/Metrics.aspx#NbOverloads
     AND 

     
// Here are some ways to avoid taking account of generated methods.
     !( NameIs "InitializeComponent()" OR
        
// NDepend.CQL.GeneratedAttribute is defined in the redistributable assembly $NDependInstallDir$\Lib\NDepend.CQL.dll
        // You can define your own attribute to mark "Generated".
        HasAttribute "OPTIONAL:NDepend.CQL.GeneratedAttribute") 
methods # lines of code (LOC) # IL instructions Cyclomatic Complexity (CC) IL Cyclomatic Complexity (ILCC) IL Nesting Depth # Parameters # Variables # Overloads Full Name
.ctor(SerializationInfo,StreamingContext) 31 196 6 7 2 2 5 2 SimpleNote.DataModel..ctor(SerializationInfo,StreamingContext)
GetTypedDataSetSchema(XmlSchemaSet) 30 167 9 13 5 1 11 1 SimpleNote.DataModel.GetTypedDataSetSchema(XmlSchemaSet)
FromFile(String,String) 18 107 3 6 2 2 13 1 SimpleNote.DataModel.FromFile(String,String)
GetTypedTableSchema(XmlSchemaSet) 46 235 9 13 5 1 14 1 SimpleNote.DataModel+NotesDataTable.GetTypedTableSchema(XmlSchemaSet)
GetTypedTableSchema(XmlSchemaSet) 46 235 9 13 5 1 14 1 SimpleNote.DataModel+CategoriesDataTable.GetTypedTableSchema(XmlSchemaSet)
Execute(EngineOperation,IEngineOperationParams) 32 276 20 27 4 2 10 1 SimpleNote.Engine.Execute(EngineOperation,IEngineOperationParams)
GetTypedTableSchema(XmlSchemaSet) 46 235 9 13 5 1 14 1 SimpleNote.DataModel+NotesRelationshipsDataTable.GetTypedTableSchema(XmlSchemaSet)
exportButton_Click(Object,RoutedEventArgs) 11 126 4 10 3 2 11 1 SimpleNote.SearchWindow.exportButton_Click(Object,RoutedEventArgs)
.ctor() 30 207 2 8 1 0 8 1 SimpleNote.Notification..ctor()
acceptButton_Click(Object,RoutedEventArgs) 50 441 19 39 4 2 15 1 SimpleNote.DataSourceWindow.acceptButton_Click(Object,RoutedEventArgs)
Sum: 340 2225 90 149 36 14 115 11
Average: 34 222.5 9 14.9 3.6 1.4 11.5 1.1
Minimum: 11 107 2 6 1 0 5 1
Maximum: 50 441 20 39 5 2 15 2
Standard deviation: 12.321 88.175 5.831 9.7719 1.4283 0.663325 3.0083 0.2999999
Variance: 151.8 7774.9 34 95.49 2.04 0.4400001 9.05 0.08999994


WARNING: The following CQL constraint is not satisfied. 7 methods on 793 tested match the condition. --> Group {Code Quality}
// <Name>Methods too big (NbLinesOfCode)</Name>
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).
// See the definition of the NbLinesOfCode metric here http://www.ndepend.com/Metrics.aspx#NbLinesOfCode
methods # lines of code (LOC) Full Name
acceptButton_Click(Object,RoutedEventArgs) 50 SimpleNote.DataSourceWindow.acceptButton_Click(Object,RoutedEventArgs)
GetTypedTableSchema(XmlSchemaSet) 46 SimpleNote.DataModel+NotesRelationshipsDataTable.GetTypedTableSchema(XmlSchemaSet)
GetTypedTableSchema(XmlSchemaSet) 46 SimpleNote.DataModel+CategoriesDataTable.GetTypedTableSchema(XmlSchemaSet)
GetTypedTableSchema(XmlSchemaSet) 46 SimpleNote.DataModel+NotesDataTable.GetTypedTableSchema(XmlSchemaSet)
Execute(EngineOperation,IEngineOperationParams) 32 SimpleNote.Engine.Execute(EngineOperation,IEngineOperationParams)
<Execute>b__6(Object) 31 SimpleNote.Engine+<>c__DisplayClass14.<Execute>b__6(Object)
.ctor(SerializationInfo,StreamingContext) 31 SimpleNote.DataModel..ctor(SerializationInfo,StreamingContext)
Sum: 282
Average: 40.286
Minimum: 31
Maximum: 50
Standard deviation: 7.8688
Variance: 61.918


WARNING: The following CQL constraint is not satisfied. 7 methods on 793 tested match the condition. --> Group {Code Quality}
// <Name>Methods too big (NbILInstructions)</Name>
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).
// See the definition of the NbILInstructions metric here http://www.ndepend.com/Metrics.aspx#NbILInstructions
methods # IL instructions Full Name
acceptButton_Click(Object,RoutedEventArgs) 441 SimpleNote.DataSourceWindow.acceptButton_Click(Object,RoutedEventArgs)
Execute(EngineOperation,IEngineOperationParams) 276 SimpleNote.Engine.Execute(EngineOperation,IEngineOperationParams)
<Execute>b__6(Object) 252 SimpleNote.Engine+<>c__DisplayClass14.<Execute>b__6(Object)
GetTypedTableSchema(XmlSchemaSet) 235 SimpleNote.DataModel+NotesDataTable.GetTypedTableSchema(XmlSchemaSet)
GetTypedTableSchema(XmlSchemaSet) 235 SimpleNote.DataModel+CategoriesDataTable.GetTypedTableSchema(XmlSchemaSet)
GetTypedTableSchema(XmlSchemaSet) 235 SimpleNote.DataModel+NotesRelationshipsDataTable.GetTypedTableSchema(XmlSchemaSet)
.ctor() 207 SimpleNote.Notification..ctor()
Sum: 1881
Average: 268.71
Minimum: 207
Maximum: 441
Standard deviation: 72.932
Variance: 5319.1


WARNING: The following CQL constraint is not satisfied. 4 methods on 793 tested match the condition. --> Group {Code Quality}
// <Name>Methods too complex (ILNestingDepth)</Name>
WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE ILNestingDepth > 4 ORDER BY ILNestingDepth DESC
// METHODS WHERE ILNestingDepth > 4 are hard to understand and maintain. 
// METHODS WHERE ILNestingDepth > 8 is higher than 8 are extremely complex and should be split in smaller methods 
// (except if they are automatically generated by a tool). 
// See the definition of the NbILInstructions metric here http://www.NDepend.com/Metrics.aspx#ILNestingDepth
methods IL Nesting Depth Full Name
GetTypedTableSchema(XmlSchemaSet) 5 SimpleNote.DataModel+CategoriesDataTable.GetTypedTableSchema(XmlSchemaSet)
GetTypedTableSchema(XmlSchemaSet) 5 SimpleNote.DataModel+NotesRelationshipsDataTable.GetTypedTableSchema(XmlSchemaSet)
GetTypedDataSetSchema(XmlSchemaSet) 5 SimpleNote.DataModel.GetTypedDataSetSchema(XmlSchemaSet)
GetTypedTableSchema(XmlSchemaSet) 5 SimpleNote.DataModel+NotesDataTable.GetTypedTableSchema(XmlSchemaSet)
Sum: 20
Average: 5
Minimum: 5
Maximum: 5
Standard deviation: 0
Variance: 0


WARNING: The following CQL constraint is not satisfied. 10 methods on 793 tested match the condition. --> Group {Code Quality}
// <Name>Methods poorly commented (PercentageComment)</Name>
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.
// See the definition of the PercentageComment metric here http://www.ndepend.com/Metrics.aspx#PercentageComment
methods Percentage Comment # lines of code (LOC) Full Name
GetTypedTableSchema(XmlSchemaSet) 0 46 SimpleNote.DataModel+NotesRelationshipsDataTable.GetTypedTableSchema(XmlSchemaSet)
Request(EngineOperation,IEngineOperationParams) 0 15 SimpleNote.Engine.Request(EngineOperation,IEngineOperationParams)
GetTypedTableSchema(XmlSchemaSet) 0 46 SimpleNote.DataModel+CategoriesDataTable.GetTypedTableSchema(XmlSchemaSet)
exportButton_Click(Object,RoutedEventArgs) 0 11 SimpleNote.SearchWindow.exportButton_Click(Object,RoutedEventArgs)
ToUpperEx(String) 0 17 SimpleNote.SearchExtensionsMethods.ToUpperEx(String)
bootWithWindowsButton_Click(Object,RoutedEventArgs) 0 15 SimpleNote.OptionsWindow.bootWithWindowsButton_Click(Object,RoutedEventArgs)
set_State(NotificationState) 0 14 SimpleNote.Notification.set_State(NotificationState)
InitClass() 0 12 SimpleNote.DataModel+NotesDataTable.InitClass()
ReadXmlSerializable(XmlReader) 0 20 SimpleNote.DataModel.ReadXmlSerializable(XmlReader)
GetTypedDataSetSchema(XmlSchemaSet) 0 30 SimpleNote.DataModel.GetTypedDataSetSchema(XmlSchemaSet)
Sum: 0 226
Average: 0 22.6
Minimum: 0 11
Maximum: 0 46
Standard deviation: 0 12.745
Variance: 0 162.44


WARNING: The following CQL constraint is not satisfied. 6 types on 373 tested match the condition. --> Group {Code Quality \ Type Metrics}
// <Name>Types with too many methods</Name>
WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE NbMethods > 20 ORDER BY NbMethods 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.
// See the definition of the NbMethods metric here http://www.ndepend.com/Metrics.aspx#NbMethods
types # Methods Full Name
DataModel+NotesDataTable 32 SimpleNote.DataModel+NotesDataTable
DataModel+CategoriesDataTable 31 SimpleNote.DataModel+CategoriesDataTable
DataModel+NotesRelationshipsDataTable 30 SimpleNote.DataModel+NotesRelationshipsDataTable
Settings 29 SimpleNote.Properties.Settings
DataModel 27 SimpleNote.DataModel
Hotkey 22 SimpleNote.Hotkey
Sum: 171
Average: 28.5
Minimum: 22
Maximum: 32
Standard deviation: 3.304
Variance: 10.917


WARNING: The following CQL constraint is not satisfied. 1 types on 373 tested match the condition. --> Group {Code Quality \ Type Metrics}
// <Name>Types with too many fields</Name>
WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE NbFields > 20 AND !IsEnumeration ORDER BY NbFields DESC
// 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 NbFields might be a better indicator of complex type.
// See the definition of the NbFields metric here http://www.ndepend.com/Metrics.aspx#NbFields
types # Fields Full Name
SearchWindow 25 SimpleNote.SearchWindow
Sum: 25
Average: 25
Minimum: 25
Maximum: 25
Standard deviation: 0
Variance: 0


WARNING: The following CQL constraint is not satisfied. 3 types on 373 tested match the condition. --> Group {Code Quality \ Type Metrics}
// <Name>Types with poor cohesion (LCOM)</Name>
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.
// See the definition of the LCOM metric here http://www.ndepend.com/Metrics.aspx#LCOM
types Lack of Cohesion Of Methods (LCOM) # Fields # Methods Full Name
SearchWindow 0.8971292 25 19 SimpleNote.SearchWindow
Hotkey 0.8677686 18 22 SimpleNote.Hotkey
Notification 0.8383839 12 18 SimpleNote.Notification
Sum: 2.6033 55 59
Average: 0.8677606 18.333 19.667
Minimum: 0.8383839 12 18
Maximum: 0.8971292 25 22
Standard deviation: 0.02398194 5.3125 1.6997
Variance: 0.0005751336 28.222 2.8889


WARNING: The following CQL constraint is not satisfied. 10 types on 53 tested match the condition. --> Group {Design}
// <Name>Type should not have too many responsabilities (Efferent Coupling)</Name>
WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE TypeCe > 50 ORDER BY TypeCe DESC 
// The Efferent Coupling (TypeCe) for a particular type is the number of types 
// it directly depends on. Notice that types declared in tier assemblies are taken into account. 

// Types that depends on too many others type (more than 50) are complex and have
// more than one responsability. They are good candidate for refactoring.

// More information available in this article:
// http://codebetter.com/blogs/patricksmacchia/archive/2008/02/15/code-metrics-on-coupling-dead-code-design-flaws-and-re-engineering.aspx

types Efferent coupling at type level (TypeCe) Full Name
SearchWindow 110 SimpleNote.SearchWindow
DataModel 105 SimpleNote.DataModel
DataModel+NotesDataTable 76 SimpleNote.DataModel+NotesDataTable
DataModel+CategoriesDataTable 75 SimpleNote.DataModel+CategoriesDataTable
DataSourceWindow 74 SimpleNote.DataSourceWindow
OptionsWindow 73 SimpleNote.OptionsWindow
DataModel+NotesRelationshipsDataTable 73 SimpleNote.DataModel+NotesRelationshipsDataTable
TextBlockEx 64 SimpleNote.TextBlockEx
PasswordChangeWindow 55 SimpleNote.PasswordChangeWindow
InputWindow 54 SimpleNote.InputWindow
Sum: 759
Average: 75.9
Minimum: 54
Maximum: 110
Standard deviation: 17.575
Variance: 308.89


WARNING: The following CQL constraint is not satisfied. 3 types on 373 tested match the condition. --> Group {Design}
// <Name>A stateless type might be turned into a static type</Name>
WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE 
  
SizeOfInst ==0 AND 
  
NbInterfacesImplemented == 0 AND // To be accurate, this constraint doesn't take 
                                   // account of types that implement some interfaces.
  !IsStatic AND 
  
!IsGeneric AND 
  
!IsInterface 
// It indicates stateless types that might eventually be turned into static classes.
// See the definition of the SizeOfInst metric here http://www.ndepend.com/Metrics.aspx#SizeOfInst
types Size of instance # interfaces implemented Full Name
Root 0 0 SimpleNote.Root
Resources 0 0 SimpleNote.Properties.Resources
GeneratedInternalTypeHelper 0 0 XamlGeneratedNamespace.GeneratedInternalTypeHelper
Sum: 0 0
Average: 0 0
Minimum: 0 0
Maximum: 0 0
Standard deviation: 0 0
Variance: 0 0


WARNING: The following CQL constraint is not satisfied. 7 types on 373 tested match the condition. --> Group {Design}
// <Name>Class shouldn't be too deep in inheritance tree </Name>
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.
// See the definition of the DepthOfInheritance metric here http://www.ndepend.com/Metrics.aspx#DIT
 
// You can discard specific classes with by-design high DepthOfInheritance with such condition for example:
// AND !DeriveFrom "System.Windows.Forms.Form" 
types Depth of inheritance Full Name
PasswordWindow 9 SimpleNote.PasswordWindow
InputWindow 9 SimpleNote.InputWindow
PasswordChangeWindow 9 SimpleNote.PasswordChangeWindow
TextBlockEx 9 SimpleNote.TextBlockEx
SearchWindow 9 SimpleNote.SearchWindow
OptionsWindow 9 SimpleNote.OptionsWindow
DataSourceWindow 9 SimpleNote.DataSourceWindow
Sum: 63
Average: 9
Minimum: 9
Maximum: 9
Standard deviation: 0
Variance: 0


WARNING: The following CQL constraint is not satisfied. 10 types on 373 tested match the condition. --> Group {Design}
// <Name>Class with no descendant should be sealed if possible</Name>
WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE 
  
IsClass AND 
  
NbChildren ==0 AND 
  
!IsSealed AND 
  
!IsStatic 
  
// AND !IsPublic   : You might want to add this condition if you are developping a framework
  //                   with classes that are intended to be sub-classed by your clients.
  ORDER BY NbLinesOfCode
types # Children # lines of code (LOC) Full Name
NullOperationParams 0 0 SimpleNote.NullOperationParams
HotkeyAlreadyInUseException 0 0 SimpleNote.HotkeyAlreadyInUseException
TimeStampValueConverter 0 2 SimpleNote.TimeStampValueConverter
NoteOperationParams 0 3 SimpleNote.NoteOperationParams
InvalidPasswordException 0 3 SimpleNote.InvalidPasswordException
ChangePasswordOperationParams 0 3 SimpleNote.ChangePasswordOperationParams
DataModel+NotesRowChangeEvent 0 5 SimpleNote.DataModel+NotesRowChangeEvent
DataModel+NotesRelationshipsRowChangeEvent 0 5 SimpleNote.DataModel+NotesRelationshipsRowChangeEvent
DataModel+CategoriesRowChangeEvent 0 5 SimpleNote.DataModel+CategoriesRowChangeEvent
ListBoxTemplateSelector 0 5 SimpleNote.ListBoxTemplateSelector
Sum: 0 31
Average: 0 3.1
Minimum: 0 0
Maximum: 0 5
Standard deviation: 0 1.8682
Variance: 0 3.49


WARNING: The following CQL constraint is not satisfied. 10 types on 373 tested match the condition. --> Group {Design}
// <Name>Classes that are candidate to be turned into Structures</Name>
WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE 
  
IsClass AND
  
SizeOfInst <= 16 AND    // Structure instance must not be too big, else it degrades performance.
  NbChildren == 0 AND     // Must not have children
  DepthOfInheritance == 1 // Must derive directly from System.Object
  // AND IsSealed    : You might want to add this condition to restreint the set.
  // AND IsImmutable : Structures should be immutable type.
  // AND !IsPublic   : You might want to add this condition if you are developping a framework
  //                   with classes that are intended to be sub-classed by your clients.
types Size of instance # Children Depth of inheritance Full Name
Engine+<>c__DisplayClass14 8 0 1 SimpleNote.Engine+<>c__DisplayClass14
SearchExtensionsMethods 0 0 1 SimpleNote.SearchExtensionsMethods
DataModelExtensions 0 0 1 SimpleNote.DataModelExtensions
Root 0 0 1 SimpleNote.Root
Engine+<>c__DisplayClass14+<>c__DisplayClass1c 12 0 1 SimpleNote.Engine+<>c__DisplayClass14+<>c__DisplayClass1c
HelperExtensions 0 0 1 SimpleNote.HelperExtensions
Engine+<>c__DisplayClass14+<>c__DisplayClass1c+<>c__DisplayClass1e 16 0 1 SimpleNote.Engine+<>c__DisplayClass14+<>c__DisplayClass1c+<>c__DisplayClass1e
ChangePasswordOperationParams 4 0 1 SimpleNote.ChangePasswordOperationParams
NoteOperationParams 12 0 1 SimpleNote.NoteOperationParams
Engine+<>c__DisplayClass14+<>c__DisplayClass18 12 0 1 SimpleNote.Engine+<>c__DisplayClass14+<>c__DisplayClass18
Sum: 64 0 10
Average: 6.4 0 1
Minimum: 0 0 1
Maximum: 16 0 1
Standard deviation: 5.9867 0 0
Variance: 35.84 0 0


WARNING: The following CQL constraint is not satisfied. 2 namespaces on 56 tested match the condition. --> Group {Design}
// <Name>Avoid namespaces with few types</Name>
WARN IF Count > 0 IN SELECT TOP 10 NAMESPACES WHERE NbTypes < 5 ORDER BY NbTypes ASC 

// Make sure that there is a logical organization to each of your namespaces, 
// and that there is a valid reason for putting types in a sparsely populated 
// namespace. Namespaces should contain types that are used together in most 
// scenarios. When their applications are mutually exclusive, types should be 
// located in separate namespaces
namespaces # Types Full Name
XamlGeneratedNamespace 1 XamlGeneratedNamespace
SimpleNote.Properties 2 SimpleNote.Properties
Sum: 3
Average: 1.5
Minimum: 1
Maximum: 2
Standard deviation: 0.5
Variance: 0.25


WARNING: The following CQL constraint is not satisfied. 10 types on 373 tested match the condition. --> Group {Design}
// <Name>Nested types should not be visible</Name>
WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE IsNested AND !IsPrivate AND !IsInFrameworkAssembly 

// A nested type is a type declared within the scope of another type. 
// Nested types are useful for encapsulating private implementation details of the containing type. 
// Used for this purpose, nested types should not be externally visible. Do not use externally 
// visible nested types for logical grouping or to avoid name collisions; instead, use namespaces.
types # lines of code (LOC) Full Name
DataModel+NotesDataTable 110 SimpleNote.DataModel+NotesDataTable
DataModel+CategoriesDataTable 105 SimpleNote.DataModel+CategoriesDataTable
DataModel+NotesRelationshipsDataTable 101 SimpleNote.DataModel+NotesRelationshipsDataTable
DataModel+NotesRelationshipsRow 18 SimpleNote.DataModel+NotesRelationshipsRow
DataModel+NotesRow 11 SimpleNote.DataModel+NotesRow
DataModel+CategoriesRow 9 SimpleNote.DataModel+CategoriesRow
DataModel+NotesRelationshipsRowChangeEvent 5 SimpleNote.DataModel+NotesRelationshipsRowChangeEvent
DataModel+NotesRowChangeEvent 5 SimpleNote.DataModel+NotesRowChangeEvent
DataModel+CategoriesRowChangeEvent 5 SimpleNote.DataModel+CategoriesRowChangeEvent
DataModel+NotesRelationshipsRowChangeEventHandler N/A SimpleNote.DataModel+NotesRelationshipsRowChangeEventHandler
Sum: 369
Average: 36.9
Minimum: 0
Maximum: 110
Standard deviation: 45.068
Variance: 2031.1


WARNING: The following CQL constraint is not satisfied. 1 types on 373 tested match the condition. --> Group {Design}
// <Name>Avoid empty interfaces</Name>
WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE IsInterface AND NbMethods == 0

// Interfaces define members that provide a behavior or usage contract. The functionality described by 
// the interface can be adopted by any type, regardless of where the type appears in the inheritance
// hierarchy. A type implements an interface by providing implementations for the interface's members.
// An empty interface does not define any members, and as such, does not define a contract that can be implemented.

// If your design includes empty interfaces that types are expected to implement, you are probably using
// an interface as a marker, or a way of identifying a group of types. If this identification will occur 
// at runtime, the correct way to accomplish this is to use a custom attribute. Use the presence or absence 
// of the attribute, or the attribute's properties, to identify the target types. If the identification must
// occur at compile time, then using an empty interface is acceptable.
types # Methods Full Name
IEngineOperationParams 0 SimpleNote.IEngineOperationParams
Sum: 0
Average: 0
Minimum: 0
Maximum: 0
Standard deviation: 0
Variance: 0


WARNING: The following CQL constraint is not satisfied. 10 types on 373 tested match the condition. --> Group {Design \ Performance}
// <Name>Instances size shouldn't be too big (SizeOfInst)</Name>
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).
// See the definition of the SizeOfInst metric here http://www.ndepend.com/Metrics.aspx#SizeOfInst
types Size of instance Full Name
SearchWindow 492 SimpleNote.SearchWindow
DataSourceWindow 450 SimpleNote.DataSourceWindow
PasswordWindow 439 SimpleNote.PasswordWindow
PasswordChangeWindow 438 SimpleNote.PasswordChangeWindow
OptionsWindow 430 SimpleNote.OptionsWindow
InputWindow 426 SimpleNote.InputWindow
DataModel+NotesDataTable 313 SimpleNote.DataModel+NotesDataTable
DataModel+NotesRelationshipsDataTable 309 SimpleNote.DataModel+NotesRelationshipsDataTable
DataModel+CategoriesDataTable 309 SimpleNote.DataModel+CategoriesDataTable
TextBlockEx 267 SimpleNote.TextBlockEx
Sum: 3873
Average: 387.3
Minimum: 267
Maximum: 492
Standard deviation: 74.641
Variance: 5571.2


WARNING: The following CQL constraint is not satisfied. 42 methods on 793 tested match the condition. --> Group {Design \ Performance}
// <Name>Boxing/unboxing should be avoided (Method)</Name>
WARN IF Percentage > 5 IN SELECT METHODS WHERE IsUsingBoxing OR IsUsingUnboxing 
// Thanks to generics, boxing and unboxing should be rare.
methods # lines of code (LOC) Full Name
Sum: 135
Average: 3.2143
Minimum: 1
Maximum: 50
Standard deviation: 8.5872
Variance: 73.74


WARNING: The following CQL constraint is not satisfied. 10 methods on 399 tested match the condition. --> Group {Unused Code / Dead Code}
// <Name>Potentially unused methods</Name>
WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE 
 
MethodCa == 0 AND            // Ca=0 -> No Afferent Coupling -> The method is not used in the context of this application.
 !IsPublic AND                // Public methods might be used by client applications of your assemblies.
 !IsEntryPoint AND            // Main() method is not used by-design.
 !IsExplicitInterfaceImpl AND // The IL code never explicitely calls explicit interface methods implementation.
 !IsClassConstructor AND      // The IL code never explicitely calls class constructors.
 !IsFinalizer                 // The IL code never explicitely calls finalizers.
methods Afferent coupling at method level (MethodCa) Full Name
.ctor(SerializationInfo,StreamingContext) 0 SimpleNote.DataModel..ctor(SerializationInfo,StreamingContext)
ReadXmlSerializable(XmlReader) 0 SimpleNote.DataModel.ReadXmlSerializable(XmlReader)
GetSchemaSerializable() 0 SimpleNote.DataModel.GetSchemaSerializable()
InitializeDerivedDataSet() 0 SimpleNote.DataModel.InitializeDerivedDataSet()
ShouldSerializeNotesRelationships() 0 SimpleNote.DataModel.ShouldSerializeNotesRelationships()
ShouldSerializeCategories() 0 SimpleNote.DataModel.ShouldSerializeCategories()
ShouldSerializeNotes() 0 SimpleNote.DataModel.ShouldSerializeNotes()
ShouldSerializeRelations() 0 SimpleNote.DataModel.ShouldSerializeRelations()
ShouldSerializeTables() 0 SimpleNote.DataModel.ShouldSerializeTables()
OnRowChanged(DataRowChangeEventArgs) 0 SimpleNote.DataModel+NotesDataTable.OnRowChanged(DataRowChangeEventArgs)
Sum: 0
Average: 0
Minimum: 0
Maximum: 0
Standard deviation: 0
Variance: 0


WARNING: The following CQL constraint is not satisfied. 1 fields on 201 tested match the condition. --> Group {Unused Code / Dead Code}
// <Name>Potentially unused fields</Name>
WARN IF Count > 0 IN SELECT TOP 10 FIELDS WHERE 
 
FieldCa == 0 AND  // Ca=0 -> No Afferent Coupling -> The field is not used in the context of this application.
 !IsPublic AND     // Although not recommended, public fields might be used by client applications of your assemblies.
 !IsLiteral AND    // The IL code never explicitely uses literal fields.
 !IsEnumValue AND  // The IL code never explicitely uses enumeration value.
 !NameIs "value__" // Field named 'value__' are relative to enumerations and the IL code never explicitely uses them.
fields Afferent coupling at field level (FieldCa) Full Name
_lastUpdateTimeStamp 0 SimpleNote.SearchWindow._lastUpdateTimeStamp
Sum: 0
Average: 0
Minimum: 0
Maximum: 0
Standard deviation: 0
Variance: 0


WARNING: The following CQL constraint is not satisfied. 10 fields on 233 tested match the condition. --> Group {Encapsulation}
// <Name>Fields should be declared as private</Name>
WARN IF Count > 0 IN SELECT TOP 10 FIELDS WHERE 
 
!IsPrivate AND 
 
// These conditions filter cases where fields doesn't represent state that should be encapsulated. 
 !IsInFrameworkAssembly AND 
 
!IsGeneratedByCompiler AND 
 
!IsSpecialName AND 
 
!IsInitOnly AND 
 
!IsLiteral AND 
 
!IsEnumValue
fields Size of instance Full Name
orderCombo 4 SimpleNote.SearchWindow.orderCombo
simpleTemplateCheckBox 4 SimpleNote.SearchWindow.simpleTemplateCheckBox
autoUpdateCheckbox 4 SimpleNote.SearchWindow.autoUpdateCheckbox
clearSearchButton 4 SimpleNote.SearchWindow.clearSearchButton
toolBar 4 SimpleNote.SearchWindow.toolBar
exportButton 4 SimpleNote.SearchWindow.exportButton
footerBorder 4 SimpleNote.SearchWindow.footerBorder
resultsListBox 4 SimpleNote.SearchWindow.resultsListBox
deleteNoteButton 4 SimpleNote.SearchWindow.deleteNoteButton
toolsBorder 4 SimpleNote.SearchWindow.toolsBorder
Sum: 40
Average: 4
Minimum: 4
Maximum: 4
Standard deviation: 0
Variance: 0


WARNING: The following CQL constraint is not satisfied. 10 methods on 793 tested match the condition. --> Group {Encapsulation \ Methods Optimal Encapsulation}
// <Name>Methods that could be declared as 'internal' in C#,  'Friend' in VB.NET</Name>
WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE CouldBeInternal
methods # lines of code (LOC) Full Name
FromFile(String,String) 18 SimpleNote.DataModel.FromFile(String,String)
IsPasswordValid(String,String) 10 SimpleNote.DataModel.IsPasswordValid(String,String)
.ctor() 8 SimpleNote.DataModel..ctor()
IsEncrypted(String) 8 SimpleNote.DataModel.IsEncrypted(String)
get_Notes() 1 SimpleNote.DataModel.get_Notes()
AddNotesRow(DateTime,String) 5 SimpleNote.DataModel+NotesDataTable.AddNotesRow(DateTime,String)
.ctor() 5 SimpleNote.DataModel+NotesDataTable..ctor()
RemoveNotesRow(DataModel+NotesRow) 1 SimpleNote.DataModel+NotesDataTable.RemoveNotesRow(DataModel+NotesRow)
get_IDColumn() 1 SimpleNote.DataModel+NotesDataTable.get_IDColumn()
get_Count() 1 SimpleNote.DataModel+NotesDataTable.get_Count()
Sum: 58
Average: 5.8
Minimum: 1
Maximum: 18
Standard deviation: 5.1923
Variance: 26.96


WARNING: The following CQL constraint is not satisfied. 10 methods on 793 tested match the condition. --> Group {Encapsulation \ Methods Optimal Encapsulation}
// <Name>Methods that could be declared as 'private' in C#,  'Private' in VB.NET</Name>
WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE CouldBePrivate
methods # lines of code (LOC) Full Name
.ctor(SerializationInfo,StreamingContext) 31 SimpleNote.DataModel..ctor(SerializationInfo,StreamingContext)
GetTypedDataSetSchema(XmlSchemaSet) 30 SimpleNote.DataModel.GetTypedDataSetSchema(XmlSchemaSet)
InitVars(Boolean) 14 SimpleNote.DataModel.InitVars(Boolean)
IsPasswordValid(String,Byte[]) 3 SimpleNote.DataModel.IsPasswordValid(String,Byte[])
get_NotesRelationships() 1 SimpleNote.DataModel.get_NotesRelationships()
get_Categories() 1 SimpleNote.DataModel.get_Categories()
InitVars() 1 SimpleNote.DataModel.InitVars()
get_Tables() 1 SimpleNote.DataModel.get_Tables()
get_Relations() 1 SimpleNote.DataModel.get_Relations()
GetTypedTableSchema(XmlSchemaSet) 46 SimpleNote.DataModel+NotesDataTable.GetTypedTableSchema(XmlSchemaSet)
Sum: 129
Average: 12.9
Minimum: 1
Maximum: 46
Standard deviation: 15.884
Variance: 252.29


WARNING: The following CQL constraint is not satisfied. 10 types on 373 tested match the condition. --> Group {Encapsulation \ Types Optimal Encapsulation}
// <Name>Types that could be declared as internal</Name>
WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE CouldBeInternal
types # lines of code (LOC) Full Name
DataModel 183 SimpleNote.DataModel
DataModel+NotesDataTable 110 SimpleNote.DataModel+NotesDataTable
Engine 102 SimpleNote.Engine
SearchWindow 80 SimpleNote.SearchWindow
Notification 68 SimpleNote.Notification
OptionsWindow 58 SimpleNote.OptionsWindow
DataSourceWindow 58 SimpleNote.DataSourceWindow
Hotkey 54 SimpleNote.Hotkey
TextBlockEx 40 SimpleNote.TextBlockEx
PasswordWindow 31 SimpleNote.PasswordWindow
Sum: 784
Average: 78.4
Minimum: 31
Maximum: 183
Standard deviation: 42.138
Variance: 1775.6


WARNING: The following CQL constraint is not satisfied. 10 types on 373 tested match the condition. --> Group {Encapsulation \ Types Optimal Encapsulation}
// <Name>Types that could be declared as 'private' in C#,  'Private' in VB.NET</Name>
WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE CouldBePrivate
types # lines of code (LOC) Full Name
DataModel+CategoriesDataTable 105 SimpleNote.DataModel+CategoriesDataTable
DataModel+NotesRelationshipsDataTable 101 SimpleNote.DataModel+NotesRelationshipsDataTable
DataModel+NotesRelationshipsRow 18 SimpleNote.DataModel+NotesRelationshipsRow
DataModel+CategoriesRow 9 SimpleNote.DataModel+CategoriesRow
DataModel+NotesRelationshipsRowChangeEvent 5 SimpleNote.DataModel+NotesRelationshipsRowChangeEvent
DataModel+NotesRowChangeEvent 5 SimpleNote.DataModel+NotesRowChangeEvent
DataModel+CategoriesRowChangeEvent 5 SimpleNote.DataModel+CategoriesRowChangeEvent
DataModel+NotesRelationshipsRowChangeEventHandler N/A SimpleNote.DataModel+NotesRelationshipsRowChangeEventHandler
DataModel+NotesRowChangeEventHandler N/A SimpleNote.DataModel+NotesRowChangeEventHandler
DataModel+CategoriesRowChangeEventHandler N/A SimpleNote.DataModel+CategoriesRowChangeEventHandler
Sum: 248
Average: 24.8
Minimum: 0
Maximum: 105
Standard deviation: 39.441
Variance: 1555.6


WARNING: The following CQL constraint is not satisfied. 10 fields on 233 tested match the condition. --> Group {Encapsulation \ Fields Optimal Encapsulation}
// <Name>Fields that could be declared as 'private' in C#,  'Private' in VB.NET</Name>
WARN IF Count > 0 IN SELECT TOP 10 FIELDS WHERE CouldBePrivate
fields Size of instance Full Name
orderCombo 4 SimpleNote.SearchWindow.orderCombo
simpleTemplateCheckBox 4 SimpleNote.SearchWindow.simpleTemplateCheckBox
autoUpdateCheckbox 4 SimpleNote.SearchWindow.autoUpdateCheckbox
clearSearchButton 4 SimpleNote.SearchWindow.clearSearchButton
toolBar 4 SimpleNote.SearchWindow.toolBar
exportButton 4 SimpleNote.SearchWindow.exportButton
footerBorder 4 SimpleNote.SearchWindow.footerBorder
resultsListBox 4 SimpleNote.SearchWindow.resultsListBox
deleteNoteButton 4 SimpleNote.SearchWindow.deleteNoteButton
toolsBorder 4 SimpleNote.SearchWindow.toolsBorder
Sum: 40
Average: 4
Minimum: 4
Maximum: 4
Standard deviation: 0
Variance: 0


WARNING: The following CQL constraint is not satisfied. 10 methods on 793 tested match the condition. --> Group {Test Coverage}
// <Name>Complex methods should be 100% covered by tests</Name>
WARN IF Count > 0 IN SELECT TOP 10 METHODS /*OUT OF "YourGeneratedCode" */ WHERE 
     
// These metrics' definitions are available here: http://www.ndepend.com/Metrics.aspx#MetricsOnMethods
     (  NbILInstructions > 200 OR 
        
ILCyclomaticComplexity > 50 OR 
        
ILNestingDepth > 4 OR
        
NbParameters > 5 OR 
        
NbVariables > 8 OR
        
NbOverloads > 6 ) AND 
     
!PercentageCoverage < 100

// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.
// This can be done in VisualNDepend throught the menu: Coverage -> Import Coverage Files
// This can be done at analysis time throught the menu: Project Properties -> Analysis -> Code Coverage
// More information on how to import coverage data here:
// http://www.ndepend.com/Coverage.aspx
methods # IL instructions IL Cyclomatic Complexity (ILCC) IL Nesting Depth # Parameters # Variables # Overloads Percentage Coverage Full Name
GetTypedDataSetSchema(XmlSchemaSet) 167 13 5 1 11 1 N/A SimpleNote.DataModel.GetTypedDataSetSchema(XmlSchemaSet)
FromFile(String,String) 107 6 2 2 13 1 N/A SimpleNote.DataModel.FromFile(String,String)
GetTypedTableSchema(XmlSchemaSet) 235 13 5 1 14 1 N/A SimpleNote.DataModel+NotesDataTable.GetTypedTableSchema(XmlSchemaSet)
GetTypedTableSchema(XmlSchemaSet) 235 13 5 1 14 1 N/A SimpleNote.DataModel+CategoriesDataTable.GetTypedTableSchema(XmlSchemaSet)
Execute(EngineOperation,IEngineOperationParams) 276 27 4 2 10 1 N/A SimpleNote.Engine.Execute(EngineOperation,IEngineOperationParams)
GetTypedTableSchema(XmlSchemaSet) 235 13 5 1 14 1 N/A SimpleNote.DataModel+NotesRelationshipsDataTable.GetTypedTableSchema(XmlSchemaSet)
exportButton_Click(Object,RoutedEventArgs) 126 10 3 2 11 1 N/A SimpleNote.SearchWindow.exportButton_Click(Object,RoutedEventArgs)
.ctor() 207 8 1 0 8 1 N/A SimpleNote.Notification..ctor()
acceptButton_Click(Object,RoutedEventArgs) 441 39 4 2 15 1 N/A SimpleNote.DataSourceWindow.acceptButton_Click(Object,RoutedEventArgs)
<Execute>b__6(Object) 252 13 2 1 14 1 N/A SimpleNote.Engine+<>c__DisplayClass14.<Execute>b__6(Object)
Sum: 2281 155 36 13 124 10 0
Average: 228.1 15.5 3.6 1.3 12.4 1 0
Minimum: 107 6 1 0 8 1 0
Maximum: 441 39 5 2 15 1 0
Standard deviation: 88.092 9.4472 1.4283 0.6403125 2.1541 0 0
Variance: 7760.3 89.25 2.04 0.4100001 4.64 0 0


WARNING: The following CQL constraint is not satisfied. 10 methods on 793 tested match the condition. --> Group {Test Coverage}
// <Name>Complex methods should be 100% covered by tests</Name>
WARN IF Count > 0 IN SELECT TOP 10 METHODS /*OUT OF "YourGeneratedCode" */ WHERE 
     
// These metrics' definitions are available here: http://www.ndepend.com/Metrics.aspx#MetricsOnMethods
     (  NbILInstructions > 200 OR 
        
ILCyclomaticComplexity > 50 OR 
        
ILNestingDepth > 4 OR
        
NbParameters > 5 OR 
        
NbVariables > 8 OR
        
NbOverloads > 6 ) AND 
     
!PercentageCoverage < 100

// To run this constraint properly coverage data must be gathered from NCover™ or Visual Studio™ Coverage.
// This can be done in VisualNDepend throught the menu: Coverage -> Import Coverage Files
// This can be done at analysis time throught the menu: Project Properties -> Analysis -> Code Coverage
// More information on how to import coverage data here:
// http://www.ndepend.com/Coverage.aspx
methods # IL instructions IL Cyclomatic Complexity (ILCC) IL Nesting Depth # Parameters # Variables # Overloads Percentage Coverage Full Name
GetTypedDataSetSchema(XmlSchemaSet) 167 13 5 1 11 1 N/A SimpleNote.DataModel.GetTypedDataSetSchema(XmlSchemaSet)
FromFile(String,String) 107 6 2 2 13 1 N/A SimpleNote.DataModel.FromFile(String,String)
GetTypedTableSchema(XmlSchemaSet) 235 13 5 1 14 1 N/A SimpleNote.DataModel+NotesDataTable.GetTypedTableSchema(XmlSchemaSet)
GetTypedTableSchema(XmlSchemaSet) 235 13 5 1 14 1 N/A SimpleNote.DataModel+CategoriesDataTable.GetTypedTableSchema(XmlSchemaSet)
Execute(EngineOperation,IEngineOperationParams) 276 27 4 2 10 1 N/A SimpleNote.Engine.Execute(EngineOperation,IEngineOperationParams)
GetTypedTableSchema(XmlSchemaSet) 235 13 5 1 14 1 N/A SimpleNote.DataModel+NotesRelationshipsDataTable.GetTypedTableSchema(XmlSchemaSet)
exportButton_Click(Object,RoutedEventArgs) 126 10 3 2 11 1 N/A SimpleNote.SearchWindow.exportButton_Click(Object,RoutedEventArgs)
.ctor() 207 8 1 0 8 1 N/A SimpleNote.Notification..ctor()
acceptButton_Click(Object,RoutedEventArgs) 441 39 4 2 15 1 N/A SimpleNote.DataSourceWindow.acceptButton_Click(Object,RoutedEventArgs)
<Execute>b__6(Object) 252 13 2 1 14 1 N/A SimpleNote.Engine+<>c__DisplayClass14.<Execute>b__6(Object)
Sum: 2281 155 36 13 124 10 0
Average: 228.1 15.5 3.6 1.3 12.4 1 0
Minimum: 107 6 1 0 8 1 0
Maximum: 441 39 5 2 15 1 0
Standard deviation: 88.092 9.4472 1.4283 0.6403125 2.1541 0 0
Variance: 7760.3 89.25 2.04 0.4100001 4.64 0 0


WARNING: The following CQL constraint is not satisfied. 26 fields on 233 tested match the condition. --> Group {Purity / Immutability / Side-Effects}
// <Name>Fields should be marked as ReadOnly when possible</Name>
WARN IF Count > 0 IN SELECT FIELDS WHERE IsImmutable AND !IsInitOnly

// A field that matches the condition IsImmutable is a field that is assigned only by constructors of its class.
// For an instance field, this means its value will remain constant throught the lifetime of the object.
// For a static field, this means its value will remain constant throught the lifetime of the program.
// In both cases, such field can safely be marked with the C# readonly keyword (ReadOnly in VB.NET).

// The condition IsInitOnly matches fields that are marked with the C# readonly keyword (ReadOnly in VB.NET).



fields Size of instance Full Name
Sum: 80
Average: 3.0769
Minimum: 0
Maximum: 8
Standard deviation: 2.0177
Variance: 4.071


WARNING: The following CQL constraint is not satisfied. 1 types on 373 tested match the condition. --> Group {Purity / Immutability / Side-Effects}
// <Name>Structures should be immutable</Name>
WARN IF Count > 0 IN SELECT TYPES WHERE IsStructure AND !IsImmutable AND !IsInFrameworkAssembly

// It is deemed as a good practice to make your structure immutable.
// An object is immutable if its state doesn’t change once the object has been created. 
// Consequently, a structure is immutable if its instances are immutable.
// Immutable types naturally simplify code by limiting side-effects.
// See some explanations on immutability and how NDepend supports it here:
// http://codebetter.com/blogs/patricksmacchia/archive/2008/01/13/immutable-types-understand-them-and-use-them.aspx
types # lines of code (LOC) Full Name
Sum: 2
Average: 2
Minimum: 2
Maximum: 2
Standard deviation: 0
Variance: 0


WARNING: The following CQL constraint is not satisfied. 10 fields on 233 tested match the condition. --> Group {Naming Conventions}
// <Name>Instance fields should be prefixed with a 'm_'</Name>
WARN IF Count > 0 IN SELECT TOP 10 FIELDS WHERE 
  
!NameLike "^m_" AND 
  
!IsStatic AND 
  
!IsLiteral AND 
  
!IsGeneratedByCompiler  AND 
  
!IsSpecialName AND 
  
!IsEventDelegateObject 

// This naming convention provokes debate.
// Don't hesitate to customize the regex of NameLike to your preference.
fields Size of instance Full Name
relationCategories_NotesRelationships 4 SimpleNote.DataModel.relationCategories_NotesRelationships
_schemaSerializationMode 4 SimpleNote.DataModel._schemaSerializationMode
relationNotes_NotesRelationships 4 SimpleNote.DataModel.relationNotes_NotesRelationships
tableNotes 4 SimpleNote.DataModel.tableNotes
tableCategories 4 SimpleNote.DataModel.tableCategories
tableNotesRelationships 4 SimpleNote.DataModel.tableNotesRelationships
columnContent 4 SimpleNote.DataModel+NotesDataTable.columnContent
columnTimeStamp 4 SimpleNote.DataModel+NotesDataTable.columnTimeStamp
columnID 4 SimpleNote.DataModel+NotesDataTable.columnID
columnID 4 SimpleNote.DataModel+CategoriesDataTable.columnID
Sum: 40
Average: 4
Minimum: 4
Maximum: 4
Standard deviation: 0
Variance: 0


WARNING: The following CQL constraint is not satisfied. 10 fields on 233 tested match the condition. --> Group {Naming Conventions}
// <Name>Static fields should be prefixed with a 's_'</Name>
WARN IF Count > 0 IN SELECT TOP 10 FIELDS WHERE 
  
!NameLike "^s_" AND 
  
IsStatic AND 
  
!IsLiteral AND 
  
!IsGeneratedByCompiler AND 
  
!IsSpecialName AND 
  
!IsEventDelegateObject  

// This naming convention provokes debate.
// Don't hesitate to customize the regex of NameLike to your preference.
fields Size of instance Full Name
DataProperty 0 SimpleNote.SearchWindow.DataProperty
MOD_ALT 0 SimpleNote.Hotkey.MOD_ALT
MOD_WIN 0 SimpleNote.Hotkey.MOD_WIN
WM_HOTKEY 0 SimpleNote.Hotkey.WM_HOTKEY
MOD_SHIFT 0 SimpleNote.Hotkey.MOD_SHIFT
MOD_CONTROL 0 SimpleNote.Hotkey.MOD_CONTROL
myStaticLock 0 SimpleNote.Hotkey.myStaticLock
hotkeyCounter 0 SimpleNote.Hotkey.hotkeyCounter
TextProperty 0 SimpleNote.TextBlockEx.TextProperty
SearchTextProperty 0 SimpleNote.TextBlockEx.SearchTextProperty
Sum: 0
Average: 0
Minimum: 0
Maximum: 0
Standard deviation: 0
Variance: 0


WARNING: The following CQL constraint is not satisfied. 10 methods on 793 tested match the condition. --> Group {Naming Conventions}
// <Name>Methods name should begin with an Upper character</Name>
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) AND !IsGeneratedByCompiler AND !IsInFrameworkAssembly
// The name of a regular method should begin with an Upper letter.
methods # lines of code (LOC) Full Name
_app_SessionEnding(Object,SessionEndingCancelEventArgs) 2 SimpleNote.Engine._app_SessionEnding(Object,SessionEndingCancelEventArgs)
exportButton_Click(Object,RoutedEventArgs) 11 SimpleNote.SearchWindow.exportButton_Click(Object,RoutedEventArgs)
deleteNoteButton_Click(Object,RoutedEventArgs) 6 SimpleNote.SearchWindow.deleteNoteButton_Click(Object,RoutedEventArgs)
simpleTemplateCheckBox_CheckedChanged(Object,RoutedEventArgs) 5 SimpleNote.SearchWindow.simpleTemplateCheckBox_CheckedChanged(Object,RoutedEventArgs)
searchTextBox_TextChanged(Object,TextChangedEventArgs) 5 SimpleNote.SearchWindow.searchTextBox_TextChanged(Object,TextChangedEventArgs)
orderCombo_SelectionChanged(Object,SelectionChangedEventArgs) 3 SimpleNote.SearchWindow.orderCombo_SelectionChanged(Object,SelectionChangedEventArgs)
autoUpdateCheckbox_CheckedChanged(Object,RoutedEventArgs) 2 SimpleNote.SearchWindow.autoUpdateCheckbox_CheckedChanged(Object,RoutedEventArgs)
updateButton_Click(Object,RoutedEventArgs) 1 SimpleNote.SearchWindow.updateButton_Click(Object,RoutedEventArgs)
clearSearchButton_Click(Object,RoutedEventArgs) 1 SimpleNote.SearchWindow.clearSearchButton_Click(Object,RoutedEventArgs)
bootWithWindowsButton_Click(Object,RoutedEventArgs) 15 SimpleNote.OptionsWindow.bootWithWindowsButton_Click(Object,RoutedEventArgs)
Sum: 51
Average: 5.1
Minimum: 1
Maximum: 15
Standard deviation: 4.3692
Variance: 19.09


WARNING: The following CQL constraint is not satisfied. 5 methods on 793 tested match the condition. --> Group {Naming Conventions \ Name too long}
// <Name>Avoid methods with name too long</Name>
WARN IF Count > 0 IN SELECT TOP 10 METHODS 
  
WHERE NameLike "^[^\<\(]{35,}.*$" AND 
        
!IsExplicitInterfaceImpl AND !IsInFrameworkAssembly 
// The regex matches methods with name longer than 35 characters.
// Method Name doesn't contain the type and namespace prefix, FullName does.
// The regex computes the method name length from the beginning until the first open parenthesis or first lower than (for generic methods).
// Explicit Interface Implementation methods are discarded because their names are prefixed with the interface name.
methods # lines of code (LOC) Full Name
remove_NotesRelationshipsRowChanging(DataModel+NotesRelationshipsRowChangeEventHandler) 0 SimpleNote.DataModel+NotesRelationshipsDataTable.remove_NotesRelationshipsRowChanging(DataModel+NotesRelationshipsRowChangeEventHandler)
remove_NotesRelationshipsRowChanged(DataModel+NotesRelationshipsRowChangeEventHandler) 0 SimpleNote.DataModel+NotesRelationshipsDataTable.remove_NotesRelationshipsRowChanged(DataModel+NotesRelationshipsRowChangeEventHandler)
remove_NotesRelationshipsRowDeleted(DataModel+NotesRelationshipsRowChangeEventHandler) 0 SimpleNote.DataModel+NotesRelationshipsDataTable.remove_NotesRelationshipsRowDeleted(DataModel+NotesRelationshipsRowChangeEventHandler)
remove_NotesRelationshipsRowDeleting(DataModel+NotesRelationshipsRowChangeEventHandler) 0 SimpleNote.DataModel+NotesRelationshipsDataTable.remove_NotesRelationshipsRowDeleting(DataModel+NotesRelationshipsRowChangeEventHandler)
simpleTemplateCheckBox_CheckedChanged(Object,RoutedEventArgs) 5 SimpleNote.SearchWindow.simpleTemplateCheckBox_CheckedChanged(Object,RoutedEventArgs)
Sum: 5
Average: 1
Minimum: 0
Maximum: 5
Standard deviation: 2
Variance: 4


WARNING: The following CQL constraint is not satisfied. 1 fields on 233 tested match the condition. --> Group {Naming Conventions \ Name too long}
// <Name>Avoid fields with name too long</Name>
WARN IF Count > 0 IN SELECT TOP 10 FIELDS WHERE 
  
NameLike "^[^\<]{35,}.*$" AND 
  
!IsInFrameworkAssembly 
// The regex matches fields with name longer than 35 characters.
// Field Name doesn't contain the type and namespace prefix, FullName does.
fields Size of instance Full Name
relationCategories_NotesRelationships 4 SimpleNote.DataModel.relationCategories_NotesRelationships
Sum: 4
Average: 4
Minimum: 4
Maximum: 4
Standard deviation: 0
Variance: 0


WARNING: The following CQL constraint is not satisfied. 1 assemblies on 1 tested match the condition. --> Group {.NET Framework Usage \ System}
// <Name>Mark assemblies with CLSCompliant</Name>
WARN IF Count > 0 IN SELECT ASSEMBLIES WHERE 
  
!HasAttribute "OPTIONAL:System.CLSCompliantAttribute" AND
  
!IsFrameworkAssembly 

// The Common Language Specification (CLS) defines naming restrictions, data types, 
// and rules to which assemblies must conform if they are to be used across programming languages.
// Good design dictates that all assemblies explicitly indicate CLS compliance with 
// CLSCompliantAttribute. If the attribute is not present on an assembly, the assembly is not compliant.
assemblies # lines of code (LOC) Full Name
Sum: 1306
Average: 1306
Minimum: 1306
Maximum: 1306
Standard deviation: 0
Variance: 0


WARNING: The following CQL constraint is not satisfied. 1 types on 373 tested match the condition. --> Group {.NET Framework Usage \ System}
// <Name>Types should not extend System.ApplicationException</Name>
WARN IF Count > 0 IN SELECT TYPES WHERE
  
DepthOfDeriveFrom "OPTIONAL:System.ApplicationException" == 1 AND
  
!IsInFrameworkAssembly

// For .NET Framework version 1, it was recommended to derive new exceptions from ApplicationException. 
// The recommendation has changed and new exceptions should derive from System.Exception or one of its 
// subclasses in the System namespace.
types DepthOfDeriveFrom 'ApplicationException' Full Name
Sum: 1
Average: 1
Minimum: 1
Maximum: 1
Standard deviation: 0
Variance: 0


WARNING: The following CQL constraint is not satisfied. 2 methods on 793 tested match the condition. --> Group {.NET Framework Usage \ System.Runtime.InteropServices}
// <Name>Move P/Invokes to NativeMethods class</Name>
WARN IF Count > 0 IN SELECT METHODS WHERE
  
!IsInFrameworkAssembly AND
  
HasAttribute "OPTIONAL:System.Runtime.InteropServices.DllImportAttribute" AND
  
!FullNameLike "NativeMethods."

// Platform Invocation methods, such as those marked with the System.Runtime.InteropServices.DllImportAttribute 
// attribute, or methods defined by using the Declare keyword in Visual Basic, access unmanaged code. 
// These methods should be in one of the following classes:
//
//     - NativeMethods - This class does not suppress stack walks for unmanaged code permission. 
//       (System.Security.SuppressUnmanagedCodeSecurityAttribute must not be applied to this class.) 
//       This class is for methods that can be used anywhere because a stack walk will be performed.
//
//     - SafeNativeMethods - This class suppresses stack walks for unmanaged code permission. 
//       (System.Security.SuppressUnmanagedCodeSecurityAttribute is applied to this class.) 
//       This class is for methods that are safe for anyone to call. Callers of these methods are not 
//       required to do a full security review to ensure that the usage is secure because the methods
//       are harmless for any caller.
//
//     - UnsafeNativeMethods - This class suppresses stack walks for unmanaged code permission. 
//       (System.Security.SuppressUnmanagedCodeSecurityAttribute is applied to this class.) 
//       This class is for methods that are potentially dangerous. Any caller of these methods must do
//       a full security review to ensure that the usage is secure because no stack walk will be performed.
methods # lines of code (LOC) Full Name
Sum: 0
Average: 0
Minimum: 0
Maximum: 0
Standard deviation: 0
Variance: 0

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
IEngineOperationParams 5.57 0 0 0 0 - - 0 - 8 0 - 0 - 0 - 3 - SimpleNote
Engine+<>c__DisplayClass10 4.07 3 0 - - 1 - 0 0 7 8 1 1 0 0 2 0 1 SimpleNote
Engine+<>c__DisplayClass14 3.85 341 38 - - 0.5 0.62 13 15 6 47 64 4 1 0 2 0 1 SimpleNote
DataModel+NotesRow 3.43 105 11 0 0 0.12 0.14 9 2 10 19 9 8 0 3 0 0 2 SimpleNote
Engine 2.81 715 102 39 27.66 0.91 0.98 52 59 7 53 72 14 1 1 6 0 1 SimpleNote
EngineOperation 2.22 0 0 0 0 - - 0 0 6 10 0 0 0 0 5 - 3 SimpleNote
DataModel+NotesRelationshipsRow 2.11 156 18 0 0 0.31 0.33 15 2 5 23 12 13 0 4 0 0 2 SimpleNote
Settings 1.87 234 28 0 0 - - 28 0 8 19 5 27 2 14 0 0 3 SimpleNote.Properties
DataModel 1.83 1135 183 43 19.03 0.9 0.93 55 46 11 105 104 22 5 6 5 0 3 SimpleNote
DataModel+CategoriesRow 1.53 84 9 0 0 0.17 0.2 7 2 4 18 8 6 0 2 0 0 2 SimpleNote
NoteOperationParams 1.26 34 3 0 0 0.6 0.75 1 0 4 8 1 5 0 2 1 0 1 SimpleNote
App 1.19 83 15 6 28.57 0.83 1 6 4 5 19 11 4 2 1 1 0 3 SimpleNote
NotificationState 1.14 0 0 0 0 - - 0 0 4 10 0 0 0 0 3 - 3 SimpleNote
DataModel+NotesDataTable 1.11 758 110 0 0 0.91 0.94 39 20 5 76 82 31 1 4 6 0 4 SimpleNote
Engine+<>c__DisplayClass14+<>c__DisplayClass1c 1 88 11 - - 0.5 1 2 1 3 21 29 2 0 0 2 0 1 SimpleNote
Notification 0.99 473 68 20 22.73 0.84 0.89 26 23 4 31 41 17 1 2 11 0 1 SimpleNote
SearchWindow 0.98 754 80 0 0 0.9 0.95 32 52 2 110 101 16 3 1 24 0 9 SimpleNote
SearchExtensionsMethods 0.92 130 26 6 18.75 - - 10 10 1 10 7 0 2 0 - 0 1 SimpleNote
DataModel+NotesRowChangeEvent 0.91 26 5 0 0 0.33 0.5 3 0 3 9 2 3 0 2 1 0 2 SimpleNote
DataModel+NotesRelationshipsRowChangeEvent 0.91 26 5 0 0 0.33 0.5 3 0 3 9 2 3 0 2 1 0 2 SimpleNote
DataModel+CategoriesRowChangeEvent 0.91 26 5 0 0 0.33 0.5 3 0 3 9 2 3 0 2 1 0 2 SimpleNote
Engine+<>c__DisplayClass14+<>c__DisplayClass1c+<>c__DisplayClass1e 0.9 50 7 - - 0.88 1.75 2 1 3 16 14 2 0 0 3 0 1 SimpleNote
WndProcEventHandler 0.89 0 0 - - - - 0 0 2 13 0 4 0 0 - 0 3 SimpleNote
DataModel+CategoriesDataTable 0.67 721 105 0 0 0.9 0.93 38 20 2 75 82 30 1 3 5 0 4 SimpleNote
Guard 0.61 22 2 0 0 - - 2 1 3 10 2 0 1 0 - 0 1 SimpleNote
DataModel+NotesRelationshipsDataTable 0.6 682 101 0 0 0.9 0.93 38 21 2 73 76 29 1 3 5 0 4 SimpleNote
ChangePasswordOperationParams 0.53 16 3 0 0 0 0 2 0 2 6 1 2 0 1 0 0 1 SimpleNote
Engine+<>c__DisplayClass14+<>c__DisplayClass18 0.53 23 2 - - 0.78 1.17 2 0 2 11 7 3 0 0 2 0 1 SimpleNote
Engine+<>c__DisplayClass14+<>c__DisplayClass1a 0.53 7 1 - - 0.83 1.67 1 0 2 7 1 2 0 0 2 0 1 SimpleNote
Engine+<>c__DisplayClass14+<>c__DisplayClass20 0.53 7 1 - - 0.83 1.67 1 0 2 7 1 2 0 0 2 0 1 SimpleNote
DataModelExtensions 0.46 105 19 4 17.39 - - 2 4 2 29 24 0 1 0 - 0 1 SimpleNote
EventDispatchingNativeWindow 0.42 81 12 15 55.56 0.5 0.6 7 4 1 15 9 4 2 1 2 0 3 SimpleNote
HotkeyAlreadyInUseException 0.42 3 0 0 0 - - 0 0 1 11 1 1 0 0 - 0 2 SimpleNote
Hotkey 0.39 346 54 38 41.3 0.87 0.91 34 25 1 26 19 19 3 6 17 0 3 SimpleNote
Resources 0.39 112 19 7 26.92 - - 11 1 1 17 6 1 9 8 1 0 1 SimpleNote.Properties
DataModel+NotesRowChangeEventHandler 0.33 0 0 - - - - 0 0 2 12 0 4 0 0 - 0 3 SimpleNote
DataModel+NotesRelationshipsRowChangeEventHandler 0.33 0 0 - - - - 0 0 2 12 0 4 0 0 - 0 3 SimpleNote
DataModel+CategoriesRowChangeEventHandler 0.33 0 0 - - - - 0 0 2 12 0 4 0 0 - 0 3 SimpleNote
PasswordWindow 0.32 238 31 6 16.22 0.73 0.85 10 18 1 52 20 7 0 1 10 0 9 SimpleNote
DataSourceWindow 0.32 582 58 13 18.31 0.72 0.86 24 56 1 74 54 6 0 0 12 0 9 SimpleNote
NullOperationParams 0.32 3 0 0 0 - - 0 0 1 5 1 1 0 0 - 0 1 SimpleNote
OptionsWindow 0.32 490 58 3 4.92 0.81 0.9 21 33 1 73 49 10 0 0 7 0 9 SimpleNote
PasswordChangeWindow 0.32 188 17 2 10.53 0.81 0.93 9 17 1 55 20 8 0 1 9 0 9 SimpleNote
InputWindow 0.32 204 20 3 13.04 0.79 0.89 11 16 1 54 21 9 0 1 6 0 9 SimpleNote
HelperExtensions 0.23 46 8 0 0 - - 3 4 1 7 0 0 1 0 - 0 1 SimpleNote
InvalidPasswordException 0.23 21 3 0 0 - - 3 0 1 13 3 3 0 0 - 0 3 SimpleNote
SearchWindow+<>c__DisplayClassa 0.22 21 2 - - 0.33 0.5 2 0 1 9 3 3 0 0 0 0 1 SimpleNote
IntRange 0.15 8 2 28 93.33 0 - 1 0 0 6 0 1 0 0 1 - 2 SimpleNote
Root 0.15 60 12 6 33.33 - - 4 5 0 15 10 1 1 0 0 0 1 SimpleNote
TextBlockEx 0.15 307 40 6 13.04 - - 16 11 0 64 45 6 5 2 7 0 9 SimpleNote
TimeStampValueConverter 0.15 17 2 0 0 - - 2 0 0 10 3 3 0 0 - 0 1 SimpleNote
ListBoxTemplateSelector 0.15 37 5 0 0 0 0 3 2 0 9 2 2 0 0 0 0 2 SimpleNote
GeneratedInternalTypeHelper 0.15 70 5 - - - - 0 0 0 16 7 6 0 0 - 0 2 XamlGeneratedNamespace