NDepend Report
Application name: AspSQLProvider
This report has been built on: 06/09/2009 05:24:12
Application Metrics
Assemblies Metrics
VisualNDepend View
Assemblies Abstracness vs. Instability
Assemblies Dependencies
Assemblies Dependencies Diagram
Assemblies build order
NDepend information and warnings
CQL Queries and Constraints
Types Metrics
Application Metrics
Number of assemblies: 1
Number of types: 7
Number of classes: 6
Number of abstract classes: 0
Number of interfaces: 0
Number of value types: 0
Number of exception classes: 0
Number of attribute classes: 0
Number of delegate classes: 0
Number of enumerations classes: 1
Number of generic type definitions: 0
Number of generic method definitions: 7
Number of IL instructions: 7663
Percentage of public types: 57,14%
Percentage of public methods: 51,43%
Percentage of classes with at least one public field: 0%
| Stat |
# Occurrences |
Avg |
StdDev |
Max |
|
Properties on Interfaces
|
0 Interfaces
|
0 |
0 |
-1 properties on
|
|
Methods on Interfaces
|
0 Interfaces
|
0 |
0 |
-1 methods on
|
|
Arguments on Methods on Interfaces
|
0 Methods
|
0 |
0 |
-1 arguments on
|
|
Public Properties on Classes
|
6 Classes
|
2,17 |
3,98 |
11 public properties on NauckIT.PostgreSQLProvider.PgMembershipProvider
|
|
Public Methods on Classes
|
6 Classes
|
12 |
10,2 |
30 public methods on NauckIT.PostgreSQLProvider.PgMembershipProvider
|
|
Arguments on Public Methods on Classes
|
72 Methods
|
1,81 |
1,78 |
8 arguments on NauckIT.PostgreSQLProvider.PgMembershipProvider.CreateUser(String,String,String,String,String,Boolean,Object,MembershipCreateStatus&)
|
|
IL Instructions in non-abstract Methods
|
140 Methods
|
54,74 |
81,92 |
394 IL instructions in NauckIT.PostgreSQLProvider.PgMembershipProvider.UpdateFailureCount(String,PgMembershipProvider+FailureType)
|
|
Cyclomatic complexity on non abstract Methods
|
140 Methods
|
5,51 |
6,86 |
CC = 32 for NauckIT.PostgreSQLProvider.PgMembershipProvider.UpdateFailureCount(String,PgMembershipProvider+FailureType)
|
Assemblies Metrics
VisualNDepend View
Assemblies Abstracness vs. Instability
Assemblies Dependencies
Assemblies Dependencies Diagram
Blue : Assemblies of your application.
Yellow : Framework assemblies referenced by assemblies of your application.
Assemblies build order
NauckIT.PostgreSQLProvider
NDepend information and warnings
06/09/2009 05:23:33 Begin analysis with NDepend v2.12.0.3027
06/09/2009 05:23:33 Retrieve dependencies of your application.
Compare with most recent analysis (analysis made at 2009 May - 19 Tuesday 11:32)
Assemblies loaded from {C:\Windows\Microsoft.NET\Framework\v2.0.50727}
System.dll v2.0.0.0
mscorlib.dll v2.0.0.0
System.Xml.dll v2.0.0.0
System.Configuration.dll v2.0.0.0
System.Data.dll v2.0.0.0
System.Web.dll v2.0.0.0
Assemblies loaded from {D:\Build\Projects\AspSQLProvider\SCM\Build}
NauckIT.PostgreSQLProvider.dll v1.3.8.137
Npgsql.dll v2.0.5.0
8 source files parsed ; all source files found ; all source files in-sync with PDB
0 CQL constraint has been extracted from code.
No dependency cycle detected in assemblies referencement graph.
06.09.2009 05:23:50 Analyse dependencies of your application.
06.09.2009 05:23:51 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}
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} All CQL queries compile and all CQL contraints are 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} All CQL queries compile and all CQL contraints are satisfied.
{Naming Conventions} Some CQL constraints are not satisfied.
{Naming Conventions \ Name too long} Some CQL constraints are not satisfied.
{.NET Framework Usage} All CQL queries compile and all CQL contraints are satisfied.
{.NET Framework Usage \ System} All CQL queries compile and all CQL contraints are satisfied.
{.NET Framework Usage \ System.Collection} All CQL queries compile and all CQL contraints are 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} All CQL queries compile and all CQL contraints are satisfied.
WARNING: The following CQL constraint is not satisfied. 10 methods on 329 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 |
| Initialize(String,NameValueCollection) |
35 |
199 |
11 |
11 |
4 |
2 |
4 |
1 |
NauckIT.PostgreSQLProvider.PgMembershipProvider.Initialize(String,NameValueCollection) |
| CreateUser(String,String,String,String,String,Boolean,Object,MembershipCreateStatus&) |
52 |
277 |
12 |
15 |
3 |
8 |
7 |
1 |
NauckIT.PostgreSQLProvider.PgMembershipProvider.CreateUser(String,String,String,String,String,Boolean,Object,MembershipCreateStatus&) |
| FindUsersByEmail(String,Int32,Int32,Int32&) |
40 |
202 |
9 |
21 |
4 |
4 |
11 |
1 |
NauckIT.PostgreSQLProvider.PgMembershipProvider.FindUsersByEmail(String,Int32,Int32,Int32&) |
| FindUsersByName(String,Int32,Int32,Int32&) |
38 |
197 |
8 |
20 |
4 |
4 |
11 |
1 |
NauckIT.PostgreSQLProvider.PgMembershipProvider.FindUsersByName(String,Int32,Int32,Int32&) |
| GetAllUsers(Int32,Int32,Int32&) |
34 |
171 |
8 |
20 |
4 |
3 |
11 |
1 |
NauckIT.PostgreSQLProvider.PgMembershipProvider.GetAllUsers(Int32,Int32,Int32&) |
| GetPassword(String,String) |
32 |
152 |
12 |
16 |
3 |
2 |
9 |
1 |
NauckIT.PostgreSQLProvider.PgMembershipProvider.GetPassword(String,String) |
| ResetPassword(String,String) |
50 |
253 |
15 |
24 |
3 |
2 |
12 |
1 |
NauckIT.PostgreSQLProvider.PgMembershipProvider.ResetPassword(String,String) |
| ValidateUser(String,String) |
38 |
191 |
9 |
17 |
5 |
2 |
11 |
1 |
NauckIT.PostgreSQLProvider.PgMembershipProvider.ValidateUser(String,String) |
| GetUserFromReader(NpgsqlDataReader) |
13 |
124 |
11 |
21 |
1 |
1 |
12 |
1 |
NauckIT.PostgreSQLProvider.PgMembershipProvider.GetUserFromReader(NpgsqlDataReader) |
| UpdateFailureCount(String,PgMembershipProvider+FailureType) |
59 |
394 |
22 |
32 |
4 |
2 |
16 |
1 |
NauckIT.PostgreSQLProvider.PgMembershipProvider.UpdateFailureCount(String,PgMembershipProvider+FailureType) |
| Sum: |
391 |
2160 |
117 |
197 |
35 |
30 |
104 |
10 |
|
| Average: |
39.1 |
216 |
11.7 |
19.7 |
3.5 |
3 |
10.4 |
1 |
|
| Minimum: |
13 |
124 |
8 |
11 |
1 |
1 |
4 |
1 |
|
| Maximum: |
59 |
394 |
22 |
32 |
5 |
8 |
16 |
1 |
|
| Standard deviation: |
12.078 |
72.684 |
4.0012 |
5.4046 |
1.0247 |
1.8974 |
3.0397 |
0 |
|
| Variance: |
145.89 |
5283 |
16.01 |
29.21 |
1.05 |
3.6 |
9.24 |
0 |
|
WARNING: The following CQL constraint is not satisfied. 10 methods on 329 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 |
| SetPropertyValues(SettingsContext,SettingsPropertyValueCollection) |
63 |
NauckIT.PostgreSQLProvider.PgProfileProvider.SetPropertyValues(SettingsContext,SettingsPropertyValueCollection) |
| UpdateFailureCount(String,PgMembershipProvider+FailureType) |
59 |
NauckIT.PostgreSQLProvider.PgMembershipProvider.UpdateFailureCount(String,PgMembershipProvider+FailureType) |
| GetSessionStoreItem(Boolean,HttpContext,String,Boolean&,TimeSpan&,Object&,SessionStateActions&) |
57 |
NauckIT.PostgreSQLProvider.PgSessionStateStoreProvider.GetSessionStoreItem(Boolean,HttpContext,String,Boolean&,TimeSpan&,Object&,SessionStateActions&) |
| CreateUser(String,String,String,String,String,Boolean,Object,MembershipCreateStatus&) |
52 |
NauckIT.PostgreSQLProvider.PgMembershipProvider.CreateUser(String,String,String,String,String,Boolean,Object,MembershipCreateStatus&) |
| ResetPassword(String,String) |
50 |
NauckIT.PostgreSQLProvider.PgMembershipProvider.ResetPassword(String,String) |
| SetAndReleaseItemExclusive(HttpContext,String,SessionStateStoreData,Object,Boolean) |
48 |
NauckIT.PostgreSQLProvider.PgSessionStateStoreProvider.SetAndReleaseItemExclusive(HttpContext,String,SessionStateStoreData,Object,Boolean) |
| InvokeExpireCallbackAndDeleteSession() |
48 |
NauckIT.PostgreSQLProvider.PgSessionStateStoreProvider.InvokeExpireCallbackAndDeleteSession() |
| GetPropertyValues(SettingsContext,SettingsPropertyCollection) |
44 |
NauckIT.PostgreSQLProvider.PgProfileProvider.GetPropertyValues(SettingsContext,SettingsPropertyCollection) |
| RemoveUsersFromRoles(String[],String[]) |
43 |
NauckIT.PostgreSQLProvider.PgRoleProvider.RemoveUsersFromRoles(String[],String[]) |
| AddUsersToRoles(String[],String[]) |
43 |
NauckIT.PostgreSQLProvider.PgRoleProvider.AddUsersToRoles(String[],String[]) |
| Sum: |
507 |
|
| Average: |
50.7 |
|
| Minimum: |
43 |
|
| Maximum: |
63 |
|
| Standard deviation: |
6.634 |
|
| Variance: |
44.01 |
|
WARNING: The following CQL constraint is not satisfied. 10 methods on 329 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 |
| UpdateFailureCount(String,PgMembershipProvider+FailureType) |
394 |
NauckIT.PostgreSQLProvider.PgMembershipProvider.UpdateFailureCount(String,PgMembershipProvider+FailureType) |
| SetPropertyValues(SettingsContext,SettingsPropertyValueCollection) |
361 |
NauckIT.PostgreSQLProvider.PgProfileProvider.SetPropertyValues(SettingsContext,SettingsPropertyValueCollection) |
| GetSessionStoreItem(Boolean,HttpContext,String,Boolean&,TimeSpan&,Object&,SessionStateActions&) |
292 |
NauckIT.PostgreSQLProvider.PgSessionStateStoreProvider.GetSessionStoreItem(Boolean,HttpContext,String,Boolean&,TimeSpan&,Object&,SessionStateActions&) |
| SetAndReleaseItemExclusive(HttpContext,String,SessionStateStoreData,Object,Boolean) |
286 |
NauckIT.PostgreSQLProvider.PgSessionStateStoreProvider.SetAndReleaseItemExclusive(HttpContext,String,SessionStateStoreData,Object,Boolean) |
| CreateUser(String,String,String,String,String,Boolean,Object,MembershipCreateStatus&) |
277 |
NauckIT.PostgreSQLProvider.PgMembershipProvider.CreateUser(String,String,String,String,String,Boolean,Object,MembershipCreateStatus&) |
| ResetPassword(String,String) |
253 |
NauckIT.PostgreSQLProvider.PgMembershipProvider.ResetPassword(String,String) |
| RemoveUsersFromRoles(String[],String[]) |
245 |
NauckIT.PostgreSQLProvider.PgRoleProvider.RemoveUsersFromRoles(String[],String[]) |
| AddUsersToRoles(String[],String[]) |
245 |
NauckIT.PostgreSQLProvider.PgRoleProvider.AddUsersToRoles(String[],String[]) |
| GetPropertyValues(SettingsContext,SettingsPropertyCollection) |
238 |
NauckIT.PostgreSQLProvider.PgProfileProvider.GetPropertyValues(SettingsContext,SettingsPropertyCollection) |
| InvokeExpireCallbackAndDeleteSession() |
228 |
NauckIT.PostgreSQLProvider.PgSessionStateStoreProvider.InvokeExpireCallbackAndDeleteSession() |
| Sum: |
2819 |
|
| Average: |
281.9 |
|
| Minimum: |
228 |
|
| Maximum: |
394 |
|
| Standard deviation: |
52.304 |
|
| Variance: |
2735.7 |
|
WARNING: The following CQL constraint is not satisfied. 1 methods on 329 tested match the condition. --> Group {Code Quality}
// <Name>Methods too complex (CyclomaticComplexity)</Name>
WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE CyclomaticComplexity > 20 ORDER BY CyclomaticComplexity DESC
// METHODS WHERE CyclomaticComplexity > 15 are hard to understand and maintain.
// METHODS WHERE CyclomaticComplexity > 30 are extremely complex and should be split
// in smaller methods (except if they are automatically generated by a tool).
// See the definition of the CyclomaticComplexity metric here http://www.ndepend.com/Metrics.aspx#CC
| methods |
Cyclomatic Complexity (CC) |
Full Name |
| UpdateFailureCount(String,PgMembershipProvider+FailureType) |
22 |
NauckIT.PostgreSQLProvider.PgMembershipProvider.UpdateFailureCount(String,PgMembershipProvider+FailureType) |
| Sum: |
22 |
|
| Average: |
22 |
|
| Minimum: |
22 |
|
| Maximum: |
22 |
|
| Standard deviation: |
0 |
|
| Variance: |
0 |
|
WARNING: The following CQL constraint is not satisfied. 1 methods on 329 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 |
| ValidateUser(String,String) |
5 |
NauckIT.PostgreSQLProvider.PgMembershipProvider.ValidateUser(String,String) |
| Sum: |
5 |
|
| Average: |
5 |
|
| Minimum: |
5 |
|
| Maximum: |
5 |
|
| Standard deviation: |
0 |
|
| Variance: |
0 |
|
WARNING: The following CQL constraint is not satisfied. 10 methods on 329 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 |
| UpdateUser(MembershipUser) |
0 |
16 |
NauckIT.PostgreSQLProvider.PgMembershipProvider.UpdateUser(MembershipUser) |
| GetAllRoles() |
0 |
16 |
NauckIT.PostgreSQLProvider.PgRoleProvider.GetAllRoles() |
| UnlockUser(String) |
0 |
19 |
NauckIT.PostgreSQLProvider.PgMembershipProvider.UnlockUser(String) |
| CreateProfileForUser(String,Boolean) |
0 |
19 |
NauckIT.PostgreSQLProvider.PgProfileProvider.CreateProfileForUser(String,Boolean) |
| GetUserNameByEmail(String) |
0 |
15 |
NauckIT.PostgreSQLProvider.PgMembershipProvider.GetUserNameByEmail(String) |
| GetPropertyValues(SettingsContext,SettingsPropertyCollection) |
0 |
44 |
NauckIT.PostgreSQLProvider.PgProfileProvider.GetPropertyValues(SettingsContext,SettingsPropertyCollection) |
| ProfileExists(String) |
0 |
18 |
NauckIT.PostgreSQLProvider.PgProfileProvider.ProfileExists(String) |
| CreateRole(String) |
0 |
15 |
NauckIT.PostgreSQLProvider.PgRoleProvider.CreateRole(String) |
| FindUsersInRole(String,String) |
0 |
19 |
NauckIT.PostgreSQLProvider.PgRoleProvider.FindUsersInRole(String,String) |
| EncodePassword(String) |
0 |
12 |
NauckIT.PostgreSQLProvider.PgMembershipProvider.EncodePassword(String) |
| Sum: |
0 |
193 |
|
| Average: |
0 |
19.3 |
|
| Minimum: |
0 |
12 |
|
| Maximum: |
0 |
44 |
|
| Standard deviation: |
0 |
8.5094 |
|
| Variance: |
0 |
72.41 |
|
WARNING: The following CQL constraint is not satisfied. 5 methods on 329 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 |
| CreateUser(String,String,String,String,String,Boolean,Object,MembershipCreateStatus&) |
8 |
NauckIT.PostgreSQLProvider.PgMembershipProvider.CreateUser(String,String,String,String,String,Boolean,Object,MembershipCreateStatus&) |
| GetSessionStoreItem(Boolean,HttpContext,String,Boolean&,TimeSpan&,Object&,SessionStateActions&) |
7 |
NauckIT.PostgreSQLProvider.PgSessionStateStoreProvider.GetSessionStoreItem(Boolean,HttpContext,String,Boolean&,TimeSpan&,Object&,SessionStateActions&) |
| GetItem(HttpContext,String,Boolean&,TimeSpan&,Object&,SessionStateActions&) |
6 |
NauckIT.PostgreSQLProvider.PgSessionStateStoreProvider.GetItem(HttpContext,String,Boolean&,TimeSpan&,Object&,SessionStateActions&) |
| GetItemExclusive(HttpContext,String,Boolean&,TimeSpan&,Object&,SessionStateActions&) |
6 |
NauckIT.PostgreSQLProvider.PgSessionStateStoreProvider.GetItemExclusive(HttpContext,String,Boolean&,TimeSpan&,Object&,SessionStateActions&) |
| FindInactiveProfilesByUserName(ProfileAuthenticationOption,String,DateTime,Int32,Int32,Int32&) |
6 |
NauckIT.PostgreSQLProvider.PgProfileProvider.FindInactiveProfilesByUserName(ProfileAuthenticationOption,String,DateTime,Int32,Int32,Int32&) |
| Sum: |
33 |
|
| Average: |
6.6 |
|
| Minimum: |
6 |
|
| Maximum: |
8 |
|
| Standard deviation: |
0.800002 |
|
| Variance: |
0.6400032 |
|
WARNING: The following CQL constraint is not satisfied. 5 methods on 329 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 |
| AddUsersToRoles(String[],String[]) |
24 |
NauckIT.PostgreSQLProvider.PgRoleProvider.AddUsersToRoles(String[],String[]) |
| RemoveUsersFromRoles(String[],String[]) |
24 |
NauckIT.PostgreSQLProvider.PgRoleProvider.RemoveUsersFromRoles(String[],String[]) |
| InvokeExpireCallbackAndDeleteSession() |
16 |
NauckIT.PostgreSQLProvider.PgSessionStateStoreProvider.InvokeExpireCallbackAndDeleteSession() |
| GetSessionStoreItem(Boolean,HttpContext,String,Boolean&,TimeSpan&,Object&,SessionStateActions&) |
16 |
NauckIT.PostgreSQLProvider.PgSessionStateStoreProvider.GetSessionStoreItem(Boolean,HttpContext,String,Boolean&,TimeSpan&,Object&,SessionStateActions&) |
| UpdateFailureCount(String,PgMembershipProvider+FailureType) |
16 |
NauckIT.PostgreSQLProvider.PgMembershipProvider.UpdateFailureCount(String,PgMembershipProvider+FailureType) |
| Sum: |
96 |
|
| Average: |
19.2 |
|
| Minimum: |
16 |
|
| Maximum: |
24 |
|
| Standard deviation: |
3.9192 |
|
| Variance: |
15.36 |
|
WARNING: The following CQL constraint is not satisfied. 2 types on 142 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 |
| Resources |
41 |
NauckIT.PostgreSQLProvider.Properties.Resources |
| PgMembershipProvider |
38 |
NauckIT.PostgreSQLProvider.PgMembershipProvider |
| Sum: |
79 |
|
| Average: |
39.5 |
|
| Minimum: |
38 |
|
| Maximum: |
41 |
|
| Standard deviation: |
1.5 |
|
| Variance: |
2.25 |
|
WARNING: The following CQL constraint is not satisfied. 1 types on 142 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 |
| PgMembershipProvider |
0.8603239 |
15 |
38 |
NauckIT.PostgreSQLProvider.PgMembershipProvider |
| Sum: |
0.8603239 |
15 |
38 |
|
| Average: |
0.8603239 |
15 |
38 |
|
| Minimum: |
0.8603239 |
15 |
38 |
|
| Maximum: |
0.8603239 |
15 |
38 |
|
| Standard deviation: |
0 |
0 |
0 |
|
| Variance: |
0 |
0 |
0 |
|
WARNING: The following CQL constraint is not satisfied. 2 types on 7 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 |
| PgSessionStateStoreProvider |
63 |
NauckIT.PostgreSQLProvider.PgSessionStateStoreProvider |
| PgMembershipProvider |
57 |
NauckIT.PostgreSQLProvider.PgMembershipProvider |
| Sum: |
120 |
|
| Average: |
60 |
|
| Minimum: |
57 |
|
| Maximum: |
63 |
|
| Standard deviation: |
3 |
|
| Variance: |
9 |
|
WARNING: The following CQL constraint is not satisfied. 1 types on 142 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 |
| Resources |
0 |
0 |
NauckIT.PostgreSQLProvider.Properties.Resources |
| 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. 5 types on 142 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 |
| Resources |
0 |
44 |
NauckIT.PostgreSQLProvider.Properties.Resources |
| PgProfileProvider |
0 |
184 |
NauckIT.PostgreSQLProvider.PgProfileProvider |
| PgRoleProvider |
0 |
249 |
NauckIT.PostgreSQLProvider.PgRoleProvider |
| PgSessionStateStoreProvider |
0 |
338 |
NauckIT.PostgreSQLProvider.PgSessionStateStoreProvider |
| PgMembershipProvider |
0 |
633 |
NauckIT.PostgreSQLProvider.PgMembershipProvider |
| Sum: |
0 |
1448 |
|
| Average: |
0 |
289.6 |
|
| Minimum: |
0 |
44 |
|
| Maximum: |
0 |
633 |
|
| Standard deviation: |
0 |
196.66 |
|
| Variance: |
0 |
38677 |
|
WARNING: The following CQL constraint is not satisfied. 2 types on 142 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 |
| SerializationHelper |
0 |
0 |
1 |
NauckIT.PostgreSQLProvider.SerializationHelper |
| Resources |
0 |
0 |
1 |
NauckIT.PostgreSQLProvider.Properties.Resources |
| Sum: |
0 |
0 |
2 |
|
| Average: |
0 |
0 |
1 |
|
| Minimum: |
0 |
0 |
1 |
|
| Maximum: |
0 |
0 |
1 |
|
| Standard deviation: |
0 |
0 |
0 |
|
| Variance: |
0 |
0 |
0 |
|
WARNING: The following CQL constraint is not satisfied. 1 namespaces on 35 tested match the condition. --> Group {Design}
// <Name>Avoid namespaces with few types</Name>
WARN IF Count > 0 IN SELECT TOP 10 NAMESPACES WHERE NbTypes < 5 ORDER BY NbTypes ASC
// Make sure that there is a logical organization to each of your namespaces,
// and that there is a valid reason for putting types in a sparsely populated
// namespace. Namespaces should contain types that are used together in most
// scenarios. When their applications are mutually exclusive, types should be
// located in separate namespaces
| namespaces |
# Types |
Full Name |
| NauckIT.PostgreSQLProvider.Properties |
1 |
NauckIT.PostgreSQLProvider.Properties |
| Sum: |
1 |
|
| Average: |
1 |
|
| Minimum: |
1 |
|
| Maximum: |
1 |
|
| Standard deviation: |
0 |
|
| Variance: |
0 |
|
WARNING: The following CQL constraint is not satisfied. 1 assemblies on 8 tested match the condition. --> Group {Design}
// <Name>Assemblies with poor cohesion (RelationalCohesion)</Name>
WARN IF Count > 0 IN SELECT TOP 10 ASSEMBLIES WHERE RelationalCohesion < 1.5 OR RelationalCohesion > 4.0
// As classes inside an assembly should be strongly related,
// the cohesion should be high. On the other hand, a value which is too high may
// indicate over-coupling. A good range for RelationalCohesion is 1.5 to 4.0.
// See the definition of the RelationalCohesion metric here http://www.ndepend.com/Metrics.aspx#RelationalCohesion
| assemblies |
Relational cohesion |
Full Name |
| NauckIT.PostgreSQLProvider |
1.4286 |
NauckIT.PostgreSQLProvider |
| Sum: |
1.4286 |
|
| Average: |
1.4286 |
|
| Minimum: |
1.4286 |
|
| Maximum: |
1.4286 |
|
| Standard deviation: |
0 |
|
| Variance: |
0 |
|
WARNING: The following CQL constraint is not satisfied. 31 methods on 329 tested match the condition. --> Group {Design \ Performance}
// <Name>Boxing/unboxing should be avoided (Method)</Name>
WARN IF Percentage > 5 IN SELECT METHODS WHERE IsUsingBoxing OR IsUsingUnboxing
// Thanks to generics, boxing and unboxing should be rare.
| methods |
# lines of code (LOC) |
Full Name |
| Sum: |
909 |
|
| Average: |
29.323 |
|
| Minimum: |
3 |
|
| Maximum: |
63 |
|
| Standard deviation: |
17.392 |
|
| Variance: |
302.48 |
|
WARNING: The following CQL constraint is not satisfied. 7 methods on 140 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 |
| SerializeToXmlFile<T>(String,T,String) |
0 |
NauckIT.PostgreSQLProvider.SerializationHelper.SerializeToXmlFile<T>(String,T,String) |
| DeserializeFromXmlFile<T>(String,String) |
0 |
NauckIT.PostgreSQLProvider.SerializationHelper.DeserializeFromXmlFile<T>(String,String) |
| SerializeToBinaryFile(String,Object) |
0 |
NauckIT.PostgreSQLProvider.SerializationHelper.SerializeToBinaryFile(String,Object) |
| DeserializeFromBinaryFile<T>(String) |
0 |
NauckIT.PostgreSQLProvider.SerializationHelper.DeserializeFromBinaryFile<T>(String) |
| get_Culture() |
0 |
NauckIT.PostgreSQLProvider.Properties.Resources.get_Culture() |
| set_Culture(CultureInfo) |
0 |
NauckIT.PostgreSQLProvider.Properties.Resources.set_Culture(CultureInfo) |
| .ctor() |
0 |
NauckIT.PostgreSQLProvider.Properties.Resources..ctor() |
| Sum: |
0 |
|
| Average: |
0 |
|
| Minimum: |
0 |
|
| Maximum: |
0 |
|
| Standard deviation: |
0 |
|
| Variance: |
0 |
|
WARNING: The following CQL constraint is not satisfied. 10 methods on 329 tested match the condition. --> Group {Encapsulation \ Methods Optimal Encapsulation}
// <Name>Methods that could be declared as 'private' in C#, 'Private' in VB.NET</Name>
WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE CouldBePrivate
| methods |
# lines of code (LOC) |
Full Name |
| .ctor() |
3 |
NauckIT.PostgreSQLProvider.PgMembershipProvider..ctor() |
| .ctor() |
2 |
NauckIT.PostgreSQLProvider.PgProfileProvider..ctor() |
| .ctor() |
2 |
NauckIT.PostgreSQLProvider.PgRoleProvider..ctor() |
| .ctor() |
2 |
NauckIT.PostgreSQLProvider.PgSessionStateStoreProvider..ctor() |
| SerializeToXmlFile<T>(String,T,String) |
4 |
NauckIT.PostgreSQLProvider.SerializationHelper.SerializeToXmlFile<T>(String,T,String) |
| DeserializeFromXmlFile<T>(String,String) |
5 |
NauckIT.PostgreSQLProvider.SerializationHelper.DeserializeFromXmlFile<T>(String,String) |
| SerializeToBinaryFile(String,Object) |
4 |
NauckIT.PostgreSQLProvider.SerializationHelper.SerializeToBinaryFile(String,Object) |
| DeserializeFromBinaryFile<T>(String) |
5 |
NauckIT.PostgreSQLProvider.SerializationHelper.DeserializeFromBinaryFile<T>(String) |
| get_ResourceManager() |
4 |
NauckIT.PostgreSQLProvider.Properties.Resources.get_ResourceManager() |
| get_Culture() |
1 |
NauckIT.PostgreSQLProvider.Properties.Resources.get_Culture() |
| Sum: |
32 |
|
| Average: |
3.2 |
|
| Minimum: |
1 |
|
| Maximum: |
5 |
|
| Standard deviation: |
1.3266 |
|
| Variance: |
1.76 |
|
WARNING: The following CQL constraint is not satisfied. 4 types on 142 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 |
| PgMembershipProvider |
633 |
NauckIT.PostgreSQLProvider.PgMembershipProvider |
| PgProfileProvider |
184 |
NauckIT.PostgreSQLProvider.PgProfileProvider |
| PgRoleProvider |
249 |
NauckIT.PostgreSQLProvider.PgRoleProvider |
| PgSessionStateStoreProvider |
338 |
NauckIT.PostgreSQLProvider.PgSessionStateStoreProvider |
| Sum: |
1404 |
|
| Average: |
351 |
|
| Minimum: |
184 |
|
| Maximum: |
633 |
|
| Standard deviation: |
171.75 |
|
| Variance: |
29496.5 |
|
WARNING: The following CQL constraint is not satisfied. 2 fields on 48 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 |
| resourceMan |
0 |
NauckIT.PostgreSQLProvider.Properties.Resources.resourceMan |
| resourceCulture |
0 |
NauckIT.PostgreSQLProvider.Properties.Resources.resourceCulture |
| Sum: |
0 |
|
| Average: |
0 |
|
| Minimum: |
0 |
|
| Maximum: |
0 |
|
| Standard deviation: |
0 |
|
| Variance: |
0 |
|
WARNING: The following CQL constraint is not satisfied. 10 methods on 329 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_MinRequiredNonAlphanumericCharacters() |
1 |
NauckIT.PostgreSQLProvider.PgMembershipProvider.get_MinRequiredNonAlphanumericCharacters() |
| get_PasswordStrengthRegularExpression() |
1 |
NauckIT.PostgreSQLProvider.PgMembershipProvider.get_PasswordStrengthRegularExpression() |
| ExpiredSessionDeletionTimer_Elapsed(Object,ElapsedEventArgs) |
3 |
NauckIT.PostgreSQLProvider.PgSessionStateStoreProvider.ExpiredSessionDeletionTimer_Elapsed(Object,ElapsedEventArgs) |
| InvokeExpireCallbackAndDeleteSession() |
48 |
NauckIT.PostgreSQLProvider.PgSessionStateStoreProvider.InvokeExpireCallbackAndDeleteSession() |
| get_ErrAutoGeneratedKeyNotSupported() |
1 |
NauckIT.PostgreSQLProvider.Properties.Resources.get_ErrAutoGeneratedKeyNotSupported() |
| get_ErrCantUpdateFailtureCountAndWindowStart() |
1 |
NauckIT.PostgreSQLProvider.Properties.Resources.get_ErrCantUpdateFailtureCountAndWindowStart() |
| get_MembershipProviderDefaultDescription() |
1 |
NauckIT.PostgreSQLProvider.Properties.Resources.get_MembershipProviderDefaultDescription() |
| get_ProfileProviderDefaultDescription() |
1 |
NauckIT.PostgreSQLProvider.Properties.Resources.get_ProfileProviderDefaultDescription() |
| get_SessionStoreProviderDefaultDescription() |
1 |
NauckIT.PostgreSQLProvider.Properties.Resources.get_SessionStoreProviderDefaultDescription() |
| get_SessionStoreProviderDefaultName() |
1 |
NauckIT.PostgreSQLProvider.Properties.Resources.get_SessionStoreProviderDefaultName() |
| Sum: |
59 |
|
| Average: |
5.9 |
|
| Minimum: |
1 |
|
| Maximum: |
48 |
|
| Standard deviation: |
14.046 |
|
| Variance: |
197.29 |
|
WARNING: The following CQL constraint is not satisfied. 2 fields on 48 tested match the condition. --> Group {Naming Conventions \ Name too long}
// <Name>Avoid fields with name too long</Name>
WARN IF Count > 0 IN SELECT TOP 10 FIELDS WHERE
NameLike "^[^\<]{35,}.*$" AND
!IsInFrameworkAssembly
// The regex matches fields with name longer than 35 characters.
// Field Name doesn't contain the type and namespace prefix, FullName does.
| fields |
Size of instance |
Full Name |
| m_minRequiredNonAlphanumericCharacters |
4 |
NauckIT.PostgreSQLProvider.PgMembershipProvider.m_minRequiredNonAlphanumericCharacters |
| m_passwordStrengthRegularExpression |
4 |
NauckIT.PostgreSQLProvider.PgMembershipProvider.m_passwordStrengthRegularExpression |
| Sum: |
8 |
|
| Average: |
4 |
|
| Minimum: |
4 |
|
| Maximum: |
4 |
|
| Standard deviation: |
0 |
|
| Variance: |
0 |
|
Types Metrics
rft: Response For Type
lcom: Lack of Cohesion Of Methods of a class
CC: Cyclomatic Complexity
Ca: Afferent Coupling
Ce: Efferent Coupling
ABC: Association Between Classes
NOC: Number Of Children
DIT: Depth in Inheritence Tree
| Type |
rank
|
lcom
|
lcom(HS)
|
CC
|
Ca
|
Ce
|
ABC
|
# Instance Methods |
# Static Methods |
# Prop |
# Fld |
# ILInst |
NOC
|
DIT
|
Namespace |
| Resources |
1,59 |
0 |
0 |
42 |
4 |
13 |
6 |
1 |
40 |
39 |
2 |
207 |
0 |
1 |
NauckIT.PostgreSQLProvider.Properties |
| PgMembershipProvider |
1,28 |
0,86 |
0,88 |
195 |
3 |
57 |
119 |
35 |
3 |
11 |
15 |
3302 |
0 |
3 |
NauckIT.PostgreSQLProvider |
| SerializationHelper |
0,49 |
0 |
0 |
10 |
1 |
20 |
23 |
0 |
10 |
0 |
0 |
191 |
0 |
1 |
NauckIT.PostgreSQLProvider |
| PgMembershipProvider+FailureType |
0,46 |
- |
- |
- |
1 |
2 |
0 |
- |
- |
- |
- |
- |
- |
- |
NauckIT.PostgreSQLProvider |
| PgRoleProvider |
0,15 |
0,07 |
0,08 |
69 |
0 |
32 |
54 |
14 |
0 |
1 |
4 |
1316 |
0 |
3 |
NauckIT.PostgreSQLProvider |
| PgProfileProvider |
0,15 |
0,53 |
0,56 |
56 |
0 |
50 |
87 |
17 |
0 |
1 |
5 |
1007 |
0 |
1 |
NauckIT.PostgreSQLProvider |
| PgSessionStateStoreProvider |
0,15 |
0,73 |
0,76 |
85 |
0 |
63 |
100 |
18 |
2 |
0 |
7 |
1640 |
0 |
3 |
NauckIT.PostgreSQLProvider |