NDepend Report

Application name: BlogEngine.Core (Quick Project)
This report has been built on: 03/10/2010 10:20:00 in 00:13 by NDepend v2.12.1.3123 (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: 42021
Number of lines of code: 8427
Number of lines of comment: 0
Percentage comment: 0
Number of assemblies: 1
Number of classes: 99
Number of types: 117
Number of abstract classes: 4
Number of interfaces: 3
Number of value types: 9
Number of exception classes: 1
Number of attribute classes: 1
Number of delegate classes: 0
Number of enumerations classes: 6
Number of generic type definitions: 2
Number of generic method definitions: 0
Percentage of public types: 69,23%
Percentage of public methods: 76,66%
Percentage of classes with at least one public field: 2,56%

Stat# OccurrencesAvgStdDevMax
Properties on Interfaces 3 Interfaces 4,675,9113 properties on BlogEngine.Core.IPublishable
Methods on Interfaces 3 Interfaces 6,675,2514 methods on BlogEngine.Core.IPublishable
Arguments on Methods on Interfaces 20 Methods 0,40,83 arguments on BlogEngine.Core.DataStore.ISettingsBehavior.SaveSettings(ExtensionType,String,Object)
Public Properties on Classes 99 Classes 3,479,2280 public properties on BlogEngine.Core.BlogSettings
Public Methods on Classes 99 Classes 11,9120,26161 public methods on BlogEngine.Core.BlogSettings
Arguments on Public Methods on Classes 1179 Methods 0,750,9112 arguments on FoafPerson..ctor(String,String,String,String,String,String,String,String,String,String,String,String)
IL Instructions in non-abstract Methods 1501 Methods 2854,54645 IL instructions in BlogEngine.Core.API.MetaWeblog.XMLRPCRequest.LoadXMLRequest(String)
Cyclomatic complexity on non abstract Methods 1501 Methods 2,573,42 CC = 41 for BlogEngine.Core.Providers.DbBlogProvider.SelectPost(Guid)




Assemblies Metrics

Assembly# Types# Abstract Types# IL instruction# lines of code# lines of comment% commentAfferent CouplingEfferent CouplingRelational CohesionInstabilityAbstractnessDistance
BlogEngine.Core v1.6.0.011774202184270002753,310,060,06




Visual NDepend View




Assemblies Abstractness vs. Instability




Assemblies Dependencies

AssemblyDepends on...Is referenced by...
BlogEngine.Core v1.6.0.0System.Configuration v2.0.0.0 ; mscorlib v2.0.0.0 ; System.Web v2.0.0.0 ; System v2.0.0.0 ; System.Xml v2.0.0.0 ; System.Data v2.0.0.0 ; -




Assemblies Dependencies Diagram

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




Assemblies build order

BlogEngine.Core




NDepend information and warnings

03/10/2010 10:19:46 Begin analysis with NDepend v2.12.1.3123
03/10/2010 10:19:46 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.Configuration.dll v2.0.0.0 System.dll v2.0.0.0 System.Xml.dll v2.0.0.0 System.Data.dll v2.0.0.0 System.Web.dll v2.0.0.0
Assemblies loaded from {C:\Users\Mathieu\Desktop\BlogEngine.Web\bin} BlogEngine.Core.dll v1.6.0.0
0 source file parsed ; 79 source files not found ;
0 CQL constraint has been extracted from code.
No dependency cycle detected in assemblies referencement graph.
03/10/2010 10:19:53 Analyse dependencies of your application.
03/10/2010 10:19:54 Building the report (standard).
WARNING: No application or tier assembly found in directory {C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0}
WARNING: No application or tier assembly found in directory {C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5}
WARNING: The source directory {C:\Data\Development\BlogEngine.NET\BlogEngine\DotNetSlave.BusinessLogic\Providers\XmlProvider} referenced by the PDB file of the assembly {BlogEngine.Core} can't be found.
WARNING: The source directory {C:\Data\Development\BlogEngine.NET\BlogEngine\DotNetSlave.BusinessLogic\Web\HttpHandlers} referenced by the PDB file of the assembly {BlogEngine.Core} can't be found.
WARNING: The source directory {C:\Data\Development\BlogEngine.NET\BlogEngine\DotNetSlave.BusinessLogic\Web\Extensions} referenced by the PDB file of the assembly {BlogEngine.Core} can't be found.
WARNING: The source directory {C:\Data\Development\BlogEngine.NET\BlogEngine\DotNetSlave.BusinessLogic\Web\HttpModules} referenced by the PDB file of the assembly {BlogEngine.Core} can't be found.
WARNING: The source directory {C:\Data\Development\BlogEngine.NET\BlogEngine\DotNetSlave.BusinessLogic} referenced by the PDB file of the assembly {BlogEngine.Core} can't be found.
WARNING: The source directory {C:\Data\Development\BlogEngine.NET\BlogEngine\DotNetSlave.BusinessLogic\Ping} referenced by the PDB file of the assembly {BlogEngine.Core} can't be found.
WARNING: The source directory {C:\Data\Development\BlogEngine.NET\BlogEngine\DotNetSlave.BusinessLogic\Web\Controls} referenced by the PDB file of the assembly {BlogEngine.Core} can't be found.
WARNING: The source directory {C:\Data\Development\BlogEngine.NET\BlogEngine\DotNetSlave.BusinessLogic\Providers} referenced by the PDB file of the assembly {BlogEngine.Core} can't be found.
WARNING: The source directory {C:\Data\Development\BlogEngine.NET\BlogEngine\DotNetSlave.BusinessLogic\API\MetaWeblog} referenced by the PDB file of the assembly {BlogEngine.Core} can't be found.
WARNING: The source directory {C:\Data\Development\BlogEngine.NET\BlogEngine\DotNetSlave.BusinessLogic\DataStore} referenced by the PDB file of the assembly {BlogEngine.Core} can't be found.




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} All CQL queries compile and all CQL contraints are 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} Some CQL constraints are not satisfied.
{.NET Framework Usage \ System.Runtime.InteropServices} All CQL queries compile and all CQL contraints are satisfied.
{.NET Framework Usage \ System.Threading} All CQL queries compile and all CQL contraints are satisfied.
{.NET Framework Usage \ System.Xml} Some CQL constraints are not satisfied.
{Constraints extracted from Source Code} No active CQL query compiled.


WARNING: The following CQL constraint is not satisfied. 10 methods on 2301 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 instructionsCyclomatic Complexity (CC)IL Cyclomatic Complexity (ILCC)IL Nesting Depth# Parameters# Variables# OverloadsFull Name
Initialized(ExtensionSettings)838055131ManagedExtension.Initialized(ExtensionSettings)
AddParameter(String,String,Int32,Boolean,Boolean,ParameterType)929021616ExtensionSettings.AddParameter(String,String,Int32,Boolean,Boolean,ParameterType)
IsKeyValueExists(String)1056086161ExtensionSettings.IsKeyValueExists(String)
AddValue(String,String)15010209ExtensionSettings.AddValue(String,String)
AddValue(String,Boolean)16010209ExtensionSettings.AddValue(String,Boolean)
AddValue(String,Int32)16010209ExtensionSettings.AddValue(String,Int32)
AddValue(String,Int64)16010209ExtensionSettings.AddValue(String,Int64)
AddValue(String,Single)16010209ExtensionSettings.AddValue(String,Single)
AddValue(String,Double)16010209ExtensionSettings.AddValue(String,Double)
AddValue(String,Decimal)16010209ExtensionSettings.AddValue(String,Decimal)
Sum:3416402212221071
Average:3.416.402.21.22.217.1
Minimum:15010101
Maximum:1056086669
Standard deviation:3.693217.24102.27162.18171.32661.89743.1765
Variance:13.64297.2405.164.761.763.610.09


WARNING: The following CQL constraint is not satisfied. 10 methods on 2301 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
WritePosts(XmlTextWriter)97BlogEngine.Core.API.MetaWeblog.XMLRPCResponse.WritePosts(XmlTextWriter)
LoadXMLRequest(String)91BlogEngine.Core.API.MetaWeblog.XMLRPCRequest.LoadXMLRequest(String)
WritePost(XmlTextWriter)90BlogEngine.Core.API.MetaWeblog.XMLRPCResponse.WritePost(XmlTextWriter)
SelectPost(Guid)89BlogEngine.Core.Providers.DbBlogProvider.SelectPost(Guid)
WriteSiocPost(XmlWriter,IPublishable)82BlogEngine.Core.Web.HttpHandlers.Sioc.WriteSiocPost(XmlWriter,IPublishable)
UpdateComments(Post,DbConnection,DbProviderFactory)72BlogEngine.Core.Providers.DbBlogProvider.UpdateComments(Post,DbConnection,DbProviderFactory)
UpdatePost(Post)67BlogEngine.Core.Providers.DbBlogProvider.UpdatePost(Post)
InsertPost(Post)67BlogEngine.Core.Providers.DbBlogProvider.InsertPost(Post)
SelectPost(Guid)67BlogEngine.Core.Providers.XmlBlogProvider.SelectPost(Guid)
InsertPost(Post)64BlogEngine.Core.Providers.XmlBlogProvider.InsertPost(Post)
Sum:786
Average:78.6
Minimum:64
Maximum:97
Standard deviation:11.842
Variance:140.24


WARNING: The following CQL constraint is not satisfied. 10 methods on 2301 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 instructionsFull Name
LoadXMLRequest(String)645BlogEngine.Core.API.MetaWeblog.XMLRPCRequest.LoadXMLRequest(String)
SelectPost(Guid)533BlogEngine.Core.Providers.DbBlogProvider.SelectPost(Guid)
WriteSiocPost(XmlWriter,IPublishable)427BlogEngine.Core.Web.HttpHandlers.Sioc.WriteSiocPost(XmlWriter,IPublishable)
SelectPost(Guid)398BlogEngine.Core.Providers.XmlBlogProvider.SelectPost(Guid)
UpdateComments(Post,DbConnection,DbProviderFactory)395BlogEngine.Core.Providers.DbBlogProvider.UpdateComments(Post,DbConnection,DbProviderFactory)
InsertPost(Post)379BlogEngine.Core.Providers.XmlBlogProvider.InsertPost(Post)
ProcessRequest(HttpContext)350BlogEngine.Core.API.MetaWeblog.MetaWeblogHandler.ProcessRequest(HttpContext)
UpdatePost(Post)347BlogEngine.Core.Providers.DbBlogProvider.UpdatePost(Post)
InsertPost(Post)347BlogEngine.Core.Providers.DbBlogProvider.InsertPost(Post)
WritePosts(XmlTextWriter)322BlogEngine.Core.API.MetaWeblog.XMLRPCResponse.WritePosts(XmlTextWriter)
Sum:4143
Average:414.3
Minimum:322
Maximum:645
Standard deviation:95.431
Variance:9107


WARNING: The following CQL constraint is not satisfied. 1 methods on 2301 tested match the condition. --> Group {Code Quality}
// <Name>Methods too complex (ILCyclomaticComplexity)</Name>
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).
// See the definition of the ILCyclomaticComplexity metric here http://www.ndepend.com/Metrics.aspx#ILCC
methodsIL Cyclomatic Complexity (ILCC)Full Name
SelectPost(Guid)41BlogEngine.Core.Providers.DbBlogProvider.SelectPost(Guid)
Sum:41
Average:41
Minimum:41
Maximum:41
Standard deviation:0
Variance:0


WARNING: The following CQL constraint is not satisfied. 10 methods on 2301 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
methodsIL Nesting DepthFull Name
AddObjectValue(String,Object)10ExtensionSettings.AddObjectValue(String,Object)
RemoveUsersFromRoles(String[],String[])8BlogEngine.Core.Providers.XmlRoleProvider.RemoveUsersFromRoles(String[],String[])
ModeratedByFilter(Comment)8BlogEngine.Core.CommentHandlers.ModeratedByFilter(Comment)
ProcessRequest(HttpContext)8BlogEngine.Core.Web.HttpHandlers.TrackbackHandler.ProcessRequest(HttpContext)
AddUsersToRoles(String[],String[])7BlogEngine.Core.Providers.XmlRoleProvider.AddUsersToRoles(String[],String[])
ProcessRequest(HttpContext)7BlogEngine.Core.Web.HttpHandlers.RatingHandler.ProcessRequest(HttpContext)
get_ReplyToLink()6BlogEngine.Core.Web.Controls.CommentViewBase.get_ReplyToLink()
InitCustomFilters()6BlogEngine.Core.CommentHandlers.InitCustomFilters()
GetSingleValue(String)6ExtensionSettings.GetSingleValue(String)
IsKeyValueExists(String)6ExtensionSettings.IsKeyValueExists(String)
Sum:72
Average:7.2
Minimum:6
Maximum:10
Standard deviation:1.249
Variance:1.56


WARNING: The following CQL constraint is not satisfied. 10 methods on 2301 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
methodsPercentage Comment# lines of code (LOC)Full Name
ProcessRequest(HttpContext)015BlogEngine.Core.Web.HttpHandlers.RatingHandler.ProcessRequest(HttpContext)
ProcessRequest(HttpContext)030BlogEngine.Core.Web.HttpHandlers.OpenSearchHandler.ProcessRequest(HttpContext)
AddComment(String,Post,String,String,String)011BlogEngine.Core.Web.HttpHandlers.TrackbackHandler.AddComment(String,Post,String,String,String)
ProcessRequest(HttpContext)013BlogEngine.Core.Web.HttpHandlers.SyndicationHandler.ProcessRequest(HttpContext)
RetrieveTitle(HttpContext)024BlogEngine.Core.Web.HttpHandlers.SyndicationHandler.RetrieveTitle(HttpContext)
RecentComments()016BlogEngine.Core.Web.HttpHandlers.SyndicationHandler.RecentComments()
GenerateItemList(HttpContext)030BlogEngine.Core.Web.HttpHandlers.SyndicationHandler.GenerateItemList(HttpContext)
Send(TrackbackMessage)027BlogEngine.Core.Ping.Trackback.Send(TrackbackMessage)
AddXmlToRequest(HttpWebRequest,Uri)014BlogEngine.Core.Ping.PingService.AddXmlToRequest(HttpWebRequest,Uri)
AddXmlToRequest(Uri,Uri,HttpWebRequest)018BlogEngine.Core.Ping.Pingback.AddXmlToRequest(Uri,Uri,HttpWebRequest)
Sum:0198
Average:019.8
Minimum:011
Maximum:030
Standard deviation:06.8964
Variance:047.56


WARNING: The following CQL constraint is not satisfied. 5 methods on 2301 tested match the condition. --> Group {Code Quality}
// <Name>Methods with too many parameters (NbParameters)</Name>
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))
// See the definition of the NbParameters metric here http://www.ndepend.com/Metrics.aspx#NbParameters
methods# ParametersFull Name
.ctor(String,String,String,String,String,String,String,String,String,String,String,String)12FoafPerson..ctor(String,String,String,String,String,String,String,String,String,String,String,String)
CreateUser(String,String,String,String,String,Boolean,Object,MembershipCreateStatus&)8BlogEngine.Core.Providers.XmlMembershipProvider.CreateUser(String,String,String,String,String,Boolean,Object,MembershipCreateStatus&)
CreateUser(String,String,String,String,String,Boolean,Object,MembershipCreateStatus&)8BlogEngine.Core.Providers.DbMembershipProvider.CreateUser(String,String,String,String,String,Boolean,Object,MembershipCreateStatus&)
EditPage(String,String,String,String,MWAPage,Boolean)6BlogEngine.Core.API.MetaWeblog.MetaWeblogHandler.EditPage(String,String,String,String,MWAPage,Boolean)
AddParameter(String,String,Int32,Boolean,Boolean,ParameterType)6ExtensionSettings.AddParameter(String,String,Int32,Boolean,Boolean,ParameterType)
Sum:40
Average:8
Minimum:6
Maximum:12
Standard deviation:2.1909
Variance:4.8


WARNING: The following CQL constraint is not satisfied. 10 methods on 2301 tested match the condition. --> Group {Code Quality}
// <Name>Methods with too many local variables (NbVariables)</Name>
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).
// See the definition of the Nbvariables metric here http://www.ndepend.com/Metrics.aspx#Nbvariables
methods# VariablesFull Name
InsertPost(Post)29BlogEngine.Core.Providers.XmlBlogProvider.InsertPost(Post)
UpdateComments(Post,DbConnection,DbProviderFactory)24BlogEngine.Core.Providers.DbBlogProvider.UpdateComments(Post,DbConnection,DbProviderFactory)
UpdatePage(Page)23BlogEngine.Core.Providers.DbBlogProvider.UpdatePage(Page)
InsertPage(Page)23BlogEngine.Core.Providers.DbBlogProvider.InsertPage(Page)
UpdatePost(Post)22BlogEngine.Core.Providers.DbBlogProvider.UpdatePost(Post)
Page_Load(Object,EventArgs)22BlogEngine.Core.Web.Controls.PostViewBase.Page_Load(Object,EventArgs)
ApmlMatches(XmlDocument,Int32)22BlogEngine.Core.Search.ApmlMatches(XmlDocument,Int32)
InsertPost(Post)22BlogEngine.Core.Providers.DbBlogProvider.InsertPost(Post)
SelectPost(Guid)21BlogEngine.Core.Providers.DbBlogProvider.SelectPost(Guid)
RemoveUsersFromRoles(String[],String[])20BlogEngine.Core.Providers.DbRoleProvider.RemoveUsersFromRoles(String[],String[])
Sum:228
Average:22.8
Minimum:20
Maximum:29
Standard deviation:2.3152
Variance:5.36


WARNING: The following CQL constraint is not satisfied. 9 methods on 2301 tested match the condition. --> Group {Code Quality}
// <Name>Methods with too many overloads (NbOverloads)</Name>
WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE NbOverloads > 6 ORDER BY NbOverloads DESC
// METHODS WHERE NbParameters > 6 might be a problem to maintain and provoke higher coupling than necessary. 
// This might also reveal a potential misused of the C# and VB.NET language that since C#3 and VB9 support 
// object initialization. This feature helps reducing the number of constructors of a class.
// See the definition of the NbOverloads metric here http://www.ndepend.com/Metrics.aspx#NbOverloads
methods# OverloadsFull Name
AddValue(String,Decimal)9ExtensionSettings.AddValue(String,Decimal)
AddValue(String,Double)9ExtensionSettings.AddValue(String,Double)
AddValue(String,StringCollection,String)9ExtensionSettings.AddValue(String,StringCollection,String)
AddValue(String,String[],String)9ExtensionSettings.AddValue(String,String[],String)
AddValue(String,Single)9ExtensionSettings.AddValue(String,Single)
AddValue(String,Boolean)9ExtensionSettings.AddValue(String,Boolean)
AddValue(String,String)9ExtensionSettings.AddValue(String,String)
AddValue(String,Int64)9ExtensionSettings.AddValue(String,Int64)
AddValue(String,Int32)9ExtensionSettings.AddValue(String,Int32)
Sum:81
Average:9
Minimum:9
Maximum:9
Standard deviation:0
Variance:0


WARNING: The following CQL constraint is not satisfied. 10 types on 409 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# MethodsFull Name
BlogSettings164BlogEngine.Core.BlogSettings
Post92BlogEngine.Core.Post
ExtensionSettings54ExtensionSettings
Comment52BlogEngine.Core.Comment
DbBlogProvider47BlogEngine.Core.Providers.DbBlogProvider
BusinessBase<TYPE,KEY>46BlogEngine.Core.BusinessBase<TYPE,KEY>
AuthorProfile46BlogEngine.Core.AuthorProfile
XmlBlogProvider45BlogEngine.Core.Providers.XmlBlogProvider
Page43BlogEngine.Core.Page
XMLRPCResponse43BlogEngine.Core.API.MetaWeblog.XMLRPCResponse
Sum:632
Average:63.2
Minimum:43
Maximum:164
Standard deviation:36.334
Variance:1320.2


WARNING: The following CQL constraint is not satisfied. 2 types on 409 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# FieldsFull Name
BlogSettings80BlogEngine.Core.BlogSettings
Post28BlogEngine.Core.Post
Sum:108
Average:54
Minimum:28
Maximum:80
Standard deviation:26
Variance:676


WARNING: The following CQL constraint is not satisfied. 9 types on 409 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
typesLack of Cohesion Of Methods (LCOM)# Fields# MethodsFull Name
BlogSettings0.987646580164BlogEngine.Core.BlogSettings
Post0.97418482892BlogEngine.Core.Post
Comment0.96016481852BlogEngine.Core.Comment
AuthorProfile0.95652171846BlogEngine.Core.AuthorProfile
Page0.95348831443BlogEngine.Core.Page
XMLRPCResponse0.92026581443BlogEngine.Core.API.MetaWeblog.XMLRPCResponse
ExtensionSettings0.91666671254ExtensionSettings
BusinessBase<TYPE,KEY>0.91219511246BlogEngine.Core.BusinessBase<TYPE,KEY>
XMLRPCRequest0.89878541319BlogEngine.Core.API.MetaWeblog.XMLRPCRequest
Sum:8.4799209559
Average:0.942213323.22262.111
Minimum:0.89878541219
Maximum:0.987646580164
Standard deviation:0.0291755720.62240.209
Variance:0.0008512139425.281616.8


WARNING: The following CQL constraint is not satisfied. 5 types on 409 tested match the condition. --> Group {Code Quality \ Type Metrics}
// <Name>Types with poor cohesion (LCOMHS)</Name>
WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE LCOMHS > 0.95 AND NbFields > 10 AND NbMethods >10 ORDER BY LCOMHS DESC
// TYPES WHERE LCOMHS > 1.0 AND NbFields > 10 AND NbMethods >10 should be avoided. 
// Note that this constraint is stronger than the constraint 
// TYPES WHERE LCOM > 0.8 AND NbFields > 10 AND NbMethods >10. 
// See the definition of the LCOMHS metric here http://www.ndepend.com/Metrics.aspx#LCOMHS
typesLCOM Henderson-Sellers (LCOMHS)# Fields# MethodsFull Name
BlogSettings0.993705780164BlogEngine.Core.BlogSettings
Post0.98489012892BlogEngine.Core.Post
Comment0.97899161852BlogEngine.Core.Comment
AuthorProfile0.97777781846BlogEngine.Core.AuthorProfile
Page0.97619041443BlogEngine.Core.Page
Sum:4.9116158397
Average:0.982311131.679.4
Minimum:0.97619041443
Maximum:0.993705780164
Standard deviation:0.0064130524.63845.841
Variance:4.11272E-05607.042101.4


WARNING: The following CQL constraint is not satisfied. 1 assemblies on 7 tested match the condition. --> Group {Design}
// <Name>Assembly should not contain namespaces dependency cycles</Name>
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.
// More info available on the screencast 'Reduce the complexity' http://s3.amazonaws.com/NDependOnlineDemos/NDependReducingComplexity_viewlet_swf.html
// You can also read this article http://www.theserverside.net/tt/articles/showarticle.tss?id=ControllingDependencies
assemblies# lines of code (LOC)Full Name
BlogEngine.Core8427BlogEngine.Core
Sum:8427
Average:8427
Minimum:8427
Maximum:8427
Standard deviation:0
Variance:0


WARNING: The following CQL constraint is not satisfied. 8 types on 117 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

typesEfferent coupling at type level (TypeCe)Full Name
Utils96BlogEngine.Core.Utils
XmlBlogProvider84BlogEngine.Core.Providers.XmlBlogProvider
DbBlogProvider62BlogEngine.Core.Providers.DbBlogProvider
Search58BlogEngine.Core.Search
SyndicationGenerator56BlogEngine.Core.SyndicationGenerator
PostViewBase53BlogEngine.Core.Web.Controls.PostViewBase
MetaWeblogHandler53BlogEngine.Core.API.MetaWeblog.MetaWeblogHandler
Post51BlogEngine.Core.Post
Sum:513
Average:64.125
Minimum:51
Maximum:96
Standard deviation:15.568
Variance:242.36


WARNING: The following CQL constraint is not satisfied. 1 types on 409 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
typesSize of instance# interfaces implementedFull Name
ExtensionManager00ExtensionManager
Sum:00
Average:00
Minimum:00
Maximum:00
Standard deviation:00
Variance:00


WARNING: The following CQL constraint is not satisfied. 10 types on 409 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
Result02BlogEngine.Core.Result
BlogProviderSection03BlogEngine.Core.Providers.BlogProviderSection
MetaWeblogException03BlogEngine.Core.API.MetaWeblog.MetaWeblogException
Apml+Concept04BlogEngine.Core.Web.HttpHandlers.Apml+Concept
SortedExtension04BlogEngine.Core.Web.Controls.SortedExtension
SavedEventArgs04BlogEngine.Core.SavedEventArgs
WidgetSettings04BlogEngine.Core.DataStore.WidgetSettings
ExtensionSettings04BlogEngine.Core.DataStore.ExtensionSettings
WidgetData04BlogEngine.Core.DataStore.WidgetData
BlogProviderCollection06BlogEngine.Core.Providers.BlogProviderCollection
Sum:038
Average:03.8
Minimum:02
Maximum:06
Standard deviation:00.9797959
Variance:00.96


WARNING: The following CQL constraint is not satisfied. 10 types on 409 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.
typesSize of instance# ChildrenDepth of inheritanceFull Name
ExtensionManager001ExtensionManager
Utils001BlogEngine.Core.Utils
Search001BlogEngine.Core.Search
Result801BlogEngine.Core.Result
SyndicationGenerator801BlogEngine.Core.SyndicationGenerator
Role801BlogEngine.Core.Role
CommentHandlers001BlogEngine.Core.CommentHandlers
Utils+<>c__DisplayClass1401BlogEngine.Core.Utils+<>c__DisplayClass1
Search+<>c__DisplayClassa401BlogEngine.Core.Search+<>c__DisplayClassa
AuthorProfile+<>c__DisplayClass1401BlogEngine.Core.AuthorProfile+<>c__DisplayClass1
Sum:36010
Average:3.601
Minimum:001
Maximum:801
Standard deviation:3.322600
Variance:11.0400


WARNING: The following CQL constraint is not satisfied. 1 namespaces on 47 tested match the condition. --> Group {Design}
// <Name>Declare types in namespaces</Name>
WARN IF Count > 0 IN SELECT NAMESPACES WHERE NameIs "" AND !IsInFrameworkAssembly 

// Types are declared within namespaces to prevent name collisions, and as a way of organizing related types 
// in an object hierarchy. Types outside any named namespace are in a global namespace that cannot be referenced in code.
// If an anonymous namespace can be found, it means that it contains types outside of namespaces.
namespaces# lines of code (LOC)Full Name
560
Sum:560
Average:560
Minimum:560
Maximum:560
Standard deviation:0
Variance:0


WARNING: The following CQL constraint is not satisfied. 10 types on 409 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
typesSize of instanceFull Name
BlogBasePage362BlogEngine.Core.Web.Controls.BlogBasePage
BlogSettings213BlogEngine.Core.BlogSettings
XMLRPCResponse134BlogEngine.Core.API.MetaWeblog.XMLRPCResponse
XMLRPCRequest134BlogEngine.Core.API.MetaWeblog.XMLRPCRequest
AuthorProfile101BlogEngine.Core.AuthorProfile
RewriteFormHtmlTextWriter98BlogEngine.Core.Web.Controls.RewriteFormHtmlTextWriter
Post94BlogEngine.Core.Post
PostViewBase94BlogEngine.Core.Web.Controls.PostViewBase
CommentViewBase85BlogEngine.Core.Web.Controls.CommentViewBase
Comment81BlogEngine.Core.Comment
Sum:1396
Average:139.6
Minimum:81
Maximum:362
Standard deviation:82.889
Variance:6870.6


WARNING: The following CQL constraint is not satisfied. 25 types on 409 tested match the condition. --> Group {Design \ Performance}
// <Name>Boxing/unboxing should be avoided (Type)</Name>
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:4831
Average:193.24
Minimum:14
Maximum:1276
Standard deviation:256.67
Variance:65881.6


WARNING: The following CQL constraint is not satisfied. 10 methods on 1564 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.
methodsAfferent coupling at method level (MethodCa)Full Name
get_ChangedProperties()0BlogEngine.Core.BusinessBase<TYPE,KEY>.get_ChangedProperties()
ValidationRules()0BlogEngine.Core.AuthorProfile.ValidationRules()
DataSelect(String)0BlogEngine.Core.AuthorProfile.DataSelect(String)
DataUpdate()0BlogEngine.Core.AuthorProfile.DataUpdate()
DataInsert()0BlogEngine.Core.AuthorProfile.DataInsert()
DataDelete()0BlogEngine.Core.AuthorProfile.DataDelete()
ValidationRules()0BlogEngine.Core.Category.ValidationRules()
DataSelect(Guid)0BlogEngine.Core.Category.DataSelect(Guid)
DataUpdate()0BlogEngine.Core.Category.DataUpdate()
DataInsert()0BlogEngine.Core.Category.DataInsert()
Sum:0
Average:0
Minimum:0
Maximum:0
Standard deviation:0
Variance:0


WARNING: The following CQL constraint is not satisfied. 1 types on 117 tested match the condition. --> Group {Unused Code / Dead Code}
// <Name>Potentially unused types</Name>
WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE 
 
TypeCa == 0 AND     // Ca=0 -> No Afferent Coupling -> The type is not used in the context of this application.
 !IsPublic AND       // Public types might be used by client applications of your assemblies.
 !NameIs "Program"   // Generally, types named Program contain a Main() entry-point method and this condition avoid to consider such type as unused code.
typesAfferent coupling at type level (TypeCa)Full Name
MetaWeblogHandler0BlogEngine.Core.API.MetaWeblog.MetaWeblogHandler
Sum:0
Average:0
Minimum:0
Maximum:0
Standard deviation:0
Variance:0


WARNING: The following CQL constraint is not satisfied. 10 fields on 555 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
fieldsSize of instanceFull Name
FileAccessException0ExtensionManager.FileAccessException
ID4FoafPerson.ID
Name4FoafPerson.Name
Email4FoafPerson.Email
Homepage4FoafPerson.Homepage
Blog4FoafPerson.Blog
Rdf4FoafPerson.Rdf
Firstname4FoafPerson.Firstname
Lastname4FoafPerson.Lastname
Image4FoafPerson.Image
Sum:36
Average:3.6
Minimum:0
Maximum:4
Standard deviation:1.2
Variance:1.44


WARNING: The following CQL constraint is not satisfied. 10 methods on 2301 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
get_Name()1ManagedExtension.get_Name()
set_Version(String)1ManagedExtension.set_Version(String)
get_Priority()1ManagedExtension.get_Priority()
set_Priority(Int32)1ManagedExtension.set_Priority(Int32)
set_Description(String)1ManagedExtension.set_Description(String)
set_Author(String)1ManagedExtension.set_Author(String)
set_AdminPage(String)1ManagedExtension.set_AdminPage(String)
get_Enabled()1ManagedExtension.get_Enabled()
set_Enabled(Boolean)1ManagedExtension.set_Enabled(Boolean)
get_Settings()3ManagedExtension.get_Settings()
Sum:12
Average:1.2
Minimum:1
Maximum:3
Standard deviation:0.5999999
Variance:0.3599999


WARNING: The following CQL constraint is not satisfied. 10 methods on 2301 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
set_Name(String)1ManagedExtension.set_Name(String)
get_Version()1ManagedExtension.get_Version()
get_Description()1ManagedExtension.get_Description()
get_Author()1ManagedExtension.get_Author()
get_AdminPage()1ManagedExtension.get_AdminPage()
set_Settings(List<ExtensionSettings>)1ManagedExtension.set_Settings(List<ExtensionSettings>)
get_ShowSettings()1ManagedExtension.get_ShowSettings()
ContainsSetting(String)6ManagedExtension.ContainsSetting(String)
.ctor()8ManagedExtension..ctor()
get_Help()1ExtensionSettings.get_Help()
Sum:22
Average:2.2
Minimum:1
Maximum:8
Standard deviation:2.4413
Variance:5.96


WARNING: The following CQL constraint is not satisfied. 10 types on 409 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
ManagedExtension69ManagedExtension
ExtensionSettings228ExtensionSettings
ExtensionManager157ExtensionManager
ExtensionParameter40ExtensionParameter
FoafPerson66FoafPerson
IPublishableN/ABlogEngine.Core.IPublishable
Utils247BlogEngine.Core.Utils
Comment56BlogEngine.Core.Comment
Search155BlogEngine.Core.Search
StateList<T>14BlogEngine.Core.StateList<T>
Sum:1032
Average:103.2
Minimum:0
Maximum:247
Standard deviation:83.195
Variance:6921.4


WARNING: The following CQL constraint is not satisfied. 10 fields on 555 tested match the condition. --> Group {Encapsulation \ Fields Optimal Encapsulation}
// <Name>Fields that could be declared as internal</Name>
WARN IF Count > 0 IN SELECT TOP 10 FIELDS WHERE CouldBeInternal
fieldsSize of instanceFull Name
Name4FoafPerson.Name
Email4FoafPerson.Email
Homepage4FoafPerson.Homepage
Blog4FoafPerson.Blog
Rdf4FoafPerson.Rdf
Firstname4FoafPerson.Firstname
Lastname4FoafPerson.Lastname
Title4FoafPerson.Title
Birthday4FoafPerson.Birthday
Phone4FoafPerson.Phone
Sum:40
Average:4
Minimum:4
Maximum:4
Standard deviation:0
Variance:0


WARNING: The following CQL constraint is not satisfied. 3 fields on 555 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
fieldsSize of instanceFull Name
FileAccessException0ExtensionManager.FileAccessException
ID4FoafPerson.ID
Image4FoafPerson.Image
Sum:8
Average:2.6667
Minimum:0
Maximum:4
Standard deviation:1.8856
Variance:3.5556


WARNING: The following CQL constraint is not satisfied. 33 fields on 555 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).



fieldsSize of instanceFull Name
Sum:64
Average:1.9394
Minimum:0
Maximum:4
Standard deviation:1.9991
Variance:3.9963


WARNING: The following CQL constraint is not satisfied. 9 types on 409 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:0
Average:0
Minimum:0
Maximum:0
Standard deviation:0
Variance:0


WARNING: The following CQL constraint is not satisfied. 10 fields on 555 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.
fieldsSize of instanceFull Name
_name4ManagedExtension._name
_version4ManagedExtension._version
_priority4ManagedExtension._priority
_description4ManagedExtension._description
_enabled1ManagedExtension._enabled
_author4ManagedExtension._author
_adminPage4ManagedExtension._adminPage
_settings4ManagedExtension._settings
_showSettings1ManagedExtension._showSettings
_index4ExtensionSettings._index
Sum:34
Average:3.4
Minimum:1
Maximum:4
Standard deviation:1.2
Variance:1.44


WARNING: The following CQL constraint is not satisfied. 10 fields on 555 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.
fieldsSize of instanceFull Name
_extensions0ExtensionManager._extensions
_newExtensions0ExtensionManager._newExtensions
FileAccessException0ExtensionManager.FileAccessException
STRIP_HTML0BlogEngine.Core.Utils.STRIP_HTML
REGEX_BETWEEN_TAGS0BlogEngine.Core.Utils.REGEX_BETWEEN_TAGS
REGEX_LINE_BREAKS0BlogEngine.Core.Utils.REGEX_LINE_BREAKS
_RelativeWebRoot0BlogEngine.Core.Utils._RelativeWebRoot
MOBILE_REGEX0BlogEngine.Core.Utils.MOBILE_REGEX
mono0BlogEngine.Core.Utils.mono
HREF0BlogEngine.Core.Utils.HREF
Sum:0
Average:0
Minimum:0
Maximum:0
Standard deviation:0
Variance:0


WARNING: The following CQL constraint is not satisfied. 1 types on 409 tested match the condition. --> Group {Naming Conventions}
// <Name>Abstract base class should be suffixed with 'Base'</Name>
WARN IF Count > 0 IN SELECT TOP 10 TYPES WHERE 
  
IsAbstract AND 
  
IsClass AND
  
DepthOfInheritance == 1 AND // equivalent to:   DepthOfDeriveFrom "System.Object" == 1
  !NameLike "Base$"
typesDepth of inheritanceFull Name
BusinessBase<TYPE,KEY>1BlogEngine.Core.BusinessBase<TYPE,KEY>
Sum:1
Average:1
Minimum:1
Maximum:1
Standard deviation:0
Variance:0


WARNING: The following CQL constraint is not satisfied. 10 methods on 2301 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
parseReferrers()7BlogEngine.Core.Referrer.parseReferrers()
writeBlogRollFile(List<BlogRollItem>)20BlogEngine.Core.Providers.XmlBlogProvider.writeBlogRollFile(List<BlogRollItem>)
getReferrersFromFile(FileInfo,DateTime)11BlogEngine.Core.Providers.XmlBlogProvider.getReferrersFromFile(FileInfo,DateTime)
writeReferrerFile(List<Referrer>,DateTime)20BlogEngine.Core.Providers.XmlBlogProvider.writeReferrerFile(List<Referrer>,DateTime)
addBlogRollParametersToCommand(BlogRollItem,DbProviderFactory,DbCommand)28BlogEngine.Core.Providers.DbBlogProvider.addBlogRollParametersToCommand(BlogRollItem,DbProviderFactory,DbCommand)
addReferrersParametersToCommand(Referrer,DbProviderFactory,DbCommand)24BlogEngine.Core.Providers.DbBlogProvider.addReferrersParametersToCommand(Referrer,DbProviderFactory,DbCommand)
deleteOldReferrers()16BlogEngine.Core.Providers.DbBlogProvider.deleteOldReferrers()
context_BeginRequest(Object,EventArgs)11BlogEngine.Core.Web.HttpModules.WwwSubDomainModule.context_BeginRequest(Object,EventArgs)
context_PostReleaseRequestState(Object,EventArgs)7BlogEngine.Core.Web.HttpModules.CompressionModule.context_PostReleaseRequestState(Object,EventArgs)
context_BeginRequest(Object,EventArgs)7BlogEngine.Core.Web.HttpModules.ReferrerModule.context_BeginRequest(Object,EventArgs)
Sum:151
Average:15.1
Minimum:7
Maximum:28
Standard deviation:7.245
Variance:52.49


WARNING: The following CQL constraint is not satisfied. 8 methods on 2301 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
get_ShowDescriptionInPostListForPostsByTagOrCategory()0BlogEngine.Core.BlogSettings.get_ShowDescriptionInPostListForPostsByTagOrCategory()
set_ShowDescriptionInPostListForPostsByTagOrCategory(Boolean)0BlogEngine.Core.BlogSettings.set_ShowDescriptionInPostListForPostsByTagOrCategory(Boolean)
get_DescriptionCharactersForPostsByTagOrCategory()0BlogEngine.Core.BlogSettings.get_DescriptionCharactersForPostsByTagOrCategory()
set_DescriptionCharactersForPostsByTagOrCategory(Int32)0BlogEngine.Core.BlogSettings.set_DescriptionCharactersForPostsByTagOrCategory(Int32)
get_MinRequiredNonAlphanumericCharacters()1BlogEngine.Core.Providers.DbMembershipProvider.get_MinRequiredNonAlphanumericCharacters()
get_PasswordStrengthRegularExpression()1BlogEngine.Core.Providers.DbMembershipProvider.get_PasswordStrengthRegularExpression()
get_MinRequiredNonAlphanumericCharacters()1BlogEngine.Core.Providers.XmlMembershipProvider.get_MinRequiredNonAlphanumericCharacters()
get_PasswordStrengthRegularExpression()1BlogEngine.Core.Providers.XmlMembershipProvider.get_PasswordStrengthRegularExpression()
Sum:4
Average:0.5
Minimum:0
Maximum:1
Standard deviation:0.5
Variance:0.25


WARNING: The following CQL constraint is not satisfied. 1 methods on 2301 tested match the condition. --> Group {.NET Framework Usage \ System}
// <Name>Do not raise too general exception types</Name>
WARN IF Count > 0 IN SELECT METHODS WHERE 
  
// The following exception types are too general to provide sufficient information to the user:
  ( ( DepthOfCreateA "OPTIONAL:System.Exception" == 1 OR 
      
DepthOfCreateA "OPTIONAL:System.ApplicationException" == 1 OR 
      
DepthOfCreateA "OPTIONAL:System.SystemException" == 1 )
    
// Test for non-constructor, else this constraint would warn 
    // on ctor of classes that derive from these exception types.
    AND !IsConstructor )
methodsDepthOfCreateA "OPTIONAL:System.Exception"DepthOfCreateA "OPTIONAL:System.ApplicationException"DepthOfCreateA "OPTIONAL:System.SystemException"Full Name
Sum:100
Average:100
Minimum:100
Maximum:100
Standard deviation:000
Variance:000


WARNING: The following CQL constraint is not satisfied. 4 fields on 555 tested match the condition. --> Group {.NET Framework Usage \ System}
// <Name>Uri fields should be of type System.Uri</Name>
WARN IF Count > 0 IN SELECT FIELDS WHERE 
  
(NameLike "Uri$" OR NameLike "Url$") AND !IsOfType "OPTIONAL:System.Uri"

// A field which name end with 'Uri' is deemed as representing a uri.
// Such field should be of type System.Uri.
fieldsSize of instanceFull Name
Sum:16
Average:4
Minimum:4
Maximum:4
Standard deviation:0
Variance:0


WARNING: The following CQL constraint is not satisfied. 10 methods on 2301 tested match the condition. --> Group {.NET Framework Usage \ System.Collection}
// <Name>Don't use .NET 1.x HashTable and ArrayList</Name>
WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE

 
// Prefer using the class System.Collections.Generic.Dictionary<K,V> over System.Collections.HashTable.
 CreateA "OPTIONAL:System.Collections.HashTable" OR

 
// Prefer using the class System.Collections.Generic.List<T> over System.Collections.ArrayList.
 CreateA "OPTIONAL:System.Collections.ArrayList"

// You can be forced to use HashTable or ArrayList 
// because if you are using tier code that requires working with these classes
// or because you are coding with .NET 1.x.
methodsDepthOfCreateA "OPTIONAL:System.Collections.HashTable"DepthOfCreateA "OPTIONAL:System.Collections.ArrayList"Full Name
Sum:023
Average:02.3
Minimum:00
Maximum:04
Standard deviation:01.1
Variance:01.21


WARNING: The following CQL constraint is not satisfied. 2 methods on 2301 tested match the condition. --> Group {.NET Framework Usage \ System.Xml}
// <Name>Method should not return concrete XmlNode</Name>
WARN IF Count > 0 IN SELECT METHODS WHERE 
( ReturnTypeIs "OPTIONAL:System.Xml.XmlDocument" OR 
  
ReturnTypeIs "OPTIONAL:System.Xml.XmlAttribute" OR 
  
ReturnTypeIs "OPTIONAL:System.Xml.XmlDocumentFragment" OR 
  
ReturnTypeIs "OPTIONAL:System.Xml.XmlEntity" OR 
  
ReturnTypeIs "OPTIONAL:System.Xml.XmlLinkedNode" OR 
  
ReturnTypeIs "OPTIONAL:System.Xml.XmlNotation" OR
  
ReturnTypeIs "OPTIONAL:System.Xml.XmlNode" )

// The class System.Xml.XmlNode implements the interface System.Xml.Xpath.IXPathNavigable.
// It is preferrable to return this interface instead of a concrete class.
methods# lines of code (LOC)Full Name
Sum:19
Average:9.5
Minimum:8
Maximum:11
Standard deviation:1.5
Variance:2.25




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

Typerank# ILInst# lines of code# lines of comment% commentlcomlcom(HS)CCILCCCaCeABC# Instance Methods# Static Methods# Prop# FldNOCDITNamespace
Utils5,411120247--00-117409618104061201BlogEngine.Core
BusinessBase<TYPE,KEY>5,25488118--0,910,94-75333850379121261BlogEngine.Core
Post3,731225261--0,970,98-16027511406329272802BlogEngine.Core
BlogSettings3,7179764--0,990,99-1893935451604808001BlogEngine.Core
ExtensionType3,64--------1140------BlogEngine.Core.DataStore
Referrer2,5426664--0,920,96-451021381957802BlogEngine.Core
IPublishable2,5--------1590140130--BlogEngine.Core
Category2,2528961--0,860,9-441625492139602BlogEngine.Core
BlogService2,1922890--00-441225500422301BlogEngine.Core.Providers
ISettingsBehavior2,13--------6402000--BlogEngine.Core.DataStore
StateList<T>2,056414--0,60,75-10141311501102BlogEngine.Core
BlogRollItem2,0423058--0,920,96-391021332137802BlogEngine.Core
Comment1,8627056--0,960,98-601522264012221801BlogEngine.Core
SaveAction1,84--------940------BlogEngine.Core
AuthorProfile1,5535787--0,960,98-6691929433201802BlogEngine.Core
Page1,3535886--0,950,98-70102946349161402BlogEngine.Core
ServingEventArgs1,244613--0,730,81-107731004402BlogEngine.Core
SettingsBase0,974410--0,520,58-9365903321BlogEngine.Core.DataStore
ServingLocation0,82--------440------BlogEngine.Core
ServingContentBy0,7--------240------BlogEngine.Core
ParameterType0,67--------350------
BlogProvider0,6430--00-141503900022BlogEngine.Core.Providers
Result0,63172--0,671-3264300201BlogEngine.Core
BlogProviderSection0,6183--00-4380402003BlogEngine.Core.Providers
ExtensionSettingsBehavior0,53186--00-4174300001BlogEngine.Core.DataStore
StringDictionaryBehavior0,5210927--00-1312024310101BlogEngine.Core.DataStore
ExtensionParameter0,4915840--0,840,88-2938112308801
ExtensionSettings0,461018228--0,920,93-14432950540121201
SavedEventArgs0,38134--0,330,5-3242301102BlogEngine.Core
MWAPage0,3600--00-03400008--BlogEngine.Core.API.MetaWeblog
MWAPost0,3600--00-036000012--BlogEngine.Core.API.MetaWeblog
BlogRollItem+<>c__DisplayClass10,3591--0,51-2173200101BlogEngine.Core
AuthorProfile+<>c__DisplayClass10,35101--0,51-2174200101BlogEngine.Core
TrackbackMessage0,358919--0,830,91-1321071205501BlogEngine.Core.Ping
CompressionModule0,3311618--00-1332329430201BlogEngine.Core.Web.HttpModules
BlogProviderCollection0,32246--00-51115300002BlogEngine.Core.Providers
MWAMediaInfo0,300--00-02300001--BlogEngine.Core.API.MetaWeblog
MWACategory0,300--00-02300005--BlogEngine.Core.API.MetaWeblog
MWABlogInfo0,300--00-02300003--BlogEngine.Core.API.MetaWeblog
MWAAuthor0,300--00-02300005--BlogEngine.Core.API.MetaWeblog
MWAFault0,300--00-02300002--BlogEngine.Core.API.MetaWeblog
SerializableStringDictionary0,298119--00-1011416400002BlogEngine.Core.DataStore
ExtensionAttribute0,293913--0,540,65-6260604402BlogEngine.Core.Web.Controls
ExtensionManager0,29641157--00-92238631241401
WidgetData0,28134--00-3132301101BlogEngine.Core.DataStore
CompressionModule+WebResourceFilter0,2710021--0,680,73-14126281405203BlogEngine.Core.Web.HttpModules
Post+<>c__DisplayClasse0,26336--0,51-61129200101BlogEngine.Core
Post+<>c__DisplayClass80,2691--0,51-2173200101BlogEngine.Core
Post+<>c__DisplayClass50,2691--0,51-2183200101BlogEngine.Core
Post+<>c__DisplayClass110,26231--0,51-3185200201BlogEngine.Core
Post+<>c__DisplayClassb0,26132--0,51-2185200101BlogEngine.Core
MWAMediaObject0,2600--00-02500003--BlogEngine.Core.API.MetaWeblog
MetaWeblogException0,26103--00-2241201102BlogEngine.Core.API.MetaWeblog
OpenSearchHandler+<>c__DisplayClass10,26141--0,51-2196200101BlogEngine.Core.Web.HttpHandlers
SyndicationFormat0,26--------240------BlogEngine.Core
Trackback0,2513631--00-1912729070201BlogEngine.Core.Ping
Pingback0,2520347--00-2113338090301BlogEngine.Core.Ping
ReferrerModule+<>c__DisplayClass30,23221--0,51-3177200201BlogEngine.Core.Web.HttpModules
Apml+Concept0,23124--00-1151100301BlogEngine.Core.Web.HttpHandlers
Utils+<>c__DisplayClass10,2271--0,51-2152200101BlogEngine.Core
SortedExtension0,22124--00-1141100301BlogEngine.Core.Web.Controls
CommentHandlers0,22826188--00-77139780100201BlogEngine.Core
ExtensionSettings0,22124--00-1176100002BlogEngine.Core.DataStore
ManagedExtension0,2227369--0,830,87-401152124191001
FoafPerson0,2221766--0,070,11-318143001401
Role0,223411--0,330,4-6142602201BlogEngine.Core
ICustomFilter0,22--------1304010--BlogEngine.Core
UrlRewrite+<>c__DisplayClass40,21111--0,51-2185200101BlogEngine.Core.Web.HttpModules
UrlRewrite+<>c__DisplayClass10,21453--0,51-411211200201BlogEngine.Core.Web.HttpModules
XMLRPCRequest+<>c__DisplayClass20,21101--0,51-2164200101BlogEngine.Core.API.MetaWeblog
Search0,21783155--00-8415810202601001BlogEngine.Core
SyndicationGenerator0,211583304--0,940,98-10715614011134801BlogEngine.Core
RewriteFormHtmlTextWriter0,26214--00-511314300004BlogEngine.Core.Web.Controls
XMLRPCRequest0,21122188--0,90,95-8614378190121301BlogEngine.Core.API.MetaWeblog
XMLRPCResponse0,22006565--0,920,94-10212668430131401BlogEngine.Core.API.MetaWeblog
Search+<>c__DisplayClassa0,2101--0,51-2162200101BlogEngine.Core
Entry0,200--00-01400003--BlogEngine.Core
DbBlogProvider+<>c__DisplayClass50,19111--0,51-2173200101BlogEngine.Core.Providers
DbBlogProvider+<>c__DisplayClass10,1991--0,51-2173200101BlogEngine.Core.Providers
XmlBlogProvider+<>c__DisplayClassb0,18161--0,51-2174200101BlogEngine.Core.Providers
XmlBlogProvider+<>c__DisplayClass80,18161--0,51-2174200101BlogEngine.Core.Providers
XmlBlogProvider+<>c__DisplayClass50,18111--0,51-2173200101BlogEngine.Core.Providers
XmlBlogProvider+<>c__DisplayClass10,1891--0,51-2173200101BlogEngine.Core.Providers
OpmlHandler0,1510724--00-901625301001BlogEngine.Core.Web.HttpHandlers
XmlBlogProvider0,153081557--00-2510843064501003BlogEngine.Core.Providers
TrackbackHandler0,1539470--0,890,94-44036677121601BlogEngine.Core.Web.HttpHandlers
ImageHandler0,1517729--00-2102639391301BlogEngine.Core.Web.HttpHandlers
RsdHandler0,1512429--00-701727301001BlogEngine.Core.Web.HttpHandlers
MetaWeblogHandler0,151617357--00-1170531852001001BlogEngine.Core.API.MetaWeblog
PingService0,1510127--00-1002122030001BlogEngine.Core.Ping
PingbackHandler0,15549110--0,920,96-490448381611001BlogEngine.Core.Web.HttpHandlers
DbBlogProvider0,1569081276--0,250,25-4320622584700303BlogEngine.Core.Providers
XmlMembershipProvider0,15832184--0,790,81-910418133011303BlogEngine.Core.Providers
CommentViewBase0,1554360--0,850,92-35036741216604BlogEngine.Core.Web.Controls
PageSiteMap0,1520634--00-1601831500003BlogEngine.Core.Web.Controls
SyndicationHandler0,15552113--00-54044753111301BlogEngine.Core.Web.HttpHandlers
BlogMLExportHandler0,15833188--00-54034733161001BlogEngine.Core.Web.HttpHandlers
WwwSubDomainModule0,1513825--00-1601831440101BlogEngine.Core.Web.HttpModules
Sioc0,151263248--00-76050981592101BlogEngine.Core.Web.HttpHandlers
JavaScriptHandler0,15516106--00-3104583351001BlogEngine.Core.Web.HttpHandlers
FileHandler0,1516327--00-21023343101301BlogEngine.Core.Web.HttpHandlers
DbMembershipProvider0,151255250--0,790,81-1030325931011503BlogEngine.Core.Providers
DbRoleProvider0,151590263--0,390,42-95026461401403BlogEngine.Core.Providers
PostViewBase0,1570397--0,910,95-500539721110604BlogEngine.Core.Web.Controls
SiteMap0,1516734--00-1202128301001BlogEngine.Core.Web.HttpHandlers
Apml0,15441106--00-3303460821101BlogEngine.Core.Web.HttpHandlers
Manager0,1513630--00-1602633050201BlogEngine.Core.Ping
CssHandler0,1536971--00-33038663131301BlogEngine.Core.Web.HttpHandlers
OpenSearchHandler0,1515131--00-502436301001BlogEngine.Core.Web.HttpHandlers
UrlRewrite0,15634100--00-3704178480301BlogEngine.Core.Web.HttpModules
XmlRoleProvider0,15830173--0,710,75-103037691711403BlogEngine.Core.Providers
RatingHandler0,1513126--00-1001526321001BlogEngine.Core.Web.HttpHandlers
XMLDocumentBehavior0,1510427--00-1102022310101BlogEngine.Core.DataStore
Foaf0,15562117--00-4503780722101BlogEngine.Core.Web.HttpHandlers
WidgetSettings0,15124--00-1076100002BlogEngine.Core.DataStore
BlogBasePage0,15766117--0,890,94-40049961800104BlogEngine.Core.Web.Controls
ReferrerModule0,1523940--00-2503357480301BlogEngine.Core.Web.HttpModules