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)
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 | # Occurrences | Avg | StdDev | Max |
Properties on Interfaces
| 3 Interfaces
| 4,67 | 5,91 | 13 properties on BlogEngine.Core.IPublishable |
Methods on Interfaces
| 3 Interfaces
| 6,67 | 5,25 | 14 methods on BlogEngine.Core.IPublishable |
Arguments on Methods on Interfaces
| 20 Methods
| 0,4 | 0,8 | 3 arguments on BlogEngine.Core.DataStore.ISettingsBehavior.SaveSettings(ExtensionType,String,Object) |
Public Properties on Classes
| 99 Classes
| 3,47 | 9,22 | 80 public properties on BlogEngine.Core.BlogSettings |
Public Methods on Classes
| 99 Classes
| 11,91 | 20,26 | 161 public methods on BlogEngine.Core.BlogSettings |
Arguments on Public Methods on Classes
| 1179 Methods
| 0,75 | 0,91 | 12 arguments on FoafPerson..ctor(String,String,String,String,String,String,String,String,String,String,String,String) |
IL Instructions in non-abstract Methods
| 1501 Methods
| 28 | 54,54 | 645 IL
instructions in BlogEngine.Core.API.MetaWeblog.XMLRPCRequest.LoadXMLRequest(String) |
|
|
Cyclomatic complexity on non abstract Methods
| 1501 Methods
| 2,57 | 3,42 |
CC = 41 for BlogEngine.Core.Providers.DbBlogProvider.SelectPost(Guid) |
Assemblies Metrics
Visual NDepend View
Assemblies Abstractness vs.
Instability
Assemblies Dependencies
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 instructions | Cyclomatic Complexity (CC) | IL Cyclomatic Complexity (ILCC) | IL Nesting Depth | #
Parameters | # Variables | # Overloads | Full Name |
Initialized(ExtensionSettings) | 8 | 38 | 0 | 5 | 5 | 1 | 3 | 1 | ManagedExtension.Initialized(ExtensionSettings) |
AddParameter(String,String,Int32,Boolean,Boolean,ParameterType) | 9 | 29 | 0 | 2 | 1 | 6 | 1 | 6 | ExtensionSettings.AddParameter(String,String,Int32,Boolean,Boolean,ParameterType) |
IsKeyValueExists(String) | 10 | 56 | 0 | 8 | 6 | 1 | 6 | 1 | ExtensionSettings.IsKeyValueExists(String) |
AddValue(String,String) | 1 | 5 | 0 | 1 | 0 | 2 | 0 | 9 | ExtensionSettings.AddValue(String,String) |
AddValue(String,Boolean) | 1 | 6 | 0 | 1 | 0 | 2 | 0 | 9 | ExtensionSettings.AddValue(String,Boolean) |
AddValue(String,Int32) | 1 | 6 | 0 | 1 | 0 | 2 | 0 | 9 | ExtensionSettings.AddValue(String,Int32) |
AddValue(String,Int64) | 1 | 6 | 0 | 1 | 0 | 2 | 0 | 9 | ExtensionSettings.AddValue(String,Int64) |
AddValue(String,Single) | 1 | 6 | 0 | 1 | 0 | 2 | 0 | 9 | ExtensionSettings.AddValue(String,Single) |
AddValue(String,Double) | 1 | 6 | 0 | 1 | 0 | 2 | 0 | 9 | ExtensionSettings.AddValue(String,Double) |
AddValue(String,Decimal) | 1 | 6 | 0 | 1 | 0 | 2 | 0 | 9 | ExtensionSettings.AddValue(String,Decimal) |
Sum: | 34 | 164 | 0 | 22 | 12 | 22 | 10 | 71 | |
Average: | 3.4 | 16.4 | 0 | 2.2 | 1.2 | 2.2 | 1 | 7.1 | |
Minimum: | 1 | 5 | 0 | 1 | 0 | 1 | 0 | 1 | |
Maximum: | 10 | 56 | 0 | 8 | 6 | 6 | 6 | 9 | |
Standard deviation: | 3.6932 | 17.241 | 0 | 2.2716 | 2.1817 | 1.3266 | 1.8974 | 3.1765 | |
Variance: | 13.64 | 297.24 | 0 | 5.16 | 4.76 | 1.76 | 3.6 | 10.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) | 97 | BlogEngine.Core.API.MetaWeblog.XMLRPCResponse.WritePosts(XmlTextWriter) |
LoadXMLRequest(String) | 91 | BlogEngine.Core.API.MetaWeblog.XMLRPCRequest.LoadXMLRequest(String) |
WritePost(XmlTextWriter) | 90 | BlogEngine.Core.API.MetaWeblog.XMLRPCResponse.WritePost(XmlTextWriter) |
SelectPost(Guid) | 89 | BlogEngine.Core.Providers.DbBlogProvider.SelectPost(Guid) |
WriteSiocPost(XmlWriter,IPublishable) | 82 | BlogEngine.Core.Web.HttpHandlers.Sioc.WriteSiocPost(XmlWriter,IPublishable) |
UpdateComments(Post,DbConnection,DbProviderFactory) | 72 | BlogEngine.Core.Providers.DbBlogProvider.UpdateComments(Post,DbConnection,DbProviderFactory) |
UpdatePost(Post) | 67 | BlogEngine.Core.Providers.DbBlogProvider.UpdatePost(Post) |
InsertPost(Post) | 67 | BlogEngine.Core.Providers.DbBlogProvider.InsertPost(Post) |
SelectPost(Guid) | 67 | BlogEngine.Core.Providers.XmlBlogProvider.SelectPost(Guid) |
InsertPost(Post) | 64 | BlogEngine.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
instructions | Full Name |
LoadXMLRequest(String) | 645 | BlogEngine.Core.API.MetaWeblog.XMLRPCRequest.LoadXMLRequest(String) |
SelectPost(Guid) | 533 | BlogEngine.Core.Providers.DbBlogProvider.SelectPost(Guid) |
WriteSiocPost(XmlWriter,IPublishable) | 427 | BlogEngine.Core.Web.HttpHandlers.Sioc.WriteSiocPost(XmlWriter,IPublishable) |
SelectPost(Guid) | 398 | BlogEngine.Core.Providers.XmlBlogProvider.SelectPost(Guid) |
UpdateComments(Post,DbConnection,DbProviderFactory) | 395 | BlogEngine.Core.Providers.DbBlogProvider.UpdateComments(Post,DbConnection,DbProviderFactory) |
InsertPost(Post) | 379 | BlogEngine.Core.Providers.XmlBlogProvider.InsertPost(Post) |
ProcessRequest(HttpContext) | 350 | BlogEngine.Core.API.MetaWeblog.MetaWeblogHandler.ProcessRequest(HttpContext) |
UpdatePost(Post) | 347 | BlogEngine.Core.Providers.DbBlogProvider.UpdatePost(Post) |
InsertPost(Post) | 347 | BlogEngine.Core.Providers.DbBlogProvider.InsertPost(Post) |
WritePosts(XmlTextWriter) | 322 | BlogEngine.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
methods | IL Cyclomatic
Complexity (ILCC) | Full Name |
SelectPost(Guid) | 41 | BlogEngine.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
methods | IL Nesting
Depth | Full Name |
AddObjectValue(String,Object) | 10 | ExtensionSettings.AddObjectValue(String,Object) |
RemoveUsersFromRoles(String[],String[]) | 8 | BlogEngine.Core.Providers.XmlRoleProvider.RemoveUsersFromRoles(String[],String[]) |
ModeratedByFilter(Comment) | 8 | BlogEngine.Core.CommentHandlers.ModeratedByFilter(Comment) |
ProcessRequest(HttpContext) | 8 | BlogEngine.Core.Web.HttpHandlers.TrackbackHandler.ProcessRequest(HttpContext) |
AddUsersToRoles(String[],String[]) | 7 | BlogEngine.Core.Providers.XmlRoleProvider.AddUsersToRoles(String[],String[]) |
ProcessRequest(HttpContext) | 7 | BlogEngine.Core.Web.HttpHandlers.RatingHandler.ProcessRequest(HttpContext) |
get_ReplyToLink() | 6 | BlogEngine.Core.Web.Controls.CommentViewBase.get_ReplyToLink() |
InitCustomFilters() | 6 | BlogEngine.Core.CommentHandlers.InitCustomFilters() |
GetSingleValue(String) | 6 | ExtensionSettings.GetSingleValue(String) |
IsKeyValueExists(String) | 6 | ExtensionSettings.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
methods | Percentage
Comment | # lines of code (LOC) | Full Name |
ProcessRequest(HttpContext) | 0 | 15 | BlogEngine.Core.Web.HttpHandlers.RatingHandler.ProcessRequest(HttpContext) |
ProcessRequest(HttpContext) | 0 | 30 | BlogEngine.Core.Web.HttpHandlers.OpenSearchHandler.ProcessRequest(HttpContext) |
AddComment(String,Post,String,String,String) | 0 | 11 | BlogEngine.Core.Web.HttpHandlers.TrackbackHandler.AddComment(String,Post,String,String,String) |
ProcessRequest(HttpContext) | 0 | 13 | BlogEngine.Core.Web.HttpHandlers.SyndicationHandler.ProcessRequest(HttpContext) |
RetrieveTitle(HttpContext) | 0 | 24 | BlogEngine.Core.Web.HttpHandlers.SyndicationHandler.RetrieveTitle(HttpContext) |
RecentComments() | 0 | 16 | BlogEngine.Core.Web.HttpHandlers.SyndicationHandler.RecentComments() |
GenerateItemList(HttpContext) | 0 | 30 | BlogEngine.Core.Web.HttpHandlers.SyndicationHandler.GenerateItemList(HttpContext) |
Send(TrackbackMessage) | 0 | 27 | BlogEngine.Core.Ping.Trackback.Send(TrackbackMessage) |
AddXmlToRequest(HttpWebRequest,Uri) | 0 | 14 | BlogEngine.Core.Ping.PingService.AddXmlToRequest(HttpWebRequest,Uri) |
AddXmlToRequest(Uri,Uri,HttpWebRequest) | 0 | 18 | BlogEngine.Core.Ping.Pingback.AddXmlToRequest(Uri,Uri,HttpWebRequest) |
Sum: | 0 | 198 | |
Average: | 0 | 19.8 | |
Minimum: | 0 | 11 | |
Maximum: | 0 | 30 | |
Standard deviation: | 0 | 6.8964 | |
Variance: | 0 | 47.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 | # Parameters | Full Name |
.ctor(String,String,String,String,String,String,String,String,String,String,String,String) | 12 | FoafPerson..ctor(String,String,String,String,String,String,String,String,String,String,String,String) |
CreateUser(String,String,String,String,String,Boolean,Object,MembershipCreateStatus&) | 8 | BlogEngine.Core.Providers.XmlMembershipProvider.CreateUser(String,String,String,String,String,Boolean,Object,MembershipCreateStatus&) |
CreateUser(String,String,String,String,String,Boolean,Object,MembershipCreateStatus&) | 8 | BlogEngine.Core.Providers.DbMembershipProvider.CreateUser(String,String,String,String,String,Boolean,Object,MembershipCreateStatus&) |
EditPage(String,String,String,String,MWAPage,Boolean) | 6 | BlogEngine.Core.API.MetaWeblog.MetaWeblogHandler.EditPage(String,String,String,String,MWAPage,Boolean) |
AddParameter(String,String,Int32,Boolean,Boolean,ParameterType) | 6 | ExtensionSettings.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 | # Variables | Full Name |
InsertPost(Post) | 29 | BlogEngine.Core.Providers.XmlBlogProvider.InsertPost(Post) |
UpdateComments(Post,DbConnection,DbProviderFactory) | 24 | BlogEngine.Core.Providers.DbBlogProvider.UpdateComments(Post,DbConnection,DbProviderFactory) |
UpdatePage(Page) | 23 | BlogEngine.Core.Providers.DbBlogProvider.UpdatePage(Page) |
InsertPage(Page) | 23 | BlogEngine.Core.Providers.DbBlogProvider.InsertPage(Page) |
UpdatePost(Post) | 22 | BlogEngine.Core.Providers.DbBlogProvider.UpdatePost(Post) |
Page_Load(Object,EventArgs) | 22 | BlogEngine.Core.Web.Controls.PostViewBase.Page_Load(Object,EventArgs) |
ApmlMatches(XmlDocument,Int32) | 22 | BlogEngine.Core.Search.ApmlMatches(XmlDocument,Int32) |
InsertPost(Post) | 22 | BlogEngine.Core.Providers.DbBlogProvider.InsertPost(Post) |
SelectPost(Guid) | 21 | BlogEngine.Core.Providers.DbBlogProvider.SelectPost(Guid) |
RemoveUsersFromRoles(String[],String[]) | 20 | BlogEngine.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 | # Overloads | Full Name |
AddValue(String,Decimal) | 9 | ExtensionSettings.AddValue(String,Decimal) |
AddValue(String,Double) | 9 | ExtensionSettings.AddValue(String,Double) |
AddValue(String,StringCollection,String) | 9 | ExtensionSettings.AddValue(String,StringCollection,String) |
AddValue(String,String[],String) | 9 | ExtensionSettings.AddValue(String,String[],String) |
AddValue(String,Single) | 9 | ExtensionSettings.AddValue(String,Single) |
AddValue(String,Boolean) | 9 | ExtensionSettings.AddValue(String,Boolean) |
AddValue(String,String) | 9 | ExtensionSettings.AddValue(String,String) |
AddValue(String,Int64) | 9 | ExtensionSettings.AddValue(String,Int64) |
AddValue(String,Int32) | 9 | ExtensionSettings.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 | # Methods | Full Name |
BlogSettings | 164 | BlogEngine.Core.BlogSettings |
Post | 92 | BlogEngine.Core.Post |
ExtensionSettings | 54 | ExtensionSettings |
Comment | 52 | BlogEngine.Core.Comment |
DbBlogProvider | 47 | BlogEngine.Core.Providers.DbBlogProvider |
BusinessBase<TYPE,KEY> | 46 | BlogEngine.Core.BusinessBase<TYPE,KEY> |
AuthorProfile | 46 | BlogEngine.Core.AuthorProfile |
XmlBlogProvider | 45 | BlogEngine.Core.Providers.XmlBlogProvider |
Page | 43 | BlogEngine.Core.Page |
XMLRPCResponse | 43 | BlogEngine.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 | # Fields | Full Name |
BlogSettings | 80 | BlogEngine.Core.BlogSettings |
Post | 28 | BlogEngine.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
types | Lack of
Cohesion Of Methods (LCOM) | # Fields | # Methods | Full Name |
BlogSettings | 0.9876465 | 80 | 164 | BlogEngine.Core.BlogSettings |
Post | 0.9741848 | 28 | 92 | BlogEngine.Core.Post |
Comment | 0.9601648 | 18 | 52 | BlogEngine.Core.Comment |
AuthorProfile | 0.9565217 | 18 | 46 | BlogEngine.Core.AuthorProfile |
Page | 0.9534883 | 14 | 43 | BlogEngine.Core.Page |
XMLRPCResponse | 0.9202658 | 14 | 43 | BlogEngine.Core.API.MetaWeblog.XMLRPCResponse |
ExtensionSettings | 0.9166667 | 12 | 54 | ExtensionSettings |
BusinessBase<TYPE,KEY> | 0.9121951 | 12 | 46 | BlogEngine.Core.BusinessBase<TYPE,KEY> |
XMLRPCRequest | 0.8987854 | 13 | 19 | BlogEngine.Core.API.MetaWeblog.XMLRPCRequest |
Sum: | 8.4799 | 209 | 559 | |
Average: | 0.9422133 | 23.222 | 62.111 | |
Minimum: | 0.8987854 | 12 | 19 | |
Maximum: | 0.9876465 | 80 | 164 | |
Standard deviation: | 0.02917557 | 20.622 | 40.209 | |
Variance: | 0.0008512139 | 425.28 | 1616.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
types | LCOM
Henderson-Sellers (LCOMHS) | # Fields | # Methods | Full Name |
BlogSettings | 0.9937057 | 80 | 164 | BlogEngine.Core.BlogSettings |
Post | 0.9848901 | 28 | 92 | BlogEngine.Core.Post |
Comment | 0.9789916 | 18 | 52 | BlogEngine.Core.Comment |
AuthorProfile | 0.9777778 | 18 | 46 | BlogEngine.Core.AuthorProfile |
Page | 0.9761904 | 14 | 43 | BlogEngine.Core.Page |
Sum: | 4.9116 | 158 | 397 | |
Average: | 0.9823111 | 31.6 | 79.4 | |
Minimum: | 0.9761904 | 14 | 43 | |
Maximum: | 0.9937057 | 80 | 164 | |
Standard deviation: | 0.00641305 | 24.638 | 45.841 | |
Variance: | 4.11272E-05 | 607.04 | 2101.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.Core | 8427 | BlogEngine.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
types | Efferent
coupling at type level (TypeCe) | Full Name |
Utils | 96 | BlogEngine.Core.Utils |
XmlBlogProvider | 84 | BlogEngine.Core.Providers.XmlBlogProvider |
DbBlogProvider | 62 | BlogEngine.Core.Providers.DbBlogProvider |
Search | 58 | BlogEngine.Core.Search |
SyndicationGenerator | 56 | BlogEngine.Core.SyndicationGenerator |
PostViewBase | 53 | BlogEngine.Core.Web.Controls.PostViewBase |
MetaWeblogHandler | 53 | BlogEngine.Core.API.MetaWeblog.MetaWeblogHandler |
Post | 51 | BlogEngine.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
types | Size of
instance | # interfaces implemented | Full Name |
ExtensionManager | 0 | 0 | ExtensionManager |
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. 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 |
Result | 0 | 2 | BlogEngine.Core.Result |
BlogProviderSection | 0 | 3 | BlogEngine.Core.Providers.BlogProviderSection |
MetaWeblogException | 0 | 3 | BlogEngine.Core.API.MetaWeblog.MetaWeblogException |
Apml+Concept | 0 | 4 | BlogEngine.Core.Web.HttpHandlers.Apml+Concept |
SortedExtension | 0 | 4 | BlogEngine.Core.Web.Controls.SortedExtension |
SavedEventArgs | 0 | 4 | BlogEngine.Core.SavedEventArgs |
WidgetSettings | 0 | 4 | BlogEngine.Core.DataStore.WidgetSettings |
ExtensionSettings | 0 | 4 | BlogEngine.Core.DataStore.ExtensionSettings |
WidgetData | 0 | 4 | BlogEngine.Core.DataStore.WidgetData |
BlogProviderCollection | 0 | 6 | BlogEngine.Core.Providers.BlogProviderCollection |
Sum: | 0 | 38 | |
Average: | 0 | 3.8 | |
Minimum: | 0 | 2 | |
Maximum: | 0 | 6 | |
Standard deviation: | 0 | 0.9797959 | |
Variance: | 0 | 0.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.
types | Size of
instance | # Children | Depth of inheritance | Full
Name |
ExtensionManager | 0 | 0 | 1 | ExtensionManager |
Utils | 0 | 0 | 1 | BlogEngine.Core.Utils |
Search | 0 | 0 | 1 | BlogEngine.Core.Search |
Result | 8 | 0 | 1 | BlogEngine.Core.Result |
SyndicationGenerator | 8 | 0 | 1 | BlogEngine.Core.SyndicationGenerator |
Role | 8 | 0 | 1 | BlogEngine.Core.Role |
CommentHandlers | 0 | 0 | 1 | BlogEngine.Core.CommentHandlers |
Utils+<>c__DisplayClass1 | 4 | 0 | 1 | BlogEngine.Core.Utils+<>c__DisplayClass1 |
Search+<>c__DisplayClassa | 4 | 0 | 1 | BlogEngine.Core.Search+<>c__DisplayClassa |
AuthorProfile+<>c__DisplayClass1 | 4 | 0 | 1 | BlogEngine.Core.AuthorProfile+<>c__DisplayClass1 |
Sum: | 36 | 0 | 10 | |
Average: | 3.6 | 0 | 1 | |
Minimum: | 0 | 0 | 1 | |
Maximum: | 8 | 0 | 1 | |
Standard deviation: | 3.3226 | 0 | 0 | |
Variance: | 11.04 | 0 | 0 | |
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
types | Size of
instance | Full Name |
BlogBasePage | 362 | BlogEngine.Core.Web.Controls.BlogBasePage |
BlogSettings | 213 | BlogEngine.Core.BlogSettings |
XMLRPCResponse | 134 | BlogEngine.Core.API.MetaWeblog.XMLRPCResponse |
XMLRPCRequest | 134 | BlogEngine.Core.API.MetaWeblog.XMLRPCRequest |
AuthorProfile | 101 | BlogEngine.Core.AuthorProfile |
RewriteFormHtmlTextWriter | 98 | BlogEngine.Core.Web.Controls.RewriteFormHtmlTextWriter |
Post | 94 | BlogEngine.Core.Post |
PostViewBase | 94 | BlogEngine.Core.Web.Controls.PostViewBase |
CommentViewBase | 85 | BlogEngine.Core.Web.Controls.CommentViewBase |
Comment | 81 | BlogEngine.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.
methods | Afferent
coupling at method level (MethodCa) | Full
Name |
get_ChangedProperties() | 0 | BlogEngine.Core.BusinessBase<TYPE,KEY>.get_ChangedProperties() |
ValidationRules() | 0 | BlogEngine.Core.AuthorProfile.ValidationRules() |
DataSelect(String) | 0 | BlogEngine.Core.AuthorProfile.DataSelect(String) |
DataUpdate() | 0 | BlogEngine.Core.AuthorProfile.DataUpdate() |
DataInsert() | 0 | BlogEngine.Core.AuthorProfile.DataInsert() |
DataDelete() | 0 | BlogEngine.Core.AuthorProfile.DataDelete() |
ValidationRules() | 0 | BlogEngine.Core.Category.ValidationRules() |
DataSelect(Guid) | 0 | BlogEngine.Core.Category.DataSelect(Guid) |
DataUpdate() | 0 | BlogEngine.Core.Category.DataUpdate() |
DataInsert() | 0 | BlogEngine.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.
types | Afferent
coupling at type level (TypeCa) | Full Name |
MetaWeblogHandler | 0 | BlogEngine.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
fields | Size of
instance | Full Name |
FileAccessException | 0 | ExtensionManager.FileAccessException |
ID | 4 | FoafPerson.ID |
Name | 4 | FoafPerson.Name |
Email | 4 | FoafPerson.Email |
Homepage | 4 | FoafPerson.Homepage |
Blog | 4 | FoafPerson.Blog |
Rdf | 4 | FoafPerson.Rdf |
Firstname | 4 | FoafPerson.Firstname |
Lastname | 4 | FoafPerson.Lastname |
Image | 4 | FoafPerson.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() | 1 | ManagedExtension.get_Name() |
set_Version(String) | 1 | ManagedExtension.set_Version(String) |
get_Priority() | 1 | ManagedExtension.get_Priority() |
set_Priority(Int32) | 1 | ManagedExtension.set_Priority(Int32) |
set_Description(String) | 1 | ManagedExtension.set_Description(String) |
set_Author(String) | 1 | ManagedExtension.set_Author(String) |
set_AdminPage(String) | 1 | ManagedExtension.set_AdminPage(String) |
get_Enabled() | 1 | ManagedExtension.get_Enabled() |
set_Enabled(Boolean) | 1 | ManagedExtension.set_Enabled(Boolean) |
get_Settings() | 3 | ManagedExtension.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) | 1 | ManagedExtension.set_Name(String) |
get_Version() | 1 | ManagedExtension.get_Version() |
get_Description() | 1 | ManagedExtension.get_Description() |
get_Author() | 1 | ManagedExtension.get_Author() |
get_AdminPage() | 1 | ManagedExtension.get_AdminPage() |
set_Settings(List<ExtensionSettings>) | 1 | ManagedExtension.set_Settings(List<ExtensionSettings>) |
get_ShowSettings() | 1 | ManagedExtension.get_ShowSettings() |
ContainsSetting(String) | 6 | ManagedExtension.ContainsSetting(String) |
.ctor() | 8 | ManagedExtension..ctor() |
get_Help() | 1 | ExtensionSettings.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 |
ManagedExtension | 69 | ManagedExtension |
ExtensionSettings | 228 | ExtensionSettings |
ExtensionManager | 157 | ExtensionManager |
ExtensionParameter | 40 | ExtensionParameter |
FoafPerson | 66 | FoafPerson |
IPublishable | N/A | BlogEngine.Core.IPublishable |
Utils | 247 | BlogEngine.Core.Utils |
Comment | 56 | BlogEngine.Core.Comment |
Search | 155 | BlogEngine.Core.Search |
StateList<T> | 14 | BlogEngine.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
fields | Size of
instance | Full Name |
Name | 4 | FoafPerson.Name |
Email | 4 | FoafPerson.Email |
Homepage | 4 | FoafPerson.Homepage |
Blog | 4 | FoafPerson.Blog |
Rdf | 4 | FoafPerson.Rdf |
Firstname | 4 | FoafPerson.Firstname |
Lastname | 4 | FoafPerson.Lastname |
Title | 4 | FoafPerson.Title |
Birthday | 4 | FoafPerson.Birthday |
Phone | 4 | FoafPerson.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
fields | Size of
instance | Full Name |
FileAccessException | 0 | ExtensionManager.FileAccessException |
ID | 4 | FoafPerson.ID |
Image | 4 | FoafPerson.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).
fields | Size of
instance | Full 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.
fields | Size of
instance | Full Name |
_name | 4 | ManagedExtension._name |
_version | 4 | ManagedExtension._version |
_priority | 4 | ManagedExtension._priority |
_description | 4 | ManagedExtension._description |
_enabled | 1 | ManagedExtension._enabled |
_author | 4 | ManagedExtension._author |
_adminPage | 4 | ManagedExtension._adminPage |
_settings | 4 | ManagedExtension._settings |
_showSettings | 1 | ManagedExtension._showSettings |
_index | 4 | ExtensionSettings._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.
fields | Size of
instance | Full Name |
_extensions | 0 | ExtensionManager._extensions |
_newExtensions | 0 | ExtensionManager._newExtensions |
FileAccessException | 0 | ExtensionManager.FileAccessException |
STRIP_HTML | 0 | BlogEngine.Core.Utils.STRIP_HTML |
REGEX_BETWEEN_TAGS | 0 | BlogEngine.Core.Utils.REGEX_BETWEEN_TAGS |
REGEX_LINE_BREAKS | 0 | BlogEngine.Core.Utils.REGEX_LINE_BREAKS |
_RelativeWebRoot | 0 | BlogEngine.Core.Utils._RelativeWebRoot |
MOBILE_REGEX | 0 | BlogEngine.Core.Utils.MOBILE_REGEX |
mono | 0 | BlogEngine.Core.Utils.mono |
HREF | 0 | BlogEngine.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$"
types | Depth of
inheritance | Full Name |
BusinessBase<TYPE,KEY> | 1 | BlogEngine.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() | 7 | BlogEngine.Core.Referrer.parseReferrers() |
writeBlogRollFile(List<BlogRollItem>) | 20 | BlogEngine.Core.Providers.XmlBlogProvider.writeBlogRollFile(List<BlogRollItem>) |
getReferrersFromFile(FileInfo,DateTime) | 11 | BlogEngine.Core.Providers.XmlBlogProvider.getReferrersFromFile(FileInfo,DateTime) |
writeReferrerFile(List<Referrer>,DateTime) | 20 | BlogEngine.Core.Providers.XmlBlogProvider.writeReferrerFile(List<Referrer>,DateTime) |
addBlogRollParametersToCommand(BlogRollItem,DbProviderFactory,DbCommand) | 28 | BlogEngine.Core.Providers.DbBlogProvider.addBlogRollParametersToCommand(BlogRollItem,DbProviderFactory,DbCommand) |
addReferrersParametersToCommand(Referrer,DbProviderFactory,DbCommand) | 24 | BlogEngine.Core.Providers.DbBlogProvider.addReferrersParametersToCommand(Referrer,DbProviderFactory,DbCommand) |
deleteOldReferrers() | 16 | BlogEngine.Core.Providers.DbBlogProvider.deleteOldReferrers() |
context_BeginRequest(Object,EventArgs) | 11 | BlogEngine.Core.Web.HttpModules.WwwSubDomainModule.context_BeginRequest(Object,EventArgs) |
context_PostReleaseRequestState(Object,EventArgs) | 7 | BlogEngine.Core.Web.HttpModules.CompressionModule.context_PostReleaseRequestState(Object,EventArgs) |
context_BeginRequest(Object,EventArgs) | 7 | BlogEngine.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() | 0 | BlogEngine.Core.BlogSettings.get_ShowDescriptionInPostListForPostsByTagOrCategory() |
set_ShowDescriptionInPostListForPostsByTagOrCategory(Boolean) | 0 | BlogEngine.Core.BlogSettings.set_ShowDescriptionInPostListForPostsByTagOrCategory(Boolean) |
get_DescriptionCharactersForPostsByTagOrCategory() | 0 | BlogEngine.Core.BlogSettings.get_DescriptionCharactersForPostsByTagOrCategory() |
set_DescriptionCharactersForPostsByTagOrCategory(Int32) | 0 | BlogEngine.Core.BlogSettings.set_DescriptionCharactersForPostsByTagOrCategory(Int32) |
get_MinRequiredNonAlphanumericCharacters() | 1 | BlogEngine.Core.Providers.DbMembershipProvider.get_MinRequiredNonAlphanumericCharacters() |
get_PasswordStrengthRegularExpression() | 1 | BlogEngine.Core.Providers.DbMembershipProvider.get_PasswordStrengthRegularExpression() |
get_MinRequiredNonAlphanumericCharacters() | 1 | BlogEngine.Core.Providers.XmlMembershipProvider.get_MinRequiredNonAlphanumericCharacters() |
get_PasswordStrengthRegularExpression() | 1 | BlogEngine.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 )
methods | DepthOfCreateA
"OPTIONAL:System.Exception" | DepthOfCreateA
"OPTIONAL:System.ApplicationException" | DepthOfCreateA
"OPTIONAL:System.SystemException" | Full
Name |
Sum: | 1 | 0 | 0 | |
Average: | 1 | 0 | 0 | |
Minimum: | 1 | 0 | 0 | |
Maximum: | 1 | 0 | 0 | |
Standard
deviation: | 0 | 0 | 0 | |
Variance: | 0 | 0 | 0 | |
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.
fields | Size of
instance | Full 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.
methods | DepthOfCreateA
"OPTIONAL:System.Collections.HashTable" | DepthOfCreateA
"OPTIONAL:System.Collections.ArrayList" | Full
Name |
Sum: | 0 | 23 | |
Average: | 0 | 2.3 | |
Minimum: | 0 | 0 | |
Maximum: | 0 | 4 | |
Standard
deviation: | 0 | 1.1 | |
Variance: | 0 | 1.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
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 |
Utils | 5,41 | 1120 | 247 | - | - | 0 | 0 | - | 117 | 40 | 96 | 181 | 0 | 40 | 6 | 12 | 0 | 1 | BlogEngine.Core |
BusinessBase<TYPE,KEY> | 5,25 | 488 | 118 | - | - | 0,91 | 0,94 | - | 75 | 33 | 38 | 50 | 37 | 9 | 12 | 12 | 6 | 1 | BlogEngine.Core |
Post | 3,73 | 1225 | 261 | - | - | 0,97 | 0,98 | - | 160 | 27 | 51 | 140 | 63 | 29 | 27 | 28 | 0 | 2 | BlogEngine.Core |
BlogSettings | 3,71 | 797 | 64 | - | - | 0,99 | 0,99 | - | 189 | 39 | 35 | 45 | 160 | 4 | 80 | 80 | 0 | 1 | BlogEngine.Core |
ExtensionType | 3,64 | - | - | - | - | - | - | - | - | 11 | 4 | 0 | - | - | - | - | - | - | BlogEngine.Core.DataStore |
Referrer | 2,54 | 266 | 64 | - | - | 0,92 | 0,96 | - | 45 | 10 | 21 | 38 | 19 | 5 | 7 | 8 | 0 | 2 | BlogEngine.Core |
IPublishable | 2,5 | - | - | - | - | - | - | - | - | 15 | 9 | 0 | 14 | 0 | 13 | 0 | - | - | BlogEngine.Core |
Category | 2,25 | 289 | 61 | - | - | 0,86 | 0,9 | - | 44 | 16 | 25 | 49 | 21 | 3 | 9 | 6 | 0 | 2 | BlogEngine.Core |
BlogService | 2,19 | 228 | 90 | - | - | 0 | 0 | - | 44 | 12 | 25 | 50 | 0 | 42 | 2 | 3 | 0 | 1 | BlogEngine.Core.Providers |
ISettingsBehavior | 2,13 | - | - | - | - | - | - | - | - | 6 | 4 | 0 | 2 | 0 | 0 | 0 | - | - | BlogEngine.Core.DataStore |
StateList<T> | 2,05 | 64 | 14 | - | - | 0,6 | 0,75 | - | 10 | 14 | 13 | 11 | 5 | 0 | 1 | 1 | 0 | 2 | BlogEngine.Core |
BlogRollItem | 2,04 | 230 | 58 | - | - | 0,92 | 0,96 | - | 39 | 10 | 21 | 33 | 21 | 3 | 7 | 8 | 0 | 2 | BlogEngine.Core |
Comment | 1,86 | 270 | 56 | - | - | 0,96 | 0,98 | - | 60 | 15 | 22 | 26 | 40 | 12 | 22 | 18 | 0 | 1 | BlogEngine.Core |
SaveAction | 1,84 | - | - | - | - | - | - | - | - | 9 | 4 | 0 | - | - | - | - | - | - | BlogEngine.Core |
AuthorProfile | 1,55 | 357 | 87 | - | - | 0,96 | 0,98 | - | 66 | 9 | 19 | 29 | 43 | 3 | 20 | 18 | 0 | 2 | BlogEngine.Core |
Page | 1,35 | 358 | 86 | - | - | 0,95 | 0,98 | - | 70 | 10 | 29 | 46 | 34 | 9 | 16 | 14 | 0 | 2 | BlogEngine.Core |
ServingEventArgs | 1,24 | 46 | 13 | - | - | 0,73 | 0,81 | - | 10 | 7 | 7 | 3 | 10 | 0 | 4 | 4 | 0 | 2 | BlogEngine.Core |
SettingsBase | 0,97 | 44 | 10 | - | - | 0,52 | 0,58 | - | 9 | 3 | 6 | 5 | 9 | 0 | 3 | 3 | 2 | 1 | BlogEngine.Core.DataStore |
ServingLocation | 0,82 | - | - | - | - | - | - | - | - | 4 | 4 | 0 | - | - | - | - | - | - | BlogEngine.Core |
ServingContentBy | 0,7 | - | - | - | - | - | - | - | - | 2 | 4 | 0 | - | - | - | - | - | - | BlogEngine.Core |
ParameterType | 0,67 | - | - | - | - | - | - | - | - | 3 | 5 | 0 | - | - | - | - | - | - | |
BlogProvider | 0,64 | 3 | 0 | - | - | 0 | 0 | - | 1 | 4 | 15 | 0 | 39 | 0 | 0 | 0 | 2 | 2 | BlogEngine.Core.Providers |
Result | 0,63 | 17 | 2 | - | - | 0,67 | 1 | - | 3 | 2 | 6 | 4 | 3 | 0 | 0 | 2 | 0 | 1 | BlogEngine.Core |
BlogProviderSection | 0,6 | 18 | 3 | - | - | 0 | 0 | - | 4 | 3 | 8 | 0 | 4 | 0 | 2 | 0 | 0 | 3 | BlogEngine.Core.Providers |
ExtensionSettingsBehavior | 0,53 | 18 | 6 | - | - | 0 | 0 | - | 4 | 1 | 7 | 4 | 3 | 0 | 0 | 0 | 0 | 1 | BlogEngine.Core.DataStore |
StringDictionaryBehavior | 0,52 | 109 | 27 | - | - | 0 | 0 | - | 13 | 1 | 20 | 24 | 3 | 1 | 0 | 1 | 0 | 1 | BlogEngine.Core.DataStore |
ExtensionParameter | 0,49 | 158 | 40 | - | - | 0,84 | 0,88 | - | 29 | 3 | 8 | 11 | 23 | 0 | 8 | 8 | 0 | 1 | |
ExtensionSettings | 0,46 | 1018 | 228 | - | - | 0,92 | 0,93 | - | 144 | 3 | 29 | 50 | 54 | 0 | 12 | 12 | 0 | 1 | |
SavedEventArgs | 0,38 | 13 | 4 | - | - | 0,33 | 0,5 | - | 3 | 2 | 4 | 2 | 3 | 0 | 1 | 1 | 0 | 2 | BlogEngine.Core |
MWAPage | 0,36 | 0 | 0 | - | - | 0 | 0 | - | 0 | 3 | 4 | 0 | 0 | 0 | 0 | 8 | - | - | BlogEngine.Core.API.MetaWeblog |
MWAPost | 0,36 | 0 | 0 | - | - | 0 | 0 | - | 0 | 3 | 6 | 0 | 0 | 0 | 0 | 12 | - | - | BlogEngine.Core.API.MetaWeblog |
BlogRollItem+<>c__DisplayClass1 | 0,35 | 9 | 1 | - | - | 0,5 | 1 | - | 2 | 1 | 7 | 3 | 2 | 0 | 0 | 1 | 0 | 1 | BlogEngine.Core |
AuthorProfile+<>c__DisplayClass1 | 0,35 | 10 | 1 | - | - | 0,5 | 1 | - | 2 | 1 | 7 | 4 | 2 | 0 | 0 | 1 | 0 | 1 | BlogEngine.Core |
TrackbackMessage | 0,35 | 89 | 19 | - | - | 0,83 | 0,91 | - | 13 | 2 | 10 | 7 | 12 | 0 | 5 | 5 | 0 | 1 | BlogEngine.Core.Ping |
CompressionModule | 0,33 | 116 | 18 | - | - | 0 | 0 | - | 13 | 3 | 23 | 29 | 4 | 3 | 0 | 2 | 0 | 1 | BlogEngine.Core.Web.HttpModules |
BlogProviderCollection | 0,32 | 24 | 6 | - | - | 0 | 0 | - | 5 | 1 | 11 | 5 | 3 | 0 | 0 | 0 | 0 | 2 | BlogEngine.Core.Providers |
MWAMediaInfo | 0,3 | 0 | 0 | - | - | 0 | 0 | - | 0 | 2 | 3 | 0 | 0 | 0 | 0 | 1 | - | - | BlogEngine.Core.API.MetaWeblog |
MWACategory | 0,3 | 0 | 0 | - | - | 0 | 0 | - | 0 | 2 | 3 | 0 | 0 | 0 | 0 | 5 | - | - | BlogEngine.Core.API.MetaWeblog |
MWABlogInfo | 0,3 | 0 | 0 | - | - | 0 | 0 | - | 0 | 2 | 3 | 0 | 0 | 0 | 0 | 3 | - | - | BlogEngine.Core.API.MetaWeblog |
MWAAuthor | 0,3 | 0 | 0 | - | - | 0 | 0 | - | 0 | 2 | 3 | 0 | 0 | 0 | 0 | 5 | - | - | BlogEngine.Core.API.MetaWeblog |
MWAFault | 0,3 | 0 | 0 | - | - | 0 | 0 | - | 0 | 2 | 3 | 0 | 0 | 0 | 0 | 2 | - | - | BlogEngine.Core.API.MetaWeblog |
SerializableStringDictionary | 0,29 | 81 | 19 | - | - | 0 | 0 | - | 10 | 1 | 14 | 16 | 4 | 0 | 0 | 0 | 0 | 2 | BlogEngine.Core.DataStore |
ExtensionAttribute | 0,29 | 39 | 13 | - | - | 0,54 | 0,65 | - | 6 | 2 | 6 | 0 | 6 | 0 | 4 | 4 | 0 | 2 | BlogEngine.Core.Web.Controls |
ExtensionManager | 0,29 | 641 | 157 | - | - | 0 | 0 | - | 92 | 2 | 38 | 63 | 1 | 24 | 1 | 4 | 0 | 1 | |
WidgetData | 0,28 | 13 | 4 | - | - | 0 | 0 | - | 3 | 1 | 3 | 2 | 3 | 0 | 1 | 1 | 0 | 1 | BlogEngine.Core.DataStore |
CompressionModule+WebResourceFilter | 0,27 | 100 | 21 | - | - | 0,68 | 0,73 | - | 14 | 1 | 26 | 28 | 14 | 0 | 5 | 2 | 0 | 3 | BlogEngine.Core.Web.HttpModules |
Post+<>c__DisplayClasse | 0,26 | 33 | 6 | - | - | 0,5 | 1 | - | 6 | 1 | 12 | 9 | 2 | 0 | 0 | 1 | 0 | 1 | BlogEngine.Core |
Post+<>c__DisplayClass8 | 0,26 | 9 | 1 | - | - | 0,5 | 1 | - | 2 | 1 | 7 | 3 | 2 | 0 | 0 | 1 | 0 | 1 | BlogEngine.Core |
Post+<>c__DisplayClass5 | 0,26 | 9 | 1 | - | - | 0,5 | 1 | - | 2 | 1 | 8 | 3 | 2 | 0 | 0 | 1 | 0 | 1 | BlogEngine.Core |
Post+<>c__DisplayClass11 | 0,26 | 23 | 1 | - | - | 0,5 | 1 | - | 3 | 1 | 8 | 5 | 2 | 0 | 0 | 2 | 0 | 1 | BlogEngine.Core |
Post+<>c__DisplayClassb | 0,26 | 13 | 2 | - | - | 0,5 | 1 | - | 2 | 1 | 8 | 5 | 2 | 0 | 0 | 1 | 0 | 1 | BlogEngine.Core |
MWAMediaObject | 0,26 | 0 | 0 | - | - | 0 | 0 | - | 0 | 2 | 5 | 0 | 0 | 0 | 0 | 3 | - | - | BlogEngine.Core.API.MetaWeblog |
MetaWeblogException | 0,26 | 10 | 3 | - | - | 0 | 0 | - | 2 | 2 | 4 | 1 | 2 | 0 | 1 | 1 | 0 | 2 | BlogEngine.Core.API.MetaWeblog |
OpenSearchHandler+<>c__DisplayClass1 | 0,26 | 14 | 1 | - | - | 0,5 | 1 | - | 2 | 1 | 9 | 6 | 2 | 0 | 0 | 1 | 0 | 1 | BlogEngine.Core.Web.HttpHandlers |
SyndicationFormat | 0,26 | - | - | - | - | - | - | - | - | 2 | 4 | 0 | - | - | - | - | - | - | BlogEngine.Core |
Trackback | 0,25 | 136 | 31 | - | - | 0 | 0 | - | 19 | 1 | 27 | 29 | 0 | 7 | 0 | 2 | 0 | 1 | BlogEngine.Core.Ping |
Pingback | 0,25 | 203 | 47 | - | - | 0 | 0 | - | 21 | 1 | 33 | 38 | 0 | 9 | 0 | 3 | 0 | 1 | BlogEngine.Core.Ping |
ReferrerModule+<>c__DisplayClass3 | 0,23 | 22 | 1 | - | - | 0,5 | 1 | - | 3 | 1 | 7 | 7 | 2 | 0 | 0 | 2 | 0 | 1 | BlogEngine.Core.Web.HttpModules |
Apml+Concept | 0,23 | 12 | 4 | - | - | 0 | 0 | - | 1 | 1 | 5 | 1 | 1 | 0 | 0 | 3 | 0 | 1 | BlogEngine.Core.Web.HttpHandlers |
Utils+<>c__DisplayClass1 | 0,22 | 7 | 1 | - | - | 0,5 | 1 | - | 2 | 1 | 5 | 2 | 2 | 0 | 0 | 1 | 0 | 1 | BlogEngine.Core |
SortedExtension | 0,22 | 12 | 4 | - | - | 0 | 0 | - | 1 | 1 | 4 | 1 | 1 | 0 | 0 | 3 | 0 | 1 | BlogEngine.Core.Web.Controls |
CommentHandlers | 0,22 | 826 | 188 | - | - | 0 | 0 | - | 77 | 1 | 39 | 78 | 0 | 10 | 0 | 2 | 0 | 1 | BlogEngine.Core |
ExtensionSettings | 0,22 | 12 | 4 | - | - | 0 | 0 | - | 1 | 1 | 7 | 6 | 1 | 0 | 0 | 0 | 0 | 2 | BlogEngine.Core.DataStore |
ManagedExtension | 0,22 | 273 | 69 | - | - | 0,83 | 0,87 | - | 40 | 1 | 15 | 21 | 24 | 1 | 9 | 10 | 0 | 1 | |
FoafPerson | 0,22 | 217 | 66 | - | - | 0,07 | 0,11 | - | 3 | 1 | 8 | 14 | 3 | 0 | 0 | 14 | 0 | 1 | |
Role | 0,22 | 34 | 11 | - | - | 0,33 | 0,4 | - | 6 | 1 | 4 | 2 | 6 | 0 | 2 | 2 | 0 | 1 | BlogEngine.Core |
ICustomFilter | 0,22 | - | - | - | - | - | - | - | - | 1 | 3 | 0 | 4 | 0 | 1 | 0 | - | - | BlogEngine.Core |
UrlRewrite+<>c__DisplayClass4 | 0,21 | 11 | 1 | - | - | 0,5 | 1 | - | 2 | 1 | 8 | 5 | 2 | 0 | 0 | 1 | 0 | 1 | BlogEngine.Core.Web.HttpModules |
UrlRewrite+<>c__DisplayClass1 | 0,21 | 45 | 3 | - | - | 0,5 | 1 | - | 4 | 1 | 12 | 11 | 2 | 0 | 0 | 2 | 0 | 1 | BlogEngine.Core.Web.HttpModules |
XMLRPCRequest+<>c__DisplayClass2 | 0,21 | 10 | 1 | - | - | 0,5 | 1 | - | 2 | 1 | 6 | 4 | 2 | 0 | 0 | 1 | 0 | 1 | BlogEngine.Core.API.MetaWeblog |
Search | 0,21 | 783 | 155 | - | - | 0 | 0 | - | 84 | 1 | 58 | 102 | 0 | 26 | 0 | 10 | 0 | 1 | BlogEngine.Core |
SyndicationGenerator | 0,21 | 1583 | 304 | - | - | 0,94 | 0,98 | - | 107 | 1 | 56 | 140 | 11 | 13 | 4 | 8 | 0 | 1 | BlogEngine.Core |
RewriteFormHtmlTextWriter | 0,2 | 62 | 14 | - | - | 0 | 0 | - | 5 | 1 | 13 | 14 | 3 | 0 | 0 | 0 | 0 | 4 | BlogEngine.Core.Web.Controls |
XMLRPCRequest | 0,2 | 1122 | 188 | - | - | 0,9 | 0,95 | - | 86 | 1 | 43 | 78 | 19 | 0 | 12 | 13 | 0 | 1 | BlogEngine.Core.API.MetaWeblog |
XMLRPCResponse | 0,2 | 2006 | 565 | - | - | 0,92 | 0,94 | - | 102 | 1 | 26 | 68 | 43 | 0 | 13 | 14 | 0 | 1 | BlogEngine.Core.API.MetaWeblog |
Search+<>c__DisplayClassa | 0,2 | 10 | 1 | - | - | 0,5 | 1 | - | 2 | 1 | 6 | 2 | 2 | 0 | 0 | 1 | 0 | 1 | BlogEngine.Core |
Entry | 0,2 | 0 | 0 | - | - | 0 | 0 | - | 0 | 1 | 4 | 0 | 0 | 0 | 0 | 3 | - | - | BlogEngine.Core |
DbBlogProvider+<>c__DisplayClass5 | 0,19 | 11 | 1 | - | - | 0,5 | 1 | - | 2 | 1 | 7 | 3 | 2 | 0 | 0 | 1 | 0 | 1 | BlogEngine.Core.Providers |
DbBlogProvider+<>c__DisplayClass1 | 0,19 | 9 | 1 | - | - | 0,5 | 1 | - | 2 | 1 | 7 | 3 | 2 | 0 | 0 | 1 | 0 | 1 | BlogEngine.Core.Providers |
XmlBlogProvider+<>c__DisplayClassb | 0,18 | 16 | 1 | - | - | 0,5 | 1 | - | 2 | 1 | 7 | 4 | 2 | 0 | 0 | 1 | 0 | 1 | BlogEngine.Core.Providers |
XmlBlogProvider+<>c__DisplayClass8 | 0,18 | 16 | 1 | - | - | 0,5 | 1 | - | 2 | 1 | 7 | 4 | 2 | 0 | 0 | 1 | 0 | 1 | BlogEngine.Core.Providers |
XmlBlogProvider+<>c__DisplayClass5 | 0,18 | 11 | 1 | - | - | 0,5 | 1 | - | 2 | 1 | 7 | 3 | 2 | 0 | 0 | 1 | 0 | 1 | BlogEngine.Core.Providers |
XmlBlogProvider+<>c__DisplayClass1 | 0,18 | 9 | 1 | - | - | 0,5 | 1 | - | 2 | 1 | 7 | 3 | 2 | 0 | 0 | 1 | 0 | 1 | BlogEngine.Core.Providers |
OpmlHandler | 0,15 | 107 | 24 | - | - | 0 | 0 | - | 9 | 0 | 16 | 25 | 3 | 0 | 1 | 0 | 0 | 1 | BlogEngine.Core.Web.HttpHandlers |
XmlBlogProvider | 0,15 | 3081 | 557 | - | - | 0 | 0 | - | 251 | 0 | 84 | 306 | 45 | 0 | 1 | 0 | 0 | 3 | BlogEngine.Core.Providers |
TrackbackHandler | 0,15 | 394 | 70 | - | - | 0,89 | 0,94 | - | 44 | 0 | 36 | 67 | 7 | 12 | 1 | 6 | 0 | 1 | BlogEngine.Core.Web.HttpHandlers |
ImageHandler | 0,15 | 177 | 29 | - | - | 0 | 0 | - | 21 | 0 | 26 | 39 | 3 | 9 | 1 | 3 | 0 | 1 | BlogEngine.Core.Web.HttpHandlers |
RsdHandler | 0,15 | 124 | 29 | - | - | 0 | 0 | - | 7 | 0 | 17 | 27 | 3 | 0 | 1 | 0 | 0 | 1 | BlogEngine.Core.Web.HttpHandlers |
MetaWeblogHandler | 0,15 | 1617 | 357 | - | - | 0 | 0 | - | 117 | 0 | 53 | 185 | 20 | 0 | 1 | 0 | 0 | 1 | BlogEngine.Core.API.MetaWeblog |
PingService | 0,15 | 101 | 27 | - | - | 0 | 0 | - | 10 | 0 | 21 | 22 | 0 | 3 | 0 | 0 | 0 | 1 | BlogEngine.Core.Ping |
PingbackHandler | 0,15 | 549 | 110 | - | - | 0,92 | 0,96 | - | 49 | 0 | 44 | 83 | 8 | 16 | 1 | 10 | 0 | 1 | BlogEngine.Core.Web.HttpHandlers |
DbBlogProvider | 0,15 | 6908 | 1276 | - | - | 0,25 | 0,25 | - | 432 | 0 | 62 | 258 | 47 | 0 | 0 | 3 | 0 | 3 | BlogEngine.Core.Providers |
XmlMembershipProvider | 0,15 | 832 | 184 | - | - | 0,79 | 0,81 | - | 91 | 0 | 41 | 81 | 33 | 0 | 11 | 3 | 0 | 3 | BlogEngine.Core.Providers |
CommentViewBase | 0,15 | 543 | 60 | - | - | 0,85 | 0,92 | - | 35 | 0 | 36 | 74 | 12 | 1 | 6 | 6 | 0 | 4 | BlogEngine.Core.Web.Controls |
PageSiteMap | 0,15 | 206 | 34 | - | - | 0 | 0 | - | 16 | 0 | 18 | 31 | 5 | 0 | 0 | 0 | 0 | 3 | BlogEngine.Core.Web.Controls |
SyndicationHandler | 0,15 | 552 | 113 | - | - | 0 | 0 | - | 54 | 0 | 44 | 75 | 3 | 11 | 1 | 3 | 0 | 1 | BlogEngine.Core.Web.HttpHandlers |
BlogMLExportHandler | 0,15 | 833 | 188 | - | - | 0 | 0 | - | 54 | 0 | 34 | 73 | 3 | 16 | 1 | 0 | 0 | 1 | BlogEngine.Core.Web.HttpHandlers |
WwwSubDomainModule | 0,15 | 138 | 25 | - | - | 0 | 0 | - | 16 | 0 | 18 | 31 | 4 | 4 | 0 | 1 | 0 | 1 | BlogEngine.Core.Web.HttpModules |
Sioc | 0,15 | 1263 | 248 | - | - | 0 | 0 | - | 76 | 0 | 50 | 98 | 15 | 9 | 2 | 1 | 0 | 1 | BlogEngine.Core.Web.HttpHandlers |
JavaScriptHandler | 0,15 | 516 | 106 | - | - | 0 | 0 | - | 31 | 0 | 45 | 83 | 3 | 5 | 1 | 0 | 0 | 1 | BlogEngine.Core.Web.HttpHandlers |
FileHandler | 0,15 | 163 | 27 | - | - | 0 | 0 | - | 21 | 0 | 23 | 34 | 3 | 10 | 1 | 3 | 0 | 1 | BlogEngine.Core.Web.HttpHandlers |
DbMembershipProvider | 0,15 | 1255 | 250 | - | - | 0,79 | 0,81 | - | 103 | 0 | 32 | 59 | 31 | 0 | 11 | 5 | 0 | 3 | BlogEngine.Core.Providers |
DbRoleProvider | 0,15 | 1590 | 263 | - | - | 0,39 | 0,42 | - | 95 | 0 | 26 | 46 | 14 | 0 | 1 | 4 | 0 | 3 | BlogEngine.Core.Providers |
PostViewBase | 0,15 | 703 | 97 | - | - | 0,91 | 0,95 | - | 50 | 0 | 53 | 97 | 21 | 1 | 10 | 6 | 0 | 4 | BlogEngine.Core.Web.Controls |
SiteMap | 0,15 | 167 | 34 | - | - | 0 | 0 | - | 12 | 0 | 21 | 28 | 3 | 0 | 1 | 0 | 0 | 1 | BlogEngine.Core.Web.HttpHandlers |
Apml | 0,15 | 441 | 106 | - | - | 0 | 0 | - | 33 | 0 | 34 | 60 | 8 | 2 | 1 | 1 | 0 | 1 | BlogEngine.Core.Web.HttpHandlers |
Manager | 0,15 | 136 | 30 | - | - | 0 | 0 | - | 16 | 0 | 26 | 33 | 0 | 5 | 0 | 2 | 0 | 1 | BlogEngine.Core.Ping |
CssHandler | 0,15 | 369 | 71 | - | - | 0 | 0 | - | 33 | 0 | 38 | 66 | 3 | 13 | 1 | 3 | 0 | 1 | BlogEngine.Core.Web.HttpHandlers |
OpenSearchHandler | 0,15 | 151 | 31 | - | - | 0 | 0 | - | 5 | 0 | 24 | 36 | 3 | 0 | 1 | 0 | 0 | 1 | BlogEngine.Core.Web.HttpHandlers |
UrlRewrite | 0,15 | 634 | 100 | - | - | 0 | 0 | - | 37 | 0 | 41 | 78 | 4 | 8 | 0 | 3 | 0 | 1 | BlogEngine.Core.Web.HttpModules |
XmlRoleProvider | 0,15 | 830 | 173 | - | - | 0,71 | 0,75 | - | 103 | 0 | 37 | 69 | 17 | 1 | 1 | 4 | 0 | 3 | BlogEngine.Core.Providers |
RatingHandler | 0,15 | 131 | 26 | - | - | 0 | 0 | - | 10 | 0 | 15 | 26 | 3 | 2 | 1 | 0 | 0 | 1 | BlogEngine.Core.Web.HttpHandlers |
XMLDocumentBehavior | 0,15 | 104 | 27 | - | - | 0 | 0 | - | 11 | 0 | 20 | 22 | 3 | 1 | 0 | 1 | 0 | 1 | BlogEngine.Core.DataStore |
Foaf | 0,15 | 562 | 117 | - | - | 0 | 0 | - | 45 | 0 | 37 | 80 | 7 | 2 | 2 | 1 | 0 | 1 | BlogEngine.Core.Web.HttpHandlers |
WidgetSettings | 0,15 | 12 | 4 | - | - | 0 | 0 | - | 1 | 0 | 7 | 6 | 1 | 0 | 0 | 0 | 0 | 2 | BlogEngine.Core.DataStore |
BlogBasePage | 0,15 | 766 | 117 | - | - | 0,89 | 0,94 | - | 40 | 0 | 49 | 96 | 18 | 0 | 0 | 1 | 0 | 4 | BlogEngine.Core.Web.Controls |
ReferrerModule | 0,15 | 239 | 40 | - | - | 0 | 0 | - | 25 | 0 | 33 | 57 | 4 | 8 | 0 | 3 | 0 | 1 | BlogEngine.Core.Web.HttpModules |