NDepend Report Build Summary
|
[ For beginners: Where to start ]
[ Quick tips ]
[ NDepend site ]
The present HTML report is a summary of data gathered by the analysis. It is recommended to use the NDepend interactive UI capabilities to make the most of NDepend by mastering all aspects of your code. |
| Compare with project {NHibernate 2.1.2.GA} most recent analysis (analysis made on 2012 May - 17 Thursday 19:39) | ||
| Loaded! Code Coverage metrics, Queries and Rules relative to code Coverage, can be used. |
Diagrams |
Application Metrics | Note: Further Application Statistics are available. |
Third Party Usage | Percentage … |
| Rules summary |
|
» Number of Rules or Queries with Error (syntax error, exception thrown, time-out): 0» Number of Rules violated : 89
Summary of Rules violated
| |||||||||
|
Application Statistics
| Stat | # Occurences | Avg | StdDev | Max |
|---|---|---|---|---|
| Stat | # Occurences | Avg | StdDev | Max |
| Properties on interfaces | 287 interfaces | 2.05 | 4.85 | 47 properties on NHibernate.Persister.Entity.IEntityPersister |
| Methods on interfaces | 287 interfaces | 6.88 | 12.87 | 89 methods on NHibernate.Persister.Entity.IEntityPersister |
| Arguments on methods on interfaces | 1,975 methods | 1.09 | 1.2 | 11 arguments on NHibernate.Engine.IPersistenceContext.AddEntry(Object,Status,Object[],Object,Object,Object,LockMode,Boolean,IEntityPersister,Boolean,Boolean) |
| Public properties on classes | 1,866 Classes | 1.98 | 5.71 | 81 public properties on NHibernate.Persister.Entity.AbstractEntityPersister |
| Public methods on classes | 1,866 classes | 6.64 | 12.89 | 175 public methods on NHibernate.Persister.Entity.AbstractEntityPersister |
| Arguments on public methods on classes | 12,398 methods | 0.98 | 1.24 | 14 arguments on NHibernate.Engine.QueryParameters..ctor(IType[],Object[],IDictionary<String,TypedValue>,IDictionary<String,LockMode>,RowSelection,Boolean,Boolean,String,String,Object[],Object,String,Object,IResultTransformer) |
| IL instructions in non-abstract methods | 16,006 methods | 27.37 | 86.29 | 4892 IL instructions in NHibernate.Hql.Ast.ANTLR.HqlParser..cctor() |
| Cyclomatic complexity on non abstract Methods | 16,006 Methods | 2.38 | 4.66 | CC = 188 for NHibernate.Hql.Ast.ANTLR.HqlLexer.mTokens() |
Assemblies Metrics
If you wish to define thresholds on assemblies' Code Metrics, consider writing some Rules.
Clicking column header arrows sorts values.
Clicking column header title text redirect to the online Code Metric definition.
Clicking column header arrows sorts values.
Clicking column header title text redirect to the online Code Metric definition.
| Assemblies | # lines of code | # IL instruction | # Types | # Abstract Types | # lines of comment | % Comment | % Coverage | Afferent Coupling | Efferent Coupling | Relational Cohesion | Instability | Abstractness | Distance |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Assemblies | # lines of code | # IL instruction | # Types | # Abstract Types | # lines of comment | % Comment | % Coverage | Afferent Coupling | Efferent Coupling | Relational Cohesion | Instability | Abstractness | Distance |
| NHibernate v3.0.0.3001 | 62852 | 437579 | 2204 | 404 | 37061 | 37 | 75 | 7 | 451 | 6.6 | 0.98 | 0.18 | 0.12 |
| NHibernate.ByteCode.LinFu v3.0.0.3001 | 21 | 156 | 3 | 0 | 11 | 34 | 85 | 0 | 30 | 1 | 1 | 0 | 0 |
| NHibernate.ByteCode.Castle v3.0.0.3001 | 41 | 315 | 4 | 0 | 41 | 50 | 90 | 0 | 37 | 1 | 1 | 0 | 0 |
Types Metrics : Code Quality
For a particular Code Metric defined for types, values in red represent the 15% highest values.
If you wish to define thresholds on types' Code Metrics, consider writing some Rule.
Clicking column header arrows sorts values.
Clicking column header title text redirect to the online Code Metric definition.
If you wish to define thresholds on types' Code Metrics, consider writing some Rule.
Clicking column header arrows sorts values.
Clicking column header title text redirect to the online Code Metric definition.
If the code base analyzed has too many types, NDepend doesn't list Types Metrics to avoid a too big report. The section Types Metrics can be activated by unchecking the option:
NDepend Project Properties > Report > Avoid too big report for large code base > Hide section Types Metrics if...
It is recommended to use the NDepend interactive UI capabilities to browse large applications.
NDepend Project Properties > Report > Avoid too big report for large code base > Hide section Types Metrics if...
It is recommended to use the NDepend interactive UI capabilities to browse large applications.
| Type Name | Type Rank | # Lines Of Code | # IL Instructions | # Lines Of Comment | % Comment | Cyclomatic Complexity | IL Cyclomatic Complexity | % Coverage | Afferent Coupling | Efferent Coupling | Type Namespace |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Type Name | Type Rank | # Lines Of Code | # IL Instructions | # Lines Of Comment | Percentage Comment | Cyclomatic Complexity | IL Cyclomatic Complexity | % coverage | Afferent Coupling | Efferent Coupling | Type Namespace |
Types Metrics : Code Members and Inheritance
| Type Name | # Instance Methods | Nb Static Methods | Nb Properties | # Fields | # Children Classes | Depth Of Inheritance Tree | Type Namespace |
|---|---|---|---|---|---|---|---|
| Type Name | Nb Instance Methods | Nb Static Methods | Nb Properties | Nb Fields | Nb Children Classes | Depth Of Inheritance Tree | Type Namespace |
Types Metrics : Lack Of Cohesion Of Methods and Association Between Classes
| Type Name | Lack Of Cohesion Of Methods | Lack Of Cohesion Of Methods HS | Association Between Classes | Type Namespace |
|---|---|---|---|---|
| Type Name | Lack Of Cohesion Of Methods | Lack Of Cohesion Of Methods HS | Association Between Classes | Type Namespace |
Namespaces Metrics
If you wish to define thresholds on namespaces' Code Metrics, consider writing some Rules.
Clicking column header arrows sorts values.
Clicking column header title text redirect to the online Code Metric definition.
Clicking column header arrows sorts values.
Clicking column header title text redirect to the online Code Metric definition.
| Namespaces | # lines of code | # IL instruction | # Types | # lines of comment | % Comment | % Coverage | Afferent Coupling | Efferent Coupling |
|---|---|---|---|---|---|---|---|---|
| Namespaces | # lines of code | # IL instruction | # Types | # lines of comment | % Comment | % Coverage | Afferent Coupling | Efferent Coupling |
| 0 | 102 | 1 | - | - | - | 1 | 5 | |
| NHibernate | 510 | 3429 | 71 | 4241 | 89 | 65 | 76 | 31 |
| NHibernate.Util | 1867 | 12872 | 62 | 798 | 29 | 69 | 60 | 28 |
| NHibernate.UserTypes | 0 | 0 | 7 | 271 | 100 | - | 2 | 9 |
| NHibernate.Type | 2623 | 20040 | 119 | 2378 | 47 | 68 | 54 | 42 |
| NHibernate.Properties | 392 | 2664 | 51 | 697 | 64 | 70 | 13 | 13 |
| NHibernate.Mapping | 2009 | 14065 | 58 | 1663 | 45 | 79 | 14 | 23 |
| NHibernate.Exceptions | 157 | 1135 | 18 | 164 | 51 | 40 | 17 | 15 |
| NHibernate.Metadata | 0 | 0 | 2 | 98 | 100 | - | 7 | 5 |
| NHibernate.Intercept | 64 | 432 | 7 | 31 | 32 | 70 | 8 | 9 |
| NHibernate.Classic | 5 | 38 | 4 | 113 | 95 | 20 | 3 | 3 |
| NHibernate.Param | 124 | 866 | 12 | 110 | 47 | 59 | 4 | 10 |
| NHibernate.Driver | 529 | 3509 | 31 | 951 | 64 | 47 | 6 | 18 |
| NHibernate.Action | 551 | 3899 | 14 | 178 | 24 | 80 | 4 | 23 |
| NHibernate.Impl | 4201 | 29371 | 43 | 1089 | 20 | 78 | 23 | 59 |
| NHibernate.Transform | 78 | 529 | 10 | 51 | 39 | 82 | 13 | 9 |
| NHibernate.SqlCommand | 1589 | 10403 | 33 | 879 | 35 | 82 | 34 | 18 |
| NHibernate.Context | 126 | 814 | 11 | 135 | 51 | - | 2 | 12 |
| NHibernate.Transaction | 215 | 1462 | 9 | 144 | 40 | 67 | 6 | 15 |
| NHibernate.Stat | 334 | 2761 | 10 | 107 | 24 | 73 | 12 | 13 |
| NHibernate.Connection | 64 | 370 | 5 | 164 | 71 | 70 | 8 | 9 |
| NHibernate.SqlTypes | 101 | 766 | 11 | 143 | 58 | 85 | 22 | 9 |
| NHibernate.DebugHelpers | 20 | 104 | 4 | 3 | 13 | - | 0 | 4 |
| NHibernate.Tuple | 157 | 1092 | 10 | 215 | 57 | 88 | 4 | 16 |
| NHibernate.Tuple.Component | 140 | 958 | 6 | 47 | 25 | 78 | 2 | 13 |
| NHibernate.Tuple.Entity | 528 | 3779 | 6 | 151 | 22 | 83 | 4 | 21 |
| NHibernate.Dialect | 2086 | 13724 | 44 | 2203 | 51 | 39 | 28 | 26 |
| NHibernate.Dialect.Schema | 379 | 2772 | 45 | 104 | 21 | 36 | 4 | 8 |
| NHibernate.Dialect.Function | 294 | 1989 | 22 | 224 | 43 | 77 | 13 | 14 |
| NHibernate.Dialect.Lock | 68 | 560 | 3 | 42 | 38 | 30 | 2 | 13 |
| NHibernate.Loader | 1024 | 7272 | 11 | 595 | 36 | 87 | 13 | 29 |
| NHibernate.Loader.Entity | 98 | 796 | 8 | 37 | 27 | 93 | 2 | 13 |
| NHibernate.Loader.Collection | 154 | 1275 | 10 | 66 | 30 | 92 | 1 | 13 |
| NHibernate.Loader.Criteria | 480 | 3236 | 7 | 71 | 12 | 90 | 3 | 19 |
| NHibernate.Loader.Custom | 276 | 1695 | 17 | 130 | 32 | 92 | 3 | 16 |
| NHibernate.Loader.Custom.Sql | 297 | 2277 | 7 | 37 | 11 | 92 | 2 | 16 |
| NHibernate.Persister | 37 | 321 | 1 | 14 | 27 | 40 | 1 | 9 |
| NHibernate.Persister.Entity | 2294 | 16813 | 23 | 1141 | 33 | 87 | 32 | 33 |
| NHibernate.Persister.Collection | 1005 | 7474 | 12 | 351 | 25 | 81 | 25 | 31 |
| NHibernate.Criterion | 1850 | 13637 | 82 | 1750 | 48 | 77 | 4 | 24 |
| NHibernate.Criterion.Lambda | 291 | 2230 | 28 | 307 | 51 | 89 | 2 | 8 |
| NHibernate.Hql | 93 | 607 | 10 | 145 | 60 | 88 | 11 | 18 |
| NHibernate.Hql.Classic | 1648 | 10548 | 22 | 482 | 22 | 60 | 1 | 31 |
| NHibernate.Hql.Util | 44 | 270 | 1 | 50 | 53 | 40 | 5 | 8 |
| NHibernate.Hql.Ast | 267 | 3062 | 85 | 4 | 1 | 73 | 4 | 10 |
| NHibernate.Hql.Ast.ANTLR | 15022 | 92688 | 178 | 3475 | 18 | 79 | 7 | 32 |
| NHibernate.Hql.Ast.ANTLR.Loader | 159 | 1038 | 1 | 35 | 18 | 96 | 1 | 22 |
| NHibernate.Hql.Ast.ANTLR.Util | 357 | 2655 | 19 | 144 | 28 | 73 | 3 | 23 |
| NHibernate.Hql.Ast.ANTLR.Tree | 2307 | 15805 | 66 | 1104 | 32 | 76 | 9 | 24 |
| NHibernate.Hql.Ast.ANTLR.Exec | 286 | 1973 | 7 | 31 | 9 | 80 | 1 | 26 |
| NHibernate.Proxy | 106 | 833 | 9 | 182 | 63 | 92 | 15 | 11 |
| NHibernate.Proxy.Map | 35 | 269 | 3 | 2 | 5 | 22 | 1 | 7 |
| NHibernate.Proxy.Poco | 43 | 322 | 1 | 34 | 44 | 62 | 2 | 10 |
| NHibernate.Cache | 528 | 3795 | 25 | 616 | 53 | 72 | 11 | 19 |
| NHibernate.Cache.Entry | 86 | 518 | 7 | 10 | 10 | 33 | 6 | 10 |
| NHibernate.Cache.Access | 0 | 0 | 1 | 3 | 100 | - | 3 | 0 |
| NHibernate.Id | 396 | 2766 | 31 | 771 | 66 | 61 | 15 | 21 |
| NHibernate.Id.Insert | 54 | 395 | 9 | 76 | 58 | 18 | 3 | 15 |
| NHibernate.Id.Enhanced | 201 | 1476 | 13 | 83 | 29 | 39 | 0 | 18 |
| NHibernate.Event | 496 | 3329 | 70 | 369 | 42 | 79 | 10 | 14 |
| NHibernate.Event.Default | 1410 | 9848 | 36 | 796 | 36 | 87 | 1 | 29 |
| NHibernate.Collection | 1227 | 8000 | 27 | 705 | 36 | 73 | 14 | 17 |
| NHibernate.Collection.Generic | 306 | 1965 | 5 | 85 | 21 | 56 | 1 | 13 |
| NHibernate.Cfg | 1760 | 12915 | 37 | 852 | 32 | 69 | 38 | 52 |
| NHibernate.Cfg.XmlHbmBinding | 1764 | 13189 | 59 | 215 | 10 | 88 | 1 | 19 |
| NHibernate.Cfg.MappingSchema | 844 | 10046 | 160 | 1079 | 56 | 88 | 2 | 16 |
| NHibernate.Cfg.ConfigurationSchema | 311 | 1793 | 10 | 222 | 41 | 61 | 1 | 7 |
| NHibernate.Cfg.Loquacious | 212 | 1586 | 39 | 78 | 26 | 86 | 0 | 12 |
| NHibernate.Bytecode | 122 | 740 | 16 | 322 | 72 | 61 | 22 | 11 |
| NHibernate.Bytecode.CodeDom | 79 | 572 | 2 | 39 | 33 | - | 1 | 11 |
| NHibernate.Bytecode.Lightweight | 109 | 683 | 8 | 50 | 31 | 98 | 1 | 10 |
| NHibernate.Linq | 286 | 2941 | 26 | 40 | 12 | 88 | 4 | 26 |
| NHibernate.Linq.ReWriters | 87 | 817 | 6 | 3 | 3 | 89 | 1 | 16 |
| NHibernate.Linq.GroupJoin | 67 | 557 | 8 | 27 | 28 | 97 | 1 | 15 |
| NHibernate.Linq.ResultOperators | 10 | 99 | 3 | 0 | 0 | 80 | 4 | 7 |
| NHibernate.Linq.Functions | 141 | 2585 | 34 | 4 | 2 | 62 | 2 | 17 |
| NHibernate.Linq.GroupBy | 109 | 833 | 7 | 33 | 23 | 85 | 2 | 17 |
| NHibernate.Linq.Expressions | 36 | 307 | 13 | 0 | 0 | 80 | 5 | 9 |
| NHibernate.Linq.Visitors | 550 | 4321 | 26 | 99 | 15 | 87 | 6 | 33 |
| NHibernate.Linq.Visitors.ResultOperatorProcessors | 126 | 1752 | 26 | 10 | 7 | 85 | 1 | 23 |
| NHibernate.Engine | 2102 | 14220 | 84 | 1954 | 48 | 82 | 64 | 46 |
| NHibernate.Engine.Transaction | 3 | 28 | 2 | 41 | 93 | 66 | 3 | 5 |
| NHibernate.Engine.Loading | 187 | 1429 | 3 | 169 | 47 | 88 | 3 | 18 |
| NHibernate.Engine.Query | 405 | 2861 | 21 | 85 | 17 | 77 | 10 | 22 |
| NHibernate.Engine.Query.Sql | 69 | 419 | 7 | 76 | 52 | 91 | 5 | 6 |
| NHibernate.AdoNet | 549 | 3656 | 25 | 254 | 31 | 64 | 10 | 24 |
| NHibernate.AdoNet.Util | 339 | 2189 | 7 | 20 | 5 | 92 | 5 | 10 |
| NHibernate.Tool.hbm2ddl | 497 | 3348 | 14 | 145 | 22 | 68 | 2 | 21 |
| NHibernate.ByteCode.LinFu | 21 | 156 | 3 | 2 | 8 | 85 | 0 | 9 |
| NHibernate.ByteCode.Castle | 41 | 315 | 4 | 32 | 43 | 90 | 0 | 12 |
| Code Quality |
|
|
| Critical Rule warning: Types too big - critical |
// <Name>Types too big - critical</Name>
warnif count > 0 from t in JustMyCode.Types where
t.NbLinesOfCode > 500 ||
t.NbILInstructions > 3000
orderby t.NbLinesOfCode descending
select new { t, t.NbLinesOfCode, t.NbILInstructions,
t.Methods, t.Fields }
// Types where NbLinesOfCode > 500 are extremely complex
// and should be split in a smaller group of types.
// See the definition of the NbLinesOfCode metric here
// http://www.ndepend.com/Metrics.aspx#NbLinesOfCode
// In average, a line of code is compiled to around
// 6 IL instructions. This is why the code metric
// NbILInstructions is used here, in case the
// code metric NbLinesOfCode is un-available because
// of missing assemblies corresponding PDB files.
// See the definition of the NbILInstructions metric here
// http://www.ndepend.com/Metrics.aspx#NbILInstructions
warnif count > 0 from t in JustMyCode.Types where
t.NbLinesOfCode > 500 ||
t.NbILInstructions > 3000
orderby t.NbLinesOfCode descending
select new { t, t.NbLinesOfCode, t.NbILInstructions,
t.Methods, t.Fields }
// Types where NbLinesOfCode > 500 are extremely complex
// and should be split in a smaller group of types.
// See the definition of the NbLinesOfCode metric here
// http://www.ndepend.com/Metrics.aspx#NbLinesOfCode
// In average, a line of code is compiled to around
// 6 IL instructions. This is why the code metric
// NbILInstructions is used here, in case the
// code metric NbLinesOfCode is un-available because
// of missing assemblies corresponding PDB files.
// See the definition of the NbILInstructions metric here
// http://www.ndepend.com/Metrics.aspx#NbILInstructions
10 types matched
| types | # lines of code (LOC) | # IL instructions | Methods | Fields | Full Name |
|---|---|---|---|---|---|
| types | # lines of code (LOC) | # IL instructions | Methods | Fields | Full Name |
| HqlSqlWalker | 4 731 | 27 627 | 144 methods | 457 fields | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker |
| HqlParser | 4 452 | 28 312 | 96 methods | 470 fields | NHibernate.Hql.Ast.ANTLR.HqlParser |
| SqlGenerator | 3 551 | 22 150 | 83 methods | 430 fields | NHibernate.Hql.Ast.ANTLR.SqlGenerator |
| HqlLexer | 1 505 | 8 960 | 105 methods | 145 fields | NHibernate.Hql.Ast.ANTLR.HqlLexer |
| AbstractEntityPersister | 1 417 | 10 998 | 311 methods | 88 fields | NHibernate.Persister.Entity.AbstractEntityPersister |
| Configuration | 974 | 6 172 | 120 methods | 35 fields | NHibernate.Cfg.Configuration |
| SessionImpl | 931 | 7 204 | 183 methods | 22 fields | NHibernate.Impl.SessionImpl |
| AbstractCollectionPersister | 687 | 4 970 | 146 methods | 88 fields | NHibernate.Persister.Collection.AbstractCollectionPersister |
| QueryTranslator | 627 | 4 069 | 104 methods | 49 fields | NHibernate.Hql.Classic.QueryTranslator |
| Loader | 503 | 3 577 | 76 methods | 4 fields | NHibernate.Loader.Loader |
Statistics
| Stat | # lines of code (LOC) | # IL instructions | Methods | Fields |
|---|---|---|---|---|
| Sum: | 19 378 | 124 039 | 0 | 0 |
| Average: | 1 937 | 12 403 | 0 | 0 |
| Minimum: | 503 | 3 577 | 0 | 0 |
| Maximum: | 4 731 | 28 312 | 0 | 0 |
| Standard deviation: | 1 564 | 9 285 | 0 | 0 |
| Variance: | 2 446 802 | 86 215 680 | 0 | 0 |
| Critical Rule warning: Methods too complex - critical |
// <Name>Methods too complex - critical</Name>
warnif count > 0 from m in JustMyCode.Methods where
m.ILCyclomaticComplexity > 40 &&
m.ILNestingDepth > 5
orderby m.ILCyclomaticComplexity descending,
m.ILNestingDepth descending
select new { m, m.ILCyclomaticComplexity, m.ILNestingDepth }
// Methods with ILCyclomaticComplexity > 40 and ILNestingDepth > 4
// are really too complex and should be split
// in smaller methods, or even types.
// See the definition of the ILCyclomaticComplexity metric here
// http://www.ndepend.com/Metrics.aspx#ILCC
// See the definition of the ILNestingDepth metric here
// http://www.NDepend.com/Metrics.aspx#ILNestingDepth
warnif count > 0 from m in JustMyCode.Methods where
m.ILCyclomaticComplexity > 40 &&
m.ILNestingDepth > 5
orderby m.ILCyclomaticComplexity descending,
m.ILNestingDepth descending
select new { m, m.ILCyclomaticComplexity, m.ILNestingDepth }
// Methods with ILCyclomaticComplexity > 40 and ILNestingDepth > 4
// are really too complex and should be split
// in smaller methods, or even types.
// See the definition of the ILCyclomaticComplexity metric here
// http://www.ndepend.com/Metrics.aspx#ILCC
// See the definition of the ILNestingDepth metric here
// http://www.NDepend.com/Metrics.aspx#ILNestingDepth
1 methods matched
| method | IL Cyclomatic Complexity (ILCC) | IL Nesting Depth | Full Name |
|---|---|---|---|
| method | IL Cyclomatic Complexity (ILCC) | IL Nesting Depth | Full Name |
| GenerateSchemaUpdateScript(Dialect,DatabaseMetadata) | 50 | 8 | NHibernate.Cfg.Configuration.GenerateSchemaUpdateScript(Dialect ,DatabaseMetadata) |
Statistics
| Stat | IL Cyclomatic Complexity (ILCC) | IL Nesting Depth |
|---|---|---|
| Sum: | 50 | 8 |
| Average: | 50 | 8 |
| Minimum: | 50 | 8 |
| Maximum: | 50 | 8 |
| Standard deviation: | 0 | 0 |
| Variance: | 0 | 0 |
| Critical Rule warning: Methods with too many parameters - critical |
// <Name>Methods with too many parameters - critical</Name>
warnif count > 0 from m in JustMyCode.Methods where
m.NbParameters > 8
orderby m.NbParameters descending
select new { m, m.NbParameters }
// Methods with more than 8 parameters 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
warnif count > 0 from m in JustMyCode.Methods where
m.NbParameters > 8
orderby m.NbParameters descending
select new { m, m.NbParameters }
// Methods with more than 8 parameters 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
24 methods matched
| methods | # Parameters | Full Name |
|---|---|---|
| methods | # Parameters | Full Name |
| .ctor(IDictionary<String,PersistentClass>,IDictionary<String ,Collection>,IDictionary<String,Table>,IDictionary<String ,NamedQueryDefinition>,IDictionary<String,NamedSQLQueryDefinition> ,IDictionary<String,ResultSetMappingDefinition>,IDictionary<String ,String>,IList<SecondPassCommand>,Queue<FilterSecondPassArgs>,IList <Mappings+PropertyReference>,INamingStrategy,IDictionary<String ,TypeDef>,IDictionary<String,FilterDefinition>,ISet<ExtendsQueueEntry> ,IList<IAuxiliaryDatabaseObject>,IDictionary<String ,Mappings+TableDescription>,IDictionary<Table,Mappings+ColumnNames> ,String,String,String,String,Dialect) | 22 | NHibernate.Cfg.Mappings..ctor(IDictionary<String,PersistentClass> ,IDictionary<String,Collection>,IDictionary<String,Table>,IDictionary <String,NamedQueryDefinition>,IDictionary<String ,NamedSQLQueryDefinition>,IDictionary<String ,ResultSetMappingDefinition>,IDictionary<String,String>,IList <SecondPassCommand>,Queue<FilterSecondPassArgs>,IList <Mappings+PropertyReference>,INamingStrategy,IDictionary<String ,TypeDef>,IDictionary<String,FilterDefinition>,ISet<ExtendsQueueEntry> ,IList<IAuxiliaryDatabaseObject>,IDictionary<String ,Mappings+TableDescription>,IDictionary<Table,Mappings+ColumnNames> ,String,String,String,String,Dialect) |
| .ctor(IType[],Object[],IDictionary<String,TypedValue>,IDictionary <String,LockMode>,RowSelection,Boolean,Boolean,String,String,Object[] ,Object,String,Object,IResultTransformer) | 14 | NHibernate.Engine.QueryParameters..ctor(IType[],Object[],IDictionary <String,TypedValue>,IDictionary<String,LockMode>,RowSelection,Boolean ,Boolean,String,String,Object[],Object,String,Object ,IResultTransformer) |
| .ctor(String,String,IType,Boolean,Boolean,Boolean,Boolean,Boolean ,Boolean,Boolean,Boolean,CascadeStyle,Nullable<FetchMode>) | 13 | NHibernate.Tuple.StandardProperty..ctor(String,String,IType,Boolean ,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean,CascadeStyle ,Nullable<FetchMode>) |
| .ctor(String,String,IType,Boolean,Boolean,Boolean,Boolean,Boolean ,Boolean,Boolean,Boolean,CascadeStyle,VersionValue) | 13 | NHibernate.Tuple.VersionProperty..ctor(String,String,IType,Boolean ,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean,CascadeStyle ,VersionValue) |
| .ctor(String,INativeSQLQueryReturn[],IList<String>,Boolean,String ,Int32,Int32,FlushMode,Nullable<CacheMode>,Boolean,String,IDictionary <String,String>,Boolean) | 13 | NHibernate.Engine.NamedSQLQueryDefinition..ctor(String ,INativeSQLQueryReturn[],IList<String>,Boolean,String,Int32,Int32 ,FlushMode,Nullable<CacheMode>,Boolean,String,IDictionary<String ,String>,Boolean) |
| .ctor(String,String,IList<String>,Boolean,String,Int32,Int32,FlushMode ,Nullable<CacheMode>,Boolean,String,IDictionary<String,String>,Boolean ) | 13 | NHibernate.Engine.NamedSQLQueryDefinition..ctor(String,String,IList <String>,Boolean,String,Int32,Int32,FlushMode,Nullable<CacheMode> ,Boolean,String,IDictionary<String,String>,Boolean) |
| AddEntry(Object,Status,Object[],Object,Object,Object,LockMode,Boolean ,IEntityPersister,Boolean,Boolean) | 11 | NHibernate.Engine.IPersistenceContext.AddEntry(Object,Status,Object[] ,Object,Object,Object,LockMode,Boolean,IEntityPersister,Boolean ,Boolean) |
| AddEntry(Object,Status,Object[],Object,Object,Object,LockMode,Boolean ,IEntityPersister,Boolean,Boolean) | 11 | NHibernate.Engine.StatefulPersistenceContext.AddEntry(Object,Status ,Object[],Object,Object,Object,LockMode,Boolean,IEntityPersister ,Boolean,Boolean) |
| .ctor(IType[],Object[],IDictionary<String,TypedValue>,IDictionary <String,LockMode>,RowSelection,Boolean,Boolean,String,String,Object[] ,IResultTransformer) | 11 | NHibernate.Engine.QueryParameters..ctor(IType[],Object[],IDictionary <String,TypedValue>,IDictionary<String,LockMode>,RowSelection,Boolean ,Boolean,String,String,Object[],IResultTransformer) |
| .ctor(Status,Object[],Object,Object,Object,LockMode,Boolean ,IEntityPersister,EntityMode,Boolean,Boolean) | 11 | NHibernate.Engine.EntityEntry..ctor(Status,Object[],Object,Object ,Object,LockMode,Boolean,IEntityPersister,EntityMode,Boolean,Boolean) |
| .ctor(Object,Object[],Int32[],Boolean,Object[],Object,Object,Object ,IEntityPersister,ISessionImplementor) | 10 | NHibernate.Action.EntityUpdateAction..ctor(Object,Object[],Int32[] ,Boolean,Object[],Object,Object,Object,IEntityPersister ,ISessionImplementor) |
| InstanceNotYetLoaded(IDataReader,Int32,ILoadable,EntityKey,LockMode ,String,EntityKey,Object,IList,ISessionImplementor) | 10 | NHibernate.Loader.Loader.InstanceNotYetLoaded(IDataReader,Int32 ,ILoadable,EntityKey,LockMode,String,EntityKey,Object,IList ,ISessionImplementor) |
| UpdateOrInsert(Object,Object[],Object[],Object,Boolean[],Int32,Object ,Object,SqlCommandInfo,ISessionImplementor) | 10 | NHibernate.Persister.Entity.AbstractEntityPersister.UpdateOrInsert (Object,Object[],Object[],Object,Boolean[],Int32,Object,Object ,SqlCommandInfo,ISessionImplementor) |
| Update(Object,Object[],Object[],Object,Boolean[],Int32,Object,Object ,SqlCommandInfo,ISessionImplementor) | 10 | NHibernate.Persister.Entity.AbstractEntityPersister.Update(Object ,Object[],Object[],Object,Boolean[],Int32,Object,Object,SqlCommandInfo ,ISessionImplementor) |
| AddEntity(Object,Status,Object[],EntityKey,Object,LockMode,Boolean ,IEntityPersister,Boolean,Boolean) | 10 | NHibernate.Engine.IPersistenceContext.AddEntity(Object,Status,Object[] ,EntityKey,Object,LockMode,Boolean,IEntityPersister,Boolean,Boolean) |
| AddEntity(Object,Status,Object[],EntityKey,Object,LockMode,Boolean ,IEntityPersister,Boolean,Boolean) | 10 | NHibernate.Engine.StatefulPersistenceContext.AddEntity(Object,Status ,Object[],EntityKey,Object,LockMode,Boolean,IEntityPersister,Boolean ,Boolean) |
| .ctor(IType[],Object[],IDictionary<String,LockMode>,RowSelection ,Boolean,String,String,Boolean,IResultTransformer,IDictionary<Int32 ,Int32>) | 10 | NHibernate.Engine.QueryParameters..ctor(IType[],Object[],IDictionary <String,LockMode>,RowSelection,Boolean,String,String,Boolean ,IResultTransformer,IDictionary<Int32,Int32>) |
| .ctor(String,Boolean,String,Int32,Int32,FlushMode,Nullable<CacheMode> ,Boolean,String,IDictionary<String,String>) | 10 | NHibernate.Engine.NamedQueryDefinition..ctor(String,Boolean,String ,Int32,Int32,FlushMode,Nullable<CacheMode>,Boolean,String,IDictionary <String,String>) |
| .ctor(IDbConnection,SessionFactoryImpl,Boolean,Int64,IInterceptor ,EntityMode,Boolean,Boolean,ConnectionReleaseMode) | 9 | NHibernate.Impl.SessionImpl..ctor(IDbConnection,SessionFactoryImpl ,Boolean,Int64,IInterceptor,EntityMode,Boolean,Boolean ,ConnectionReleaseMode) |
| LoadFromResultSet(IDataReader,Int32,Object,String,EntityKey,String ,LockMode,ILoadable,ISessionImplementor) | 9 | NHibernate.Loader.Loader.LoadFromResultSet(IDataReader,Int32,Object ,String,EntityKey,String,LockMode,ILoadable,ISessionImplementor) |
| Update(Object,Object[],Int32[],Boolean,Object[],Object,Object,Object ,ISessionImplementor) | 9 | NHibernate.Persister.Entity.IEntityPersister.Update(Object,Object[] ,Int32[],Boolean,Object[],Object,Object,Object,ISessionImplementor) |
| Dehydrate(Object,Object[],Object,Boolean[],Boolean[][],Int32 ,IDbCommand,ISessionImplementor,Int32) | 9 | NHibernate.Persister.Entity.AbstractEntityPersister.Dehydrate(Object ,Object[],Object,Boolean[],Boolean[][],Int32,IDbCommand ,ISessionImplementor,Int32) |
| Update(Object,Object[],Int32[],Boolean,Object[],Object,Object,Object ,ISessionImplementor) | 9 | NHibernate.Persister.Entity.AbstractEntityPersister.Update(Object ,Object[],Int32[],Boolean,Object[],Object,Object,Object ,ISessionImplementor) |
| .ctor(String,Boolean,String,Int32,Int32,FlushMode,Boolean,String ,IDictionary<String,String>) | 9 | NHibernate.Engine.NamedQueryDefinition..ctor(String,Boolean,String ,Int32,Int32,FlushMode,Boolean,String,IDictionary<String,String>) |
Statistics
| Stat | # Parameters |
|---|---|
| Sum: | 266 |
| Average: | 11.083 |
| Minimum: | 9 |
| Maximum: | 22 |
| Standard deviation: | 2.7221 |
| Variance: | 7.4097 |
| Rule warning: Quick summary of methods to refactor |
// <Name>Quick summary of methods to refactor</Name>
warnif count > 0 from m in JustMyCode.Methods where
// Code Metrics' definitions
m.NbLinesOfCode > 30 || // http://www.ndepend.com/Metrics.aspx#NbLinesOfCode
m.NbILInstructions > 200 || // http://www.ndepend.com/Metrics.aspx#NbILInstructions
m.CyclomaticComplexity > 20 || // http://www.ndepend.com/Metrics.aspx#CC
m.ILCyclomaticComplexity > 50 || // http://www.ndepend.com/Metrics.aspx#ILCC
m.ILNestingDepth > 5 || // http://www.ndepend.com/Metrics.aspx#ILNestingDepth
m.NbParameters > 5 || // http://www.ndepend.com/Metrics.aspx#NbParameters
m.NbVariables > 8 || // http://www.ndepend.com/Metrics.aspx#NbVariables
m.NbOverloads > 6 // http://www.ndepend.com/Metrics.aspx#NbOverloads
select new { m, m.NbLinesOfCode, m.NbILInstructions, m.CyclomaticComplexity,
m.ILCyclomaticComplexity, m.ILNestingDepth,
m.NbParameters, m.NbVariables, m.NbOverloads }
warnif count > 0 from m in JustMyCode.Methods where
// Code Metrics' definitions
m.NbLinesOfCode > 30 || // http://www.ndepend.com/Metrics.aspx#NbLinesOfCode
m.NbILInstructions > 200 || // http://www.ndepend.com/Metrics.aspx#NbILInstructions
m.CyclomaticComplexity > 20 || // http://www.ndepend.com/Metrics.aspx#CC
m.ILCyclomaticComplexity > 50 || // http://www.ndepend.com/Metrics.aspx#ILCC
m.ILNestingDepth > 5 || // http://www.ndepend.com/Metrics.aspx#ILNestingDepth
m.NbParameters > 5 || // http://www.ndepend.com/Metrics.aspx#NbParameters
m.NbVariables > 8 || // http://www.ndepend.com/Metrics.aspx#NbVariables
m.NbOverloads > 6 // http://www.ndepend.com/Metrics.aspx#NbOverloads
select new { m, m.NbLinesOfCode, m.NbILInstructions, m.CyclomaticComplexity,
m.ILCyclomaticComplexity, m.ILNestingDepth,
m.NbParameters, m.NbVariables, m.NbOverloads }
588 methods matched
The following list of methods is truncated and contains only the first 100 methods of the 588 methods matched. All matched methods could be listed in the report by unchecking the option:
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched methods.
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched methods.
| methods | # lines of code (LOC) | # IL instructions | Cyclomatic Complexity (CC) | IL Cyclomatic Complexity (ILCC) | IL Nesting Depth | # Parameters | # Variables | # Overloads | Full Name |
|---|---|---|---|---|---|---|---|---|---|
| methods | # lines of code (LOC) | # IL instructions | Cyclomatic Complexity (CC) | IL Cyclomatic Complexity (ILCC) | IL Nesting Depth | # Parameters | # Variables | # Overloads | Full Name |
| .cctor() | 53 | 139 | 3 | 5 | 2 | 0 | 3 | 1 | NHibernate.NHibernateUtil..cctor() |
| OnFlushDirty(Object,Object,Object[],Object[],String[],IType[]) | N/A | N/A | N/A | N/A | N/A | 6 | N/A | 1 | NHibernate.IInterceptor.OnFlushDirty(Object,Object,Object[],Object[] ,String[],IType[]) |
| FindDirty(Object,Object,Object[],Object[],String[],IType[]) | N/A | N/A | N/A | N/A | N/A | 6 | N/A | 1 | NHibernate.IInterceptor.FindDirty(Object,Object,Object[],Object[] ,String[],IType[]) |
| JoinQueryOver<U>(Expression<Func<TSubType,U>>) | N/A | N/A | N/A | N/A | N/A | 1 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,U>>) |
| JoinQueryOver<U>(Expression<Func<U>>) | N/A | N/A | N/A | N/A | N/A | 1 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <U>>) |
| JoinQueryOver<U>(Expression<Func<TSubType,U>>,Expression<Func<U>>) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,U>>,Expression<Func<U>>) |
| JoinQueryOver<U>(Expression<Func<U>>,Expression<Func<U>>) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <U>>,Expression<Func<U>>) |
| JoinQueryOver<U>(Expression<Func<TSubType,U>>,JoinType) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,U>>,JoinType) |
| JoinQueryOver<U>(Expression<Func<U>>,JoinType) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <U>>,JoinType) |
| JoinQueryOver<U>(Expression<Func<TSubType,U>>,Expression<Func<U>> ,JoinType) | N/A | N/A | N/A | N/A | N/A | 3 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,U>>,Expression<Func<U>>,JoinType) |
| JoinQueryOver<U>(Expression<Func<U>>,Expression<Func<U>>,JoinType) | N/A | N/A | N/A | N/A | N/A | 3 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <U>>,Expression<Func<U>>,JoinType) |
| JoinQueryOver<U>(Expression<Func<TSubType,IEnumerable<U>>>) | N/A | N/A | N/A | N/A | N/A | 1 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,IEnumerable<U>>>) |
| JoinQueryOver<U>(Expression<Func<IEnumerable<U>>>) | N/A | N/A | N/A | N/A | N/A | 1 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <IEnumerable<U>>>) |
| JoinQueryOver<U>(Expression<Func<TSubType,IEnumerable<U>>>,Expression <Func<U>>) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,IEnumerable<U>>>,Expression<Func<U>>) |
| JoinQueryOver<U>(Expression<Func<IEnumerable<U>>>,Expression<Func<U>>) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <IEnumerable<U>>>,Expression<Func<U>>) |
| JoinQueryOver<U>(Expression<Func<TSubType,IEnumerable<U>>>,JoinType) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,IEnumerable<U>>>,JoinType) |
| JoinQueryOver<U>(Expression<Func<IEnumerable<U>>>,JoinType) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <IEnumerable<U>>>,JoinType) |
| JoinQueryOver<U>(Expression<Func<TSubType,IEnumerable<U>>>,Expression <Func<U>>,JoinType) | N/A | N/A | N/A | N/A | N/A | 3 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,IEnumerable<U>>>,Expression<Func<U>>,JoinType) |
| JoinQueryOver<U>(Expression<Func<IEnumerable<U>>>,Expression<Func<U>> ,JoinType) | N/A | N/A | N/A | N/A | N/A | 3 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <IEnumerable<U>>>,Expression<Func<U>>,JoinType) |
| Add(Type,ICriteria) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 14 | NHibernate.IMultiCriteria.Add(Type,ICriteria) |
| Add<T>(ICriteria) | N/A | N/A | N/A | N/A | N/A | 1 | N/A | 14 | NHibernate.IMultiCriteria.Add<T>(ICriteria) |
| Add<T>(String,ICriteria) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 14 | NHibernate.IMultiCriteria.Add<T>(String,ICriteria) |
| Add<T>(DetachedCriteria) | N/A | N/A | N/A | N/A | N/A | 1 | N/A | 14 | NHibernate.IMultiCriteria.Add<T>(DetachedCriteria) |
| Add<T>(String,DetachedCriteria) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 14 | NHibernate.IMultiCriteria.Add<T>(String,DetachedCriteria) |
| Add(ICriteria) | N/A | N/A | N/A | N/A | N/A | 1 | N/A | 14 | NHibernate.IMultiCriteria.Add(ICriteria) |
| Add(String,ICriteria) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 14 | NHibernate.IMultiCriteria.Add(String,ICriteria) |
| Add(DetachedCriteria) | N/A | N/A | N/A | N/A | N/A | 1 | N/A | 14 | NHibernate.IMultiCriteria.Add(DetachedCriteria) |
| Add(String,DetachedCriteria) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 14 | NHibernate.IMultiCriteria.Add(String,DetachedCriteria) |
| Add(Type,IQueryOver) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 14 | NHibernate.IMultiCriteria.Add(Type,IQueryOver) |
| Add<T>(IQueryOver<T>) | N/A | N/A | N/A | N/A | N/A | 1 | N/A | 14 | NHibernate.IMultiCriteria.Add<T>(IQueryOver<T>) |
| Add<U>(IQueryOver) | N/A | N/A | N/A | N/A | N/A | 1 | N/A | 14 | NHibernate.IMultiCriteria.Add<U>(IQueryOver) |
| Add<T>(String,IQueryOver<T>) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 14 | NHibernate.IMultiCriteria.Add<T>(String,IQueryOver<T>) |
| Add<U>(String,IQueryOver) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 14 | NHibernate.IMultiCriteria.Add<U>(String,IQueryOver) |
| OnFlushDirty(Object,Object,Object[],Object[],String[],IType[]) | 1 | 6 | 1 | 1 | 0 | 6 | 0 | 1 | NHibernate.EmptyInterceptor.OnFlushDirty(Object,Object,Object[] ,Object[],String[],IType[]) |
| FindDirty(Object,Object,Object[],Object[],String[],IType[]) | 1 | 6 | 1 | 1 | 0 | 6 | 0 | 1 | NHibernate.EmptyInterceptor.FindDirty(Object,Object,Object[],Object[] ,String[],IType[]) |
| Load(Type,Object,LockMode) | N/A | N/A | N/A | N/A | N/A | 3 | N/A | 7 | NHibernate.ISession.Load(Type,Object,LockMode) |
| Load(String,Object,LockMode) | N/A | N/A | N/A | N/A | N/A | 3 | N/A | 7 | NHibernate.ISession.Load(String,Object,LockMode) |
| Load(Type,Object) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 7 | NHibernate.ISession.Load(Type,Object) |
| Load<T>(Object,LockMode) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 7 | NHibernate.ISession.Load<T>(Object,LockMode) |
| Load<T>(Object) | N/A | N/A | N/A | N/A | N/A | 1 | N/A | 7 | NHibernate.ISession.Load<T>(Object) |
| Load(String,Object) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 7 | NHibernate.ISession.Load(String,Object) |
| Load(Object,Object) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 7 | NHibernate.ISession.Load(Object,Object) |
| Add(Type,IQuery) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 9 | NHibernate.IMultiQuery.Add(Type,IQuery) |
| Add<T>(IQuery) | N/A | N/A | N/A | N/A | N/A | 1 | N/A | 9 | NHibernate.IMultiQuery.Add<T>(IQuery) |
| Add<T>(String,IQuery) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 9 | NHibernate.IMultiQuery.Add<T>(String,IQuery) |
| Add<T>(String,String) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 9 | NHibernate.IMultiQuery.Add<T>(String,String) |
| Add<T>(String) | N/A | N/A | N/A | N/A | N/A | 1 | N/A | 9 | NHibernate.IMultiQuery.Add<T>(String) |
| Add(String,IQuery) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 9 | NHibernate.IMultiQuery.Add(String,IQuery) |
| Add(IQuery) | N/A | N/A | N/A | N/A | N/A | 1 | N/A | 9 | NHibernate.IMultiQuery.Add(IQuery) |
| Add(String,String) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 9 | NHibernate.IMultiQuery.Add(String,String) |
| Add(String) | N/A | N/A | N/A | N/A | N/A | 1 | N/A | 9 | NHibernate.IMultiQuery.Add(String) |
| ParseTypeName(String) | 30 | 238 | 9 | 14 | 2 | 1 | 12 | 1 | NHibernate.Util.TypeNameParser.ParseTypeName(String) |
| MoveNext() | 28 | 245 | 11 | 22 | 4 | 0 | 0 | 1 | NHibernate.Util.TypeNameParser+<GenericTypesArguments>d__0.MoveNext() |
| TypeFromAssembly(AssemblyQualifiedTypeName,Boolean) | 24 | 130 | 9 | 9 | 6 | 2 | 4 | 2 | NHibernate.Util.ReflectHelper.TypeFromAssembly (AssemblyQualifiedTypeName,Boolean) |
| ReplaceElements(Object,Object,ICollectionPersister,Object,IDictionary ,ISessionImplementor) | N/A | N/A | N/A | N/A | N/A | 6 | N/A | 1 | NHibernate.UserTypes.IUserCollectionType.ReplaceElements(Object,Object ,ICollectionPersister,Object,IDictionary,ISessionImplementor) |
| Replace(Object,Object,ISessionImplementor,Object,IDictionary ,ForeignKeyDirection) | N/A | N/A | N/A | N/A | N/A | 6 | N/A | 2 | NHibernate.Type.IType.Replace(Object,Object,ISessionImplementor,Object ,IDictionary,ForeignKeyDirection) |
| Replace(Object,Object,ISessionImplementor,Object,IDictionary ,ForeignKeyDirection) | 5 | 40 | 3 | 5 | 1 | 6 | 2 | 2 | NHibernate.Type.AbstractType.Replace(Object,Object,ISessionImplementor ,Object,IDictionary,ForeignKeyDirection) |
| Replace(Object,Object,ISessionImplementor,Object,IDictionary ,ForeignKeyDirection) | 7 | 51 | 3 | 4 | 1 | 6 | 3 | 2 | NHibernate.Type.ComponentType.Replace(Object,Object ,ISessionImplementor,Object,IDictionary,ForeignKeyDirection) |
| .ctor(String,ForeignKeyDirection,String,Boolean,Boolean,Boolean,String ,String) | 4 | 22 | 1 | 1 | 0 | 8 | 0 | 1 | NHibernate.Type.OneToOneType..ctor(String,ForeignKeyDirection,String ,Boolean,Boolean,Boolean,String,String) |
| Replace(Object[],Object[],IType[],ISessionImplementor,Object ,IDictionary) | 6 | 44 | 2 | 3 | 1 | 6 | 2 | 2 | NHibernate.Type.TypeHelper.Replace(Object[],Object[],IType[] ,ISessionImplementor,Object,IDictionary) |
| Replace(Object[],Object[],IType[],ISessionImplementor,Object ,IDictionary,ForeignKeyDirection) | 8 | 71 | 4 | 7 | 2 | 7 | 2 | 2 | NHibernate.Type.TypeHelper.Replace(Object[],Object[],IType[] ,ISessionImplementor,Object,IDictionary,ForeignKeyDirection) |
| ReplaceAssociations(Object[],Object[],IType[],ISessionImplementor ,Object,IDictionary,ForeignKeyDirection) | 19 | 178 | 10 | 16 | 3 | 7 | 7 | 1 | NHibernate.Type.TypeHelper.ReplaceAssociations(Object[],Object[] ,IType[],ISessionImplementor,Object,IDictionary,ForeignKeyDirection) |
| FindDirty(StandardProperty[],Object[],Object[],Boolean[][],Boolean ,ISessionImplementor) | 16 | 105 | 6 | 9 | 3 | 6 | 6 | 1 | NHibernate.Type.TypeHelper.FindDirty(StandardProperty[],Object[] ,Object[],Boolean[][],Boolean,ISessionImplementor) |
| FindModified(StandardProperty[],Object[],Object[],Boolean[][],Boolean ,ISessionImplementor) | 16 | 105 | 6 | 9 | 3 | 6 | 6 | 1 | NHibernate.Type.TypeHelper.FindModified(StandardProperty[],Object[] ,Object[],Boolean[][],Boolean,ISessionImplementor) |
| .ctor(String,String,Boolean,Boolean,Boolean,Boolean) | 2 | 16 | 1 | 1 | 0 | 6 | 0 | 3 | NHibernate.Type.ManyToOneType..ctor(String,String,Boolean,Boolean ,Boolean,Boolean) |
| .ctor(String,ForeignKeyDirection,String,Boolean,Boolean,String,String) | 1 | 14 | 1 | 1 | 0 | 7 | 0 | 1 | NHibernate.Type.SpecialOneToOneType..ctor(String,ForeignKeyDirection ,String,Boolean,Boolean,String,String) |
| RegisterDefaultNetTypes() | 25 | 404 | 1 | 7 | 1 | 0 | 0 | 1 | NHibernate.Type.TypeFactory.RegisterDefaultNetTypes() |
| HeuristicType(String,IDictionary<String,String>) | 30 | 259 | 15 | 18 | 4 | 2 | 5 | 2 | NHibernate.Type.TypeFactory.HeuristicType(String,IDictionary<String ,String>) |
| OneToOne(String,ForeignKeyDirection,String,Boolean,Boolean,Boolean ,String,String) | 1 | 14 | 1 | 1 | 0 | 8 | 0 | 1 | NHibernate.Type.TypeFactory.OneToOne(String,ForeignKeyDirection,String ,Boolean,Boolean,Boolean,String,String) |
| ManyToOne(String,String,Boolean,Boolean,Boolean,Boolean) | 1 | 12 | 1 | 1 | 0 | 6 | 0 | 3 | NHibernate.Type.TypeFactory.ManyToOne(String,String,Boolean,Boolean ,Boolean,Boolean) |
| SqlCreateString(Dialect,IMapping,String,String) | 55 | 422 | 23 | 42 | 3 | 4 | 7 | 1 | NHibernate.Mapping.Table.SqlCreateString(Dialect,IMapping,String ,String) |
| BuildSqlCreateIndexString(Dialect,String,Table,IEnumerable<Column> ,Boolean,String,String) | 12 | 87 | 5 | 10 | 2 | 7 | 3 | 1 | NHibernate.Mapping.Index.BuildSqlCreateIndexString(Dialect,String ,Table,IEnumerable<Column>,Boolean,String,String) |
| Convert(ISQLExceptionConverter,Exception,String,SqlString,Object[] ,IDictionary<String,TypedValue>) | 4 | 29 | 2 | 3 | 1 | 6 | 1 | 4 | NHibernate.Exceptions.ADOExceptionHelper.Convert (ISQLExceptionConverter,Exception,String,SqlString,Object[] ,IDictionary<String,TypedValue>) |
| InjectFieldInterceptor(Object,String,Type,ISet<String>,ISet<String> ,ISessionImplementor) | 6 | 30 | 2 | 3 | 1 | 6 | 2 | 1 | NHibernate.Intercept.FieldInterceptionHelper.InjectFieldInterceptor (Object,String,Type,ISet<String>,ISet<String>,ISessionImplementor) |
| .ctor(Object,Object[],Int32[],Boolean,Object[],Object,Object,Object ,IEntityPersister,ISessionImplementor) | 7 | 28 | 1 | 1 | 0 | 10 | 0 | 1 | NHibernate.Action.EntityUpdateAction..ctor(Object,Object[],Int32[] ,Boolean,Object[],Object,Object,Object,IEntityPersister ,ISessionImplementor) |
| Execute() | 40 | 302 | 17 | 22 | 3 | 0 | 12 | 1 | NHibernate.Action.EntityUpdateAction.Execute() |
| .ctor(Object,Object[],Object,Object,IEntityPersister,Boolean ,ISessionImplementor) | 4 | 19 | 1 | 1 | 0 | 7 | 0 | 1 | NHibernate.Action.EntityDeleteAction..ctor(Object,Object[],Object ,Object,IEntityPersister,Boolean,ISessionImplementor) |
| Execute() | 32 | 181 | 10 | 13 | 1 | 0 | 12 | 1 | NHibernate.Action.EntityDeleteAction.Execute() |
| Execute() | 31 | 182 | 11 | 13 | 2 | 0 | 7 | 1 | NHibernate.Action.CollectionUpdateAction.Execute() |
| .ctor(Object,Object[],Object,Object,IEntityPersister ,ISessionImplementor) | 3 | 16 | 1 | 1 | 0 | 6 | 0 | 1 | NHibernate.Action.EntityInsertAction..ctor(Object,Object[],Object ,Object,IEntityPersister,ISessionImplementor) |
| Execute() | 32 | 215 | 11 | 13 | 3 | 0 | 12 | 1 | NHibernate.Action.EntityInsertAction.Execute() |
| .ctor(ISessionImplementor,ISet<String>) | 25 | 133 | 6 | 10 | 3 | 2 | 9 | 2 | NHibernate.Action.BulkOperationCleanupAction..ctor(ISessionImplementor ,ISet<String>) |
| InfoString(Type,Object) | 11 | 64 | 3 | 5 | 1 | 2 | 1 | 10 | NHibernate.Impl.MessageHelper.InfoString(Type,Object) |
| InfoString(IEntityPersister,Object,ISessionFactoryImplementor) | 11 | 64 | 3 | 5 | 1 | 3 | 1 | 10 | NHibernate.Impl.MessageHelper.InfoString(IEntityPersister,Object ,ISessionFactoryImplementor) |
| InfoString(IEntityPersister,Object,IType,ISessionFactoryImplementor) | 11 | 67 | 3 | 5 | 1 | 4 | 1 | 10 | NHibernate.Impl.MessageHelper.InfoString(IEntityPersister,Object,IType ,ISessionFactoryImplementor) |
| InfoString(IEntityPersister,Object[],ISessionFactoryImplementor) | 14 | 90 | 4 | 6 | 2 | 3 | 2 | 10 | NHibernate.Impl.MessageHelper.InfoString(IEntityPersister,Object[] ,ISessionFactoryImplementor) |
| InfoString(IEntityPersister,Object) | 11 | 64 | 3 | 5 | 1 | 2 | 1 | 10 | NHibernate.Impl.MessageHelper.InfoString(IEntityPersister,Object) |
| InfoString(IEntityPersister) | 7 | 39 | 2 | 3 | 1 | 1 | 1 | 10 | NHibernate.Impl.MessageHelper.InfoString(IEntityPersister) |
| InfoString(ICollectionPersister,Object) | 11 | 64 | 3 | 5 | 1 | 2 | 1 | 10 | NHibernate.Impl.MessageHelper.InfoString(ICollectionPersister,Object) |
| InfoString(String,String,Object) | 2 | 27 | 2 | 2 | 1 | 3 | 1 | 10 | NHibernate.Impl.MessageHelper.InfoString(String,String,Object) |
| InfoString(ICollectionPersister,Object,ISessionFactoryImplementor) | 11 | 69 | 3 | 5 | 1 | 3 | 1 | 10 | NHibernate.Impl.MessageHelper.InfoString(ICollectionPersister,Object ,ISessionFactoryImplementor) |
| InfoString(String,Object) | 2 | 27 | 3 | 3 | 1 | 2 | 1 | 10 | NHibernate.Impl.MessageHelper.InfoString(String,Object) |
| VerifyParameters(Boolean) | 20 | 208 | 12 | 16 | 3 | 1 | 4 | 2 | NHibernate.Impl.AbstractQueryImpl.VerifyParameters(Boolean) |
| ExpandParameterList(String,String,TypedValue,IDictionary<String ,TypedValue>) | 21 | 146 | 6 | 12 | 2 | 4 | 9 | 1 | NHibernate.Impl.AbstractQueryImpl.ExpandParameterList(String,String ,TypedValue,IDictionary<String,TypedValue>) |
| .ctor(String,IList<INativeSQLQueryReturn>,ICollection<String> ,FlushMode,Boolean,ISessionImplementor,ParameterMetadata) | 4 | 19 | 1 | 1 | 0 | 7 | 0 | 5 | NHibernate.Impl.SqlQueryImpl..ctor(String,IList<INativeSQLQueryReturn> ,ICollection<String>,FlushMode,Boolean,ISessionImplementor ,ParameterMetadata) |
| .ctor(String,String[],Type[],LockMode[],ISessionImplementor ,ICollection<String>,FlushMode,ParameterMetadata) | 9 | 60 | 3 | 5 | 2 | 8 | 2 | 5 | NHibernate.Impl.SqlQueryImpl..ctor(String,String[],Type[],LockMode[] ,ISessionImplementor,ICollection<String>,FlushMode,ParameterMetadata) |
| SetQueryProperties(IQuery) | 52 | 333 | 14 | 31 | 2 | 1 | 9 | 1 | NHibernate.Impl.AbstractDetachedQuery.SetQueryProperties(IQuery) |
| SetParametersTo(IDetachedQuery) | 35 | 216 | 8 | 23 | 2 | 1 | 7 | 1 | NHibernate.Impl.AbstractDetachedQuery.SetParametersTo(IDetachedQuery) |
| .ctor(IDataReader,IDbCommand,ISessionImplementor,IType[],String[][] ,RowSelection,HolderInstantiator) | 10 | 38 | 1 | 1 | 0 | 7 | 0 | 1 | NHibernate.Impl.EnumerableImpl..ctor(IDataReader,IDbCommand ,ISessionImplementor,IType[],String[][],RowSelection ,HolderInstantiator) |
| .ctor(CriteriaImpl,ICriteria,String,String,JoinType,ICriterion) | 11 | 49 | 2 | 2 | 1 | 6 | 0 | 3 | NHibernate.Impl.CriteriaImpl+Subcriteria..ctor(CriteriaImpl,ICriteria ,String,String,JoinType,ICriterion) |
Statistics
| Stat | # lines of code (LOC) | # IL instructions | Cyclomatic Complexity (CC) | IL Cyclomatic Complexity (ILCC) | IL Nesting Depth | # Parameters | # Variables | # Overloads |
|---|---|---|---|---|---|---|---|---|
| Sum: | 11 368 | 81 219 | 3 400 | 4 838 | 829 | 1 907 | 2 173 | 2 948 |
| Average: | 22.422 | 160.2 | 6.7061 | 9.5424 | 1.6351 | 3.2432 | 4.286 | 5.0136 |
| Minimum: | 1 | 3 | 1 | 1 | 0 | 0 | 0 | 1 |
| Maximum: | 401 | 4 892 | 64 | 80 | 9 | 22 | 46 | 16 |
| Standard deviation: | 33.817 | 315.47 | 8.5816 | 12.255 | 1.6932 | 2.791 | 6.1544 | 5.328 |
| Variance: | 1 143 | 99 520 | 73.643 | 150.18 | 2.8669 | 7.7895 | 37.877 | 28.388 |
| Rule warning: Methods too big |
// <Name>Methods too big</Name>
warnif count > 0 from m in JustMyCode.Methods where
m.NbLinesOfCode > 30 ||
m.NbILInstructions > 200
orderby m.NbLinesOfCode descending,
m.NbILInstructions descending
select new { m, m.NbLinesOfCode, m.NbILInstructions }
// Methods where NbLinesOfCode > 30 or NbILInstructions > 200
// are extremely complex and should be split in smaller methods.
// See the definition of the NbLinesOfCode metric here
// http://www.ndepend.com/Metrics.aspx#NbLinesOfCode
warnif count > 0 from m in JustMyCode.Methods where
m.NbLinesOfCode > 30 ||
m.NbILInstructions > 200
orderby m.NbLinesOfCode descending,
m.NbILInstructions descending
select new { m, m.NbLinesOfCode, m.NbILInstructions }
// Methods where NbLinesOfCode > 30 or NbILInstructions > 200
// are extremely complex and should be split in smaller methods.
// See the definition of the NbLinesOfCode metric here
// http://www.ndepend.com/Metrics.aspx#NbLinesOfCode
169 methods matched
The following list of methods is truncated and contains only the first 100 methods of the 169 methods matched. All matched methods could be listed in the report by unchecking the option:
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched methods.
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched methods.
| methods | # lines of code (LOC) | # IL instructions | Full Name |
|---|---|---|---|
| methods | # lines of code (LOC) | # IL instructions | Full Name |
| .cctor() | 401 | 4 892 | NHibernate.Hql.Ast.ANTLR.HqlParser..cctor() |
| .cctor() | 282 | 3 853 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker..cctor() |
| .ctor(Collection,ICacheConcurrencyStrategy,Configuration ,ISessionFactoryImplementor) | 221 | 1 279 | NHibernate.Persister.Collection.AbstractCollectionPersister..ctor (Collection,ICacheConcurrencyStrategy,Configuration ,ISessionFactoryImplementor) |
| .ctor(PersistentClass,ICacheConcurrencyStrategy ,ISessionFactoryImplementor,IMapping) | 212 | 1 311 | NHibernate.Persister.Entity.SingleTableEntityPersister..ctor (PersistentClass,ICacheConcurrencyStrategy,ISessionFactoryImplementor ,IMapping) |
| .ctor(PersistentClass,ICacheConcurrencyStrategy ,ISessionFactoryImplementor) | 189 | 948 | NHibernate.Persister.Entity.AbstractEntityPersister..ctor (PersistentClass,ICacheConcurrencyStrategy,ISessionFactoryImplementor) |
| .ctor(PersistentClass,ICacheConcurrencyStrategy ,ISessionFactoryImplementor,IMapping) | 162 | 993 | NHibernate.Persister.Entity.JoinedSubclassEntityPersister..ctor (PersistentClass,ICacheConcurrencyStrategy,ISessionFactoryImplementor ,IMapping) |
| BuildSettings(IDictionary<String,String>) | 136 | 768 | NHibernate.Cfg.SettingsFactory.BuildSettings(IDictionary<String,String >) |
| .ctor(Configuration,IMapping,Settings,EventListeners) | 135 | 820 | NHibernate.Impl.SessionFactoryImpl..ctor(Configuration,IMapping ,Settings,EventListeners) |
| .ctor(PersistentClass,ISessionFactoryImplementor) | 131 | 842 | NHibernate.Tuple.Entity.EntityMetamodel..ctor(PersistentClass ,ISessionFactoryImplementor) |
| Token(String,QueryTranslator) | 105 | 624 | NHibernate.Hql.Classic.FromParser.Token(String,QueryTranslator) |
| .ctor(ICustomQuery,ISessionFactoryImplementor) | 105 | 514 | NHibernate.Loader.Custom.CustomLoader..ctor(ICustomQuery ,ISessionFactoryImplementor) |
| Token(String,QueryTranslator) | 102 | 687 | NHibernate.Hql.Classic.SelectParser.Token(String,QueryTranslator) |
| .ctor() | 96 | 618 | NHibernate.Dialect.FirebirdDialect..ctor() |
| .ctor() | 91 | 584 | NHibernate.Dialect.DB2Dialect..ctor() |
| MoveNext() | 86 | 684 | NHibernate.Dialect .Dialect+QuotedAndParenthesisStringTokenizer+GetEnumerator>d__0 .MoveNext() |
| RenderSql() | 85 | 548 | NHibernate.Hql.Classic.QueryTranslator.RenderSql() |
| .ctor() | 85 | 525 | NHibernate.Dialect.MsSql2000Dialect..ctor() |
| .ctor(PersistentClass,ICacheConcurrencyStrategy ,ISessionFactoryImplementor,IMapping) | 83 | 566 | NHibernate.Persister.Entity.UnionSubclassEntityPersister..ctor (PersistentClass,ICacheConcurrencyStrategy,ISessionFactoryImplementor ,IMapping) |
| PrepareParameterTypes(SqlString,ISessionFactoryImplementor ,QueryParameters+GetNamedParameterLocations,Int32,Boolean,Boolean) | 79 | 472 | NHibernate.Engine.QueryParameters.PrepareParameterTypes(SqlString ,ISessionFactoryImplementor,QueryParameters+GetNamedParameterLocations ,Int32,Boolean,Boolean) |
| BindPropertyResults(String,HbmReturnDiscriminator,HbmReturnProperty[] ,PersistentClass) | 77 | 426 | NHibernate.Cfg.XmlHbmBinding.ResultSetMappingBinder .BindPropertyResults(String,HbmReturnDiscriminator,HbmReturnProperty[] ,PersistentClass) |
| Create(IToken) | 75 | 190 | NHibernate.Hql.Ast.ANTLR.Tree.HqlSqlWalkerTreeAdaptor.Create(IToken) |
| Bind(IEnumerable<IEntityPropertyMapping>,Table,IDictionary<String ,MetaAttribute>,Action<Property>,Action<Property>) | 73 | 556 | NHibernate.Cfg.XmlHbmBinding.PropertiesBinder.Bind(IEnumerable <IEntityPropertyMapping>,Table,IDictionary<String,MetaAttribute> ,Action<Property>,Action<Property>) |
| SetListeners(ListenerType,Object[]) | 73 | 270 | NHibernate.Cfg.Configuration.SetListeners(ListenerType,Object[]) |
| DoList() | 72 | 503 | NHibernate.Impl.MultiQueryImpl.DoList() |
| AppendListeners(ListenerType,Object[]) | 71 | 392 | NHibernate.Cfg.Configuration.AppendListeners(ListenerType,Object[]) |
| .cctor() | 71 | 305 | NHibernate.Hql.Classic.WhereParser..cctor() |
| ClearListeners(ListenerType) | 71 | 256 | NHibernate.Cfg.Configuration.ClearListeners(ListenerType) |
| DoUpdateRows(Object,IPersistentCollection,ISessionImplementor) | 68 | 477 | NHibernate.Persister.Collection.OneToManyPersister.DoUpdateRows(Object ,IPersistentCollection,ISessionImplementor) |
| RegisterFunctions() | 66 | 453 | NHibernate.Dialect.Oracle8iDialect.RegisterFunctions() |
| .ctor() | 65 | 395 | NHibernate.Dialect.OracleLiteDialect..ctor() |
| RenderWhereStringTemplate(String,String,Dialect,SQLFunctionRegistry) | 63 | 369 | NHibernate.SqlCommand.Template.RenderWhereStringTemplate(String,String ,Dialect,SQLFunctionRegistry) |
| InitializeExplicitSelectClause(FromClause) | 61 | 368 | NHibernate.Hql.Ast.ANTLR.Tree.SelectClause .InitializeExplicitSelectClause(FromClause) |
| InitializeEntity(Object,Boolean,ISessionImplementor,PreLoadEvent ,PostLoadEvent) | 60 | 401 | NHibernate.Engine.TwoPhaseLoad.InitializeEntity(Object,Boolean ,ISessionImplementor,PreLoadEvent,PostLoadEvent) |
| RenderScalarSelect() | 59 | 414 | NHibernate.Hql.Classic.QueryTranslator.RenderScalarSelect() |
| Parse(String,ParameterParser+IRecognizer) | 57 | 410 | NHibernate.Engine.Query.ParameterParser.Parse(String ,ParameterParser+IRecognizer) |
| ProcessFilters(SqlString,ISessionImplementor) | 57 | 334 | NHibernate.Engine.QueryParameters.ProcessFilters(SqlString ,ISessionImplementor) |
| GenerateCustomReturns(Boolean) | 56 | 491 | NHibernate.Loader.Custom.Sql.SQLQueryReturnProcessor .GenerateCustomReturns(Boolean) |
| DoConfigure(ISessionFactoryConfiguration) | 56 | 466 | NHibernate.Cfg.Configuration.DoConfigure(ISessionFactoryConfiguration) |
| BindCollection(ICollectionPropertiesMapping,Collection,String,String ,Type,IDictionary<String,MetaAttribute>) | 56 | 397 | NHibernate.Cfg.XmlHbmBinding.CollectionBinder.BindCollection (ICollectionPropertiesMapping,Collection,String,String,Type ,IDictionary<String,MetaAttribute>) |
| NegateNode(IASTNode) | 56 | 294 | NHibernate.Hql.Ast.ANTLR.HqlParser.NegateNode(IASTNode) |
| SqlCreateString(Dialect,IMapping,String,String) | 55 | 422 | NHibernate.Mapping.Table.SqlCreateString(Dialect,IMapping,String ,String) |
| Resolve(Boolean,Boolean,String,IASTNode) | 54 | 308 | NHibernate.Hql.Ast.ANTLR.Tree.IndexNode.Resolve(Boolean,Boolean,String ,IASTNode) |
| GetResultsFromDatabase(IList) | 53 | 385 | NHibernate.Impl.MultiCriteriaImpl.GetResultsFromDatabase(IList) |
| BindParameters(IDbCommand,Int32,ISessionImplementor) | 53 | 328 | NHibernate.Engine.QueryParameters.BindParameters(IDbCommand,Int32 ,ISessionImplementor) |
| .cctor() | 53 | 139 | NHibernate.NHibernateUtil..cctor() |
| ToSqlString() | 52 | 386 | NHibernate.SqlCommand.SqlUpdateBuilder.ToSqlString() |
| Token(String,QueryTranslator) | 52 | 380 | NHibernate.Hql.Classic.WhereParser.Token(String,QueryTranslator) |
| SetQueryProperties(IQuery) | 52 | 333 | NHibernate.Impl.AbstractDetachedQuery.SetQueryProperties(IQuery) |
| Initialize(SelectClause) | 52 | 316 | NHibernate.Hql.Ast.ANTLR.Loader.QueryLoader.Initialize(SelectClause) |
| GenerateSchemaUpdateScript(Dialect,DatabaseMetadata) | 49 | 412 | NHibernate.Cfg.Configuration.GenerateSchemaUpdateScript(Dialect ,DatabaseMetadata) |
| RegisterStringFunctions() | 49 | 378 | NHibernate.Dialect.SybaseSQLAnywhere10Dialect.RegisterStringFunctions( ) |
| GenerateSchemaCreationScript(Dialect) | 49 | 372 | NHibernate.Cfg.Configuration.GenerateSchemaCreationScript(Dialect) |
| .cctor() | 49 | 221 | NHibernate.SqlCommand.QuerySelect..cctor() |
| .cctor() | 46 | 559 | NHibernate.Impl.ExpressionProcessor..cctor() |
| .ctor() | 46 | 279 | NHibernate.Dialect.Dialect..ctor() |
| Token(String,QueryTranslator) | 44 | 273 | NHibernate.Hql.Classic.ClauseParser.Token(String,QueryTranslator) |
| PostProcessInsert(IASTNode) | 44 | 262 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.PostProcessInsert(IASTNode) |
| .ctor() | 44 | 239 | NHibernate.Dialect.MySQLDialect..ctor() |
| .cctor() | 44 | 171 | NHibernate.SqlCommand.Template..cctor() |
| Delete(Object,Object,Int32,Object,SqlCommandInfo,ISessionImplementor ,Object[]) | 43 | 355 | NHibernate.Persister.Entity.AbstractEntityPersister.Delete(Object ,Object,Int32,Object,SqlCommandInfo,ISessionImplementor,Object[]) |
| Render(IList,ISessionFactoryImplementor) | 43 | 275 | NHibernate.Dialect.Function.AnsiTrimEmulationFunction.Render(IList ,ISessionFactoryImplementor) |
| .ctor() | 43 | 255 | NHibernate.Dialect.InformixDialect..ctor() |
| ToSqlString() | 42 | 332 | NHibernate.SqlCommand.SqlInsertBuilder.ToSqlString() |
| ConcreteQueries(String,ISessionFactoryImplementor) | 42 | 262 | NHibernate.Hql.QuerySplitter.ConcreteQueries(String ,ISessionFactoryImplementor) |
| Execute(Action<String>,Boolean) | 42 | 221 | NHibernate.Tool.hbm2ddl.SchemaUpdate.Execute(Action<String>,Boolean) |
| SortInsertActions() | 42 | 215 | NHibernate.Engine.ActionQueue.SortInsertActions() |
| VisitBinaryExpression(BinaryExpression) | 41 | 481 | NHibernate.Linq.Visitors.HqlGeneratorExpressionTreeVisitor .VisitBinaryExpression(BinaryExpression) |
| Perform() | 41 | 307 | NHibernate.AdoNet.Util.BasicFormatter+FormatProcess.Perform() |
| GenerateDropSchemaScript(Dialect) | 41 | 297 | NHibernate.Cfg.Configuration.GenerateDropSchemaScript(Dialect) |
| GenerateSubquery(PersistentClass,IMapping) | 41 | 265 | NHibernate.Persister.Entity.UnionSubclassEntityPersister .GenerateSubquery(PersistentClass,IMapping) |
| RenderOrderByStringTemplate(String,Dialect,SQLFunctionRegistry) | 41 | 252 | NHibernate.SqlCommand.Template.RenderOrderByStringTemplate(String ,Dialect,SQLFunctionRegistry) |
| Execute() | 40 | 302 | NHibernate.Action.EntityUpdateAction.Execute() |
| OnRefresh(RefreshEvent,IDictionary) | 40 | 267 | NHibernate.Event.Default.DefaultRefreshEventListener.OnRefresh (RefreshEvent,IDictionary) |
| .ctor() | 40 | 223 | NHibernate.Dialect.SybaseASA9Dialect..ctor() |
| DeleteRows(IPersistentCollection,Object,ISessionImplementor) | 39 | 292 | NHibernate.Persister.Collection.AbstractCollectionPersister.DeleteRows (IPersistentCollection,Object,ISessionImplementor) |
| DoUpdateRows(Object,IPersistentCollection,ISessionImplementor) | 39 | 286 | NHibernate.Persister.Collection.BasicCollectionPersister.DoUpdateRows (Object,IPersistentCollection,ISessionImplementor) |
| Hydrate(IDataReader,Object,Object,ILoadable,String[][],Boolean ,ISessionImplementor) | 39 | 262 | NHibernate.Persister.Entity.AbstractEntityPersister.Hydrate (IDataReader,Object,Object,ILoadable,String[][],Boolean ,ISessionImplementor) |
| ConcreteQueries(String,ISessionFactoryImplementor) | 39 | 246 | NHibernate.Hql.Classic.QueryTranslator.ConcreteQueries(String ,ISessionFactoryImplementor) |
| Update(Object,Object[],Object[],Object,Boolean[],Int32,Object,Object ,SqlCommandInfo,ISessionImplementor) | 38 | 350 | NHibernate.Persister.Entity.AbstractEntityPersister.Update(Object ,Object[],Object[],Object,Boolean[],Int32,Object,Object,SqlCommandInfo ,ISessionImplementor) |
| GetNaturalIdentifierSnapshot(Object,ISessionImplementor) | 38 | 307 | NHibernate.Persister.Entity.AbstractEntityPersister .GetNaturalIdentifierSnapshot(Object,ISessionImplementor) |
| PostInstantiate() | 38 | 284 | NHibernate.Persister.Entity.AbstractEntityPersister.PostInstantiate() |
| .ctor(IStatement) | 38 | 234 | NHibernate.Hql.Ast.ANTLR.Exec.MultiTableUpdateExecutor..ctor (IStatement) |
| SecondPassCompile() | 38 | 226 | NHibernate.Cfg.Configuration.SecondPassCompile() |
| RegisterMiscellaneousFunctions() | 37 | 282 | NHibernate.Dialect.SybaseSQLAnywhere10Dialect .RegisterMiscellaneousFunctions() |
| Token(String,QueryTranslator) | 37 | 258 | NHibernate.Hql.Classic.PathExpressionParser.Token(String ,QueryTranslator) |
| DoWorkInCurrentTransaction(ISessionImplementor,IDbConnection ,IDbTransaction) | 37 | 183 | NHibernate.Id.Enhanced.TableStructure.DoWorkInCurrentTransaction (ISessionImplementor,IDbConnection,IDbTransaction) |
| GenerateUpdateString(Boolean[],Int32,Object[],Boolean) | 36 | 313 | NHibernate.Persister.Entity.AbstractEntityPersister .GenerateUpdateString(Boolean[],Int32,Object[],Boolean) |
| .ctor() | 36 | 267 | NHibernate.Event.EventListeners..ctor() |
| ListenerTypeConvertFrom(String) | 36 | 266 | NHibernate.Cfg.ConfigurationSchema.CfgXmlHelper .ListenerTypeConvertFrom(String) |
| DoToken(String,QueryTranslator) | 36 | 252 | NHibernate.Hql.Classic.WhereParser.DoToken(String,QueryTranslator) |
| PerformSaveOrReplicate(Object,EntityKey,IEntityPersister,Boolean ,Object,IEventSource,Boolean) | 36 | 249 | NHibernate.Event.Default.AbstractSaveEventListener .PerformSaveOrReplicate(Object,EntityKey,IEntityPersister,Boolean ,Object,IEventSource,Boolean) |
| AddWhereFragment(JoinFragment,SqlString,QueryNode,FromElement ,HqlSqlWalker) | 36 | 241 | NHibernate.Hql.Ast.ANTLR.Util.SyntheticAndFactory.AddWhereFragment (JoinFragment,SqlString,QueryNode,FromElement,HqlSqlWalker) |
| ValidateFilterDefs() | 36 | 241 | NHibernate.Cfg.Configuration.ValidateFilterDefs() |
| PerformList(QueryParameters,ISessionImplementor,IList) | 36 | 214 | NHibernate.Engine.Query.HQLQueryPlan.PerformList(QueryParameters ,ISessionImplementor,IList) |
| .cctor() | 36 | 213 | NHibernate.Event.EventListeners..cctor() |
| OnMerge(MergeEvent,IDictionary) | 36 | 201 | NHibernate.Event.Default.DefaultMergeEventListener.OnMerge(MergeEvent ,IDictionary) |
| .cctor() | 36 | 135 | NHibernate.AdoNet.Util.BasicFormatter..cctor() |
| ListenerTypeConvertToString(ListenerType) | 36 | 115 | NHibernate.Cfg.ConfigurationSchema.CfgXmlHelper .ListenerTypeConvertToString(ListenerType) |
| GetImplementors(String) | 35 | 243 | NHibernate.Impl.SessionFactoryImpl.GetImplementors(String) |
| DoQuery(ISessionImplementor,QueryParameters,Boolean) | 35 | 218 | NHibernate.Loader.Loader.DoQuery(ISessionImplementor,QueryParameters ,Boolean) |
Statistics
| Stat | # lines of code (LOC) | # IL instructions |
|---|---|---|
| Sum: | 8 648 | 62 002 |
| Average: | 51.172 | 366.88 |
| Minimum: | 8 | 115 |
| Maximum: | 401 | 4 892 |
| Standard deviation: | 45.42 | 478.49 |
| Variance: | 2 062 | 228 951 |
| Rule warning: Methods too complex |
// <Name>Methods too complex</Name>
warnif count > 0 from m in JustMyCode.Methods where
m.CyclomaticComplexity > 20 ||
m.ILCyclomaticComplexity > 40 ||
m.ILNestingDepth > 5
orderby m.CyclomaticComplexity descending,
m.ILCyclomaticComplexity descending,
m.ILNestingDepth descending
select new { m, m.CyclomaticComplexity,
m.ILCyclomaticComplexity,
m.ILNestingDepth }
// Methods where CyclomaticComplexity > 20
// or ILCyclomaticComplexity > 40
// or ILNestingDepth > 4
// are hard to understand and maintain
// and should be split in smaller methods.
// See the definition of the complexity metrics here:
// http://www.ndepend.com/Metrics.aspx#CC
// http://www.ndepend.com/Metrics.aspx#ILCC
// http://www.NDepend.com/Metrics.aspx#ILNestingDepth
warnif count > 0 from m in JustMyCode.Methods where
m.CyclomaticComplexity > 20 ||
m.ILCyclomaticComplexity > 40 ||
m.ILNestingDepth > 5
orderby m.CyclomaticComplexity descending,
m.ILCyclomaticComplexity descending,
m.ILNestingDepth descending
select new { m, m.CyclomaticComplexity,
m.ILCyclomaticComplexity,
m.ILNestingDepth }
// Methods where CyclomaticComplexity > 20
// or ILCyclomaticComplexity > 40
// or ILNestingDepth > 4
// are hard to understand and maintain
// and should be split in smaller methods.
// See the definition of the complexity metrics here:
// http://www.ndepend.com/Metrics.aspx#CC
// http://www.ndepend.com/Metrics.aspx#ILCC
// http://www.NDepend.com/Metrics.aspx#ILNestingDepth
53 methods matched
| methods | Cyclomatic Complexity (CC) | IL Cyclomatic Complexity (ILCC) | IL Nesting Depth | Full Name |
|---|---|---|---|---|
| methods | Cyclomatic Complexity (CC) | IL Cyclomatic Complexity (ILCC) | IL Nesting Depth | Full Name |
| Create(IToken) | 64 | 40 | 5 | NHibernate.Hql.Ast.ANTLR.Tree.HqlSqlWalkerTreeAdaptor.Create(IToken) |
| VisitExpression(Expression) | 54 | 24 | 1 | NHibernate.Linq.Visitors.HqlGeneratorExpressionTreeVisitor .VisitExpression(Expression) |
| Token(String,QueryTranslator) | 46 | 57 | 3 | NHibernate.Hql.Classic.SelectParser.Token(String,QueryTranslator) |
| .ctor(PersistentClass,ICacheConcurrencyStrategy ,ISessionFactoryImplementor,IMapping) | 42 | 80 | 3 | NHibernate.Persister.Entity.SingleTableEntityPersister..ctor (PersistentClass,ICacheConcurrencyStrategy,ISessionFactoryImplementor ,IMapping) |
| Token(String,QueryTranslator) | 41 | 52 | 3 | NHibernate.Hql.Classic.FromParser.Token(String,QueryTranslator) |
| .ctor(PersistentClass,ISessionFactoryImplementor) | 40 | 64 | 4 | NHibernate.Tuple.Entity.EntityMetamodel..ctor(PersistentClass ,ISessionFactoryImplementor) |
| .ctor(Collection,ICacheConcurrencyStrategy,Configuration ,ISessionFactoryImplementor) | 39 | 78 | 3 | NHibernate.Persister.Collection.AbstractCollectionPersister..ctor (Collection,ICacheConcurrencyStrategy,Configuration ,ISessionFactoryImplementor) |
| SetListeners(ListenerType,Object[]) | 37 | 38 | 1 | NHibernate.Cfg.Configuration.SetListeners(ListenerType,Object[]) |
| ListenerTypeConvertFrom(String) | 36 | 38 | 3 | NHibernate.Cfg.ConfigurationSchema.CfgXmlHelper .ListenerTypeConvertFrom(String) |
| ClearListeners(ListenerType) | 36 | 37 | 1 | NHibernate.Cfg.Configuration.ClearListeners(ListenerType) |
| AppendListeners(ListenerType,Object[]) | 36 | 37 | 1 | NHibernate.Cfg.Configuration.AppendListeners(ListenerType,Object[]) |
| ListenerTypeConvertToString(ListenerType) | 36 | 37 | 1 | NHibernate.Cfg.ConfigurationSchema.CfgXmlHelper .ListenerTypeConvertToString(ListenerType) |
| .ctor(Configuration,IMapping,Settings,EventListeners) | 34 | 55 | 4 | NHibernate.Impl.SessionFactoryImpl..ctor(Configuration,IMapping ,Settings,EventListeners) |
| RenderWhereStringTemplate(String,String,Dialect,SQLFunctionRegistry) | 32 | 42 | 4 | NHibernate.SqlCommand.Template.RenderWhereStringTemplate(String,String ,Dialect,SQLFunctionRegistry) |
| MoveNext() | 31 | 61 | 5 | NHibernate.Dialect .Dialect+QuotedAndParenthesisStringTokenizer+GetEnumerator>d__0 .MoveNext() |
| VisitBinaryExpression(BinaryExpression) | 30 | 37 | 9 | NHibernate.Linq.Visitors.HqlGeneratorExpressionTreeVisitor .VisitBinaryExpression(BinaryExpression) |
| Token(String,QueryTranslator) | 29 | 40 | 3 | NHibernate.Hql.Classic.WhereParser.Token(String,QueryTranslator) |
| Parse(String,ParameterParser+IRecognizer) | 29 | 37 | 4 | NHibernate.Engine.Query.ParameterParser.Parse(String ,ParameterParser+IRecognizer) |
| BuildSettings(IDictionary<String,String>) | 27 | 36 | 2 | NHibernate.Cfg.SettingsFactory.BuildSettings(IDictionary<String,String >) |
| .ctor(PersistentClass,ICacheConcurrencyStrategy ,ISessionFactoryImplementor,IMapping) | 26 | 59 | 3 | NHibernate.Persister.Entity.JoinedSubclassEntityPersister..ctor (PersistentClass,ICacheConcurrencyStrategy,ISessionFactoryImplementor ,IMapping) |
| GenerateSchemaUpdateScript(Dialect,DatabaseMetadata) | 25 | 50 | 8 | NHibernate.Cfg.Configuration.GenerateSchemaUpdateScript(Dialect ,DatabaseMetadata) |
| BindPropertyResults(String,HbmReturnDiscriminator,HbmReturnProperty[] ,PersistentClass) | 24 | 40 | 4 | NHibernate.Cfg.XmlHbmBinding.ResultSetMappingBinder .BindPropertyResults(String,HbmReturnDiscriminator,HbmReturnProperty[] ,PersistentClass) |
| DoUpdateRows(Object,IPersistentCollection,ISessionImplementor) | 24 | 39 | 6 | NHibernate.Persister.Collection.OneToManyPersister.DoUpdateRows(Object ,IPersistentCollection,ISessionImplementor) |
| Bind(IEnumerable<IEntityPropertyMapping>,Table,IDictionary<String ,MetaAttribute>,Action<Property>,Action<Property>) | 24 | 34 | 3 | NHibernate.Cfg.XmlHbmBinding.PropertiesBinder.Bind(IEnumerable <IEntityPropertyMapping>,Table,IDictionary<String,MetaAttribute> ,Action<Property>,Action<Property>) |
| SqlCreateString(Dialect,IMapping,String,String) | 23 | 42 | 3 | NHibernate.Mapping.Table.SqlCreateString(Dialect,IMapping,String ,String) |
| RenderScalarSelect() | 23 | 37 | 4 | NHibernate.Hql.Classic.QueryTranslator.RenderScalarSelect() |
| DoList() | 22 | 32 | 3 | NHibernate.Impl.MultiQueryImpl.DoList() |
| Delete(Object,Object,Int32,Object,SqlCommandInfo,ISessionImplementor ,Object[]) | 22 | 29 | 3 | NHibernate.Persister.Entity.AbstractEntityPersister.Delete(Object ,Object,Int32,Object,SqlCommandInfo,ISessionImplementor,Object[]) |
| Update(Object,Object[],Object[],Object,Boolean[],Int32,Object,Object ,SqlCommandInfo,ISessionImplementor) | 22 | 27 | 4 | NHibernate.Persister.Entity.AbstractEntityPersister.Update(Object ,Object[],Object[],Object,Boolean[],Int32,Object,Object,SqlCommandInfo ,ISessionImplementor) |
| Perform() | 22 | 27 | 2 | NHibernate.AdoNet.Util.BasicFormatter+FormatProcess.Perform() |
| RenderSql() | 21 | 39 | 2 | NHibernate.Hql.Classic.QueryTranslator.RenderSql() |
| GenerateUpdateString(Boolean[],Int32,Object[],Boolean) | 21 | 31 | 5 | NHibernate.Persister.Entity.AbstractEntityPersister .GenerateUpdateString(Boolean[],Int32,Object[],Boolean) |
| BindCollection(ICollectionPropertiesMapping,Collection,String,String ,Type,IDictionary<String,MetaAttribute>) | 21 | 31 | 2 | NHibernate.Cfg.XmlHbmBinding.CollectionBinder.BindCollection (ICollectionPropertiesMapping,Collection,String,String,Type ,IDictionary<String,MetaAttribute>) |
| InitializeExplicitSelectClause(FromClause) | 21 | 30 | 6 | NHibernate.Hql.Ast.ANTLR.Tree.SelectClause .InitializeExplicitSelectClause(FromClause) |
| InitializeEntity(Object,Boolean,ISessionImplementor,PreLoadEvent ,PostLoadEvent) | 21 | 30 | 2 | NHibernate.Engine.TwoPhaseLoad.InitializeEntity(Object,Boolean ,ISessionImplementor,PreLoadEvent,PostLoadEvent) |
| .ctor(PersistentClass,ICacheConcurrencyStrategy ,ISessionFactoryImplementor) | 20 | 52 | 3 | NHibernate.Persister.Entity.AbstractEntityPersister..ctor (PersistentClass,ICacheConcurrencyStrategy,ISessionFactoryImplementor) |
| GenerateSchemaCreationScript(Dialect) | 18 | 42 | 5 | NHibernate.Cfg.Configuration.GenerateSchemaCreationScript(Dialect) |
| NegateNode(IASTNode) | 18 | 21 | 7 | NHibernate.Hql.Ast.ANTLR.HqlParser.NegateNode(IASTNode) |
| ConcreteQueries(String,ISessionFactoryImplementor) | 17 | 21 | 6 | NHibernate.Hql.QuerySplitter.ConcreteQueries(String ,ISessionFactoryImplementor) |
| ConcreteQueries(String,ISessionFactoryImplementor) | 17 | 21 | 6 | NHibernate.Hql.Classic.QueryTranslator.ConcreteQueries(String ,ISessionFactoryImplementor) |
| ProcessFilters(SqlString,ISessionImplementor) | 15 | 27 | 7 | NHibernate.Engine.QueryParameters.ProcessFilters(SqlString ,ISessionImplementor) |
| CreateJoin(String,Boolean,Boolean) | 10 | 11 | 6 | NHibernate.Persister.Entity.AbstractEntityPersister.CreateJoin(String ,Boolean,Boolean) |
| RegisterNonExists(EntityKey[],ISessionImplementor) | 9 | 11 | 6 | NHibernate.Loader.Loader.RegisterNonExists(EntityKey[] ,ISessionImplementor) |
| TypeFromAssembly(AssemblyQualifiedTypeName,Boolean) | 9 | 9 | 6 | NHibernate.Util.ReflectHelper.TypeFromAssembly (AssemblyQualifiedTypeName,Boolean) |
| IsProxeable(MethodInfo) | 9 | 8 | 6 | NHibernate.Proxy.DynProxyTypeValidator.IsProxeable(MethodInfo) |
| VisitMethodCallExpression(MethodCallExpression) | 8 | 21 | 7 | NHibernate.Linq.ReWriters.MergeAggregatingResultsInExpressionRewriter .VisitMethodCallExpression(MethodCallExpression) |
| Parse(XPathNavigator) | 8 | 9 | 7 | NHibernate.Cfg.ConfigurationSchema.ClassCacheConfiguration.Parse (XPathNavigator) |
| BuildCurrentSessionContext() | 8 | 9 | 6 | NHibernate.Impl.SessionFactoryImpl.BuildCurrentSessionContext() |
| VisitMethodCallExpression(MethodCallExpression) | 8 | 6 | 7 | NHibernate.Linq.GroupBy.GroupByAggregateDetectionVisitor .VisitMethodCallExpression(MethodCallExpression) |
| Dirty(IPersistentCollection) | 8 | 5 | 6 | NHibernate.Engine.CollectionEntry.Dirty(IPersistentCollection) |
| Parse(XPathNavigator) | 7 | 8 | 6 | NHibernate.Cfg.ConfigurationSchema.CollectionCacheConfiguration.Parse (XPathNavigator) |
| Parse(XPathNavigator) | 7 | 8 | 6 | NHibernate.Cfg.ConfigurationSchema.MappingConfiguration.Parse (XPathNavigator) |
| MoveNext() | 5 | 22 | 6 | NHibernate.Cfg.ClassExtractor+<GetRootClassesEntries>d__0.MoveNext() |
Statistics
| Stat | Cyclomatic Complexity (CC) | IL Cyclomatic Complexity (ILCC) | IL Nesting Depth |
|---|---|---|---|
| Sum: | 1 282 | 1 778 | 229 |
| Average: | 24.189 | 33.547 | 4.3208 |
| Minimum: | 5 | 5 | 1 |
| Maximum: | 64 | 80 | 9 |
| Standard deviation: | 12.704 | 17.559 | 2.0073 |
| Variance: | 161.4 | 308.32 | 4.0292 |
| Rule warning: Methods potentially poorly commented |
// <Name>Methods potentially poorly commented</Name>
warnif count > 0 from m in JustMyCode.Methods where
m.PercentageComment < 20 &&
m.NbLinesOfCode > 20
orderby m.PercentageComment ascending
select new { m, m.PercentageComment, m.NbLinesOfCode, m.NbLinesOfComment }
// Methods where %Comment < 20 and that have
// at least 20 lines of code might need to be more commented.
// See the definition of the Comments metric here
// http://www.ndepend.com/Metrics.aspx#PercentageComment
// http://www.ndepend.com/Metrics.aspx#NbLinesOfComment
warnif count > 0 from m in JustMyCode.Methods where
m.PercentageComment < 20 &&
m.NbLinesOfCode > 20
orderby m.PercentageComment ascending
select new { m, m.PercentageComment, m.NbLinesOfCode, m.NbLinesOfComment }
// Methods where %Comment < 20 and that have
// at least 20 lines of code might need to be more commented.
// See the definition of the Comments metric here
// http://www.ndepend.com/Metrics.aspx#PercentageComment
// http://www.ndepend.com/Metrics.aspx#NbLinesOfComment
253 methods matched
The following list of methods is truncated and contains only the first 100 methods of the 253 methods matched. All matched methods could be listed in the report by unchecking the option:
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched methods.
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched methods.
| methods | Percentage Comment | # lines of code (LOC) | # lines of comment | Full Name |
|---|---|---|---|---|
| methods | Percentage Comment | # lines of code (LOC) | # lines of comment | Full Name |
| .cctor() | 0 | 53 | 0 | NHibernate.NHibernateUtil..cctor() |
| .cctor() | 0 | 23 | 0 | NHibernate.Properties.PropertyAccessorFactory..cctor() |
| get_CascadeStyle() | 0 | 25 | 0 | NHibernate.Mapping.Property.get_CascadeStyle() |
| SqlConstraintString(Dialect,String,String,String) | 0 | 21 | 0 | NHibernate.Mapping.ForeignKey.SqlConstraintString(Dialect,String ,String,String) |
| DetermineNumberOfPreceedingParametersForEachQuery(SqlString) | 0 | 24 | 0 | NHibernate.Driver.SqlStringFormatter .DetermineNumberOfPreceedingParametersForEachQuery(SqlString) |
| ToString() | 0 | 22 | 0 | NHibernate.Impl.CriteriaImpl.ToString() |
| Clone() | 0 | 29 | 0 | NHibernate.Impl.CriteriaImpl.Clone() |
| ListUsingQueryCache() | 0 | 23 | 0 | NHibernate.Impl.MultiCriteriaImpl.ListUsingQueryCache() |
| .ctor(IDbConnection,SessionFactoryImpl,Boolean,Int64,IInterceptor ,EntityMode,Boolean,Boolean,ConnectionReleaseMode) | 0 | 24 | 0 | NHibernate.Impl.SessionImpl..ctor(IDbConnection,SessionFactoryImpl ,Boolean,Int64,IInterceptor,EntityMode,Boolean,Boolean ,ConnectionReleaseMode) |
| ListUsingQueryCache() | 0 | 27 | 0 | NHibernate.Impl.MultiQueryImpl.ListUsingQueryCache() |
| CreateCombinedQueryParameters() | 0 | 21 | 0 | NHibernate.Impl.MultiQueryImpl.CreateCombinedQueryParameters() |
| Close() | 0 | 28 | 0 | NHibernate.Impl.SessionFactoryImpl.Close() |
| .cctor() | 0 | 46 | 0 | NHibernate.Impl.ExpressionProcessor..cctor() |
| Substring(Int32,Int32) | 0 | 29 | 0 | NHibernate.SqlCommand.SqlString.Substring(Int32,Int32) |
| Insert(Int32,String) | 0 | 30 | 0 | NHibernate.SqlCommand.SqlString.Insert(Int32,String) |
| Parse(String) | 0 | 23 | 0 | NHibernate.SqlCommand.SqlString.Parse(String) |
| ToQuerySqlString() | 0 | 31 | 0 | NHibernate.SqlCommand.QuerySelect.ToQuerySqlString() |
| .ctor(Dialect,IDictionary<String,LockMode>,IDictionary<String,String[] >) | 0 | 24 | 0 | NHibernate.SqlCommand.ForUpdateFragment..ctor(Dialect,IDictionary <String,LockMode>,IDictionary<String,String[]>) |
| .cctor() | 0 | 44 | 0 | NHibernate.SqlCommand.Template..cctor() |
| ToSqlString() | 0 | 22 | 0 | NHibernate.SqlCommand.InsertSelect.ToSqlString() |
| Clear() | 0 | 34 | 0 | NHibernate.Stat.StatisticsImpl.Clear() |
| LogSummary() | 0 | 29 | 0 | NHibernate.Stat.StatisticsImpl.LogSummary() |
| .cctor() | 0 | 21 | 0 | NHibernate.SqlTypes.SqlTypeFactory..cctor() |
| .ctor() | 0 | 91 | 0 | NHibernate.Dialect.DB2Dialect..ctor() |
| .ctor() | 0 | 31 | 0 | NHibernate.Dialect.SQLiteDialect..ctor() |
| Qualify(String,String,String) | 0 | 28 | 0 | NHibernate.Dialect.SQLiteDialect.Qualify(String,String,String) |
| RegisterMiscellaneousFunctions() | 0 | 37 | 0 | NHibernate.Dialect.SybaseSQLAnywhere10Dialect .RegisterMiscellaneousFunctions() |
| SelectString(IList<OuterJoinableAssociation>) | 0 | 21 | 0 | NHibernate.Loader.JoinWalker.SelectString(IList <OuterJoinableAssociation>) |
| .ctor(ISessionFactoryImplementor,CriteriaImpl,String,String) | 0 | 23 | 0 | NHibernate.Loader.Criteria.CriteriaQueryTranslator..ctor (ISessionFactoryImplementor,CriteriaImpl,String,String) |
| GetQueryParameters() | 0 | 30 | 0 | NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetQueryParameters( ) |
| DetermineAppropriateOwnerPersister(NonScalarReturn) | 0 | 23 | 0 | NHibernate.Loader.Custom.CustomLoader .DetermineAppropriateOwnerPersister(NonScalarReturn) |
| GenerateCustomReturns(Boolean) | 0 | 56 | 0 | NHibernate.Loader.Custom.Sql.SQLQueryReturnProcessor .GenerateCustomReturns(Boolean) |
| PropertySelectFragment(String,String,Boolean) | 0 | 26 | 0 | NHibernate.Persister.Entity.AbstractEntityPersister .PropertySelectFragment(String,String,Boolean) |
| LogStaticSQL() | 0 | 24 | 0 | NHibernate.Persister.Entity.AbstractEntityPersister.LogStaticSQL() |
| CreateSelect(Int32[],Int32[]) | 0 | 21 | 0 | NHibernate.Persister.Entity.AbstractEntityPersister.CreateSelect (Int32[],Int32[]) |
| .ctor(PersistentClass,ICacheConcurrencyStrategy ,ISessionFactoryImplementor,IMapping) | 0 | 212 | 2 | NHibernate.Persister.Entity.SingleTableEntityPersister..ctor (PersistentClass,ICacheConcurrencyStrategy,ISessionFactoryImplementor ,IMapping) |
| ToColumns(String,String) | 0 | 28 | 0 | NHibernate.Persister.Collection.CollectionPropertyMapping.ToColumns (String,String) |
| GetTypedValues(ICriteria,ICriteriaQuery) | 0 | 24 | 0 | NHibernate.Criterion.InExpression.GetTypedValues(ICriteria ,ICriteriaQuery) |
| ToSqlString(ICriteria,Int32,ICriteriaQuery,IDictionary<String,IFilter> ) | 0 | 21 | 0 | NHibernate.Criterion.SqlFunctionProjection.ToSqlString(ICriteria,Int32 ,ICriteriaQuery,IDictionary<String,IFilter>) |
| .ctor(String,String,IDictionary<String,IFilter> ,ISessionFactoryImplementor) | 0 | 28 | 0 | NHibernate.Hql.Classic.QueryTranslator..ctor(String,String,IDictionary <String,IFilter>,ISessionFactoryImplementor) |
| BuildParameterMetadata(IParameterTranslations,String) | 0 | 24 | 0 | NHibernate.Hql.Classic.QueryTranslator.BuildParameterMetadata (IParameterTranslations,String) |
| .cctor() | 0 | 25 | 0 | NHibernate.Hql.Classic.PreprocessingParser..cctor() |
| .ctor(IASTFactory,Type) | 0 | 24 | 0 | NHibernate.Hql.Ast.HqlIdent..ctor(IASTFactory,Type) |
| .cctor() | 0 | 401 | 0 | NHibernate.Hql.Ast.ANTLR.HqlParser..cctor() |
| HandleWithFragment(FromElement,IASTNode) | 0 | 21 | 0 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.HandleWithFragment(FromElement ,IASTNode) |
| .cctor() | 0 | 282 | 0 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker..cctor() |
| AddChild(IASTNode) | 0 | 23 | 0 | NHibernate.Hql.Ast.ANTLR.Tree.ASTNode.AddChild(IASTNode) |
| ExtractMutationTexts(IASTNode,Int32) | 0 | 25 | 0 | NHibernate.Hql.Ast.ANTLR.Tree.BinaryLogicOperatorNode .ExtractMutationTexts(IASTNode,Int32) |
| ExtractMutationTexts(IASTNode,Int32) | 0 | 27 | 0 | NHibernate.Hql.Ast.ANTLR.Tree.AbstractNullnessCheckNode .ExtractMutationTexts(IASTNode,Int32) |
| .ctor(IStatement) | 0 | 38 | 0 | NHibernate.Hql.Ast.ANTLR.Exec.MultiTableUpdateExecutor..ctor (IStatement) |
| Equals(Object) | 0 | 30 | 0 | NHibernate.Cache.QueryKey.Equals(Object) |
| ComputeHashCode() | 0 | 33 | 0 | NHibernate.Cache.QueryKey.ComputeHashCode() |
| ToString() | 0 | 27 | 0 | NHibernate.Cache.QueryKey.ToString() |
| Configure(IType,IDictionary<String,String>,Dialect) | 0 | 21 | 0 | NHibernate.Id.IncrementGenerator.Configure(IType,IDictionary<String ,String>,Dialect) |
| DoWorkInCurrentTransaction(ISessionImplementor,IDbConnection ,IDbTransaction) | 0 | 37 | 0 | NHibernate.Id.Enhanced.TableStructure.DoWorkInCurrentTransaction (ISessionImplementor,IDbConnection,IDbTransaction) |
| .cctor() | 0 | 36 | 0 | NHibernate.Event.EventListeners..cctor() |
| InitializeListeners(Configuration) | 0 | 35 | 0 | NHibernate.Event.EventListeners.InitializeListeners(Configuration) |
| .ctor() | 0 | 36 | 0 | NHibernate.Event.EventListeners..ctor() |
| OnInitializeCollection(InitializeCollectionEvent) | 0 | 22 | 0 | NHibernate.Event.Default.DefaultInitializeCollectionEventListener .OnInitializeCollection(InitializeCollectionEvent) |
| InitializeCollectionFromCache(Object,ICollectionPersister ,IPersistentCollection,ISessionImplementor) | 0 | 23 | 0 | NHibernate.Event.Default.DefaultInitializeCollectionEventListener .InitializeCollectionFromCache(Object,ICollectionPersister ,IPersistentCollection,ISessionImplementor) |
| DoLoad(LoadEvent,IEntityPersister,EntityKey,LoadType) | 0 | 21 | 0 | NHibernate.Event.Default.DefaultLoadEventListener.DoLoad(LoadEvent ,IEntityPersister,EntityKey,LoadType) |
| OnEvict(EvictEvent) | 0 | 22 | 0 | NHibernate.Event.Default.DefaultEvictEventListener.OnEvict(EvictEvent) |
| .ctor(IDictionary<String,PersistentClass>,IDictionary<String ,Collection>,IDictionary<String,Table>,IDictionary<String ,NamedQueryDefinition>,IDictionary<String,NamedSQLQueryDefinition> ,IDictionary<String,ResultSetMappingDefinition>,IDictionary<String ,String>,IList<SecondPassCommand>,Queue<FilterSecondPassArgs>,IList <Mappings+PropertyReference>,INamingStrategy,IDictionary<String ,TypeDef>,IDictionary<String,FilterDefinition>,ISet<ExtendsQueueEntry> ,IList<IAuxiliaryDatabaseObject>,IDictionary<String ,Mappings+TableDescription>,IDictionary<Table,Mappings+ColumnNames> ,String,String,String,String,Dialect) | 0 | 23 | 0 | NHibernate.Cfg.Mappings..ctor(IDictionary<String,PersistentClass> ,IDictionary<String,Collection>,IDictionary<String,Table>,IDictionary <String,NamedQueryDefinition>,IDictionary<String ,NamedSQLQueryDefinition>,IDictionary<String ,ResultSetMappingDefinition>,IDictionary<String,String>,IList <SecondPassCommand>,Queue<FilterSecondPassArgs>,IList <Mappings+PropertyReference>,INamingStrategy,IDictionary<String ,TypeDef>,IDictionary<String,FilterDefinition>,ISet<ExtendsQueueEntry> ,IList<IAuxiliaryDatabaseObject>,IDictionary<String ,Mappings+TableDescription>,IDictionary<Table,Mappings+ColumnNames> ,String,String,String,String,Dialect) |
| GetSchemaActions(String) | 0 | 23 | 0 | NHibernate.Cfg.Mappings.GetSchemaActions(String) |
| MoveNext() | 0 | 21 | 0 | NHibernate.Cfg.ClassExtractor+<GetRootClassesEntries>d__0.MoveNext() |
| GenerateSchemaCreationScript(Dialect) | 0 | 49 | 0 | NHibernate.Cfg.Configuration.GenerateSchemaCreationScript(Dialect) |
| SecondPassCompileForeignKeys(Table,ISet) | 0 | 21 | 0 | NHibernate.Cfg.Configuration.SecondPassCompileForeignKeys(Table,ISet) |
| ClearListeners(ListenerType) | 0 | 71 | 0 | NHibernate.Cfg.Configuration.ClearListeners(ListenerType) |
| SetListeners(ListenerType,Object[]) | 0 | 73 | 0 | NHibernate.Cfg.Configuration.SetListeners(ListenerType,Object[]) |
| AppendListeners(ListenerType,Object[]) | 0 | 71 | 0 | NHibernate.Cfg.Configuration.AppendListeners(ListenerType,Object[]) |
| GenerateSchemaUpdateScript(Dialect,DatabaseMetadata) | 0 | 49 | 0 | NHibernate.Cfg.Configuration.GenerateSchemaUpdateScript(Dialect ,DatabaseMetadata) |
| BindAnyMeta(IAnyMapping,Any) | 0 | 22 | 0 | NHibernate.Cfg.XmlHbmBinding.ClassBinder.BindAnyMeta(IAnyMapping,Any) |
| BindMapSecondPass(HbmMap,Map,IDictionary<String,PersistentClass> ,IDictionary<String,MetaAttribute>) | 0 | 33 | 0 | NHibernate.Cfg.XmlHbmBinding.CollectionBinder.BindMapSecondPass(HbmMap ,Map,IDictionary<String,PersistentClass>,IDictionary<String ,MetaAttribute>) |
| ListenerTypeConvertFrom(String) | 0 | 36 | 0 | NHibernate.Cfg.ConfigurationSchema.CfgXmlHelper .ListenerTypeConvertFrom(String) |
| ListenerTypeConvertToString(ListenerType) | 0 | 36 | 0 | NHibernate.Cfg.ConfigurationSchema.CfgXmlHelper .ListenerTypeConvertToString(ListenerType) |
| EmitFastInt(ILGenerator,Int32) | 0 | 24 | 0 | NHibernate.Bytecode.EmitUtil.EmitFastInt(ILGenerator,Int32) |
| VisitResultOperator(ResultOperatorBase,QueryModel,Int32) | 0 | 22 | 0 | NHibernate.Linq.ReWriters.MergeAggregatingResultsRewriter .VisitResultOperator(ResultOperatorBase,QueryModel,Int32) |
| .ctor() | 0 | 22 | 0 | NHibernate.Linq.Functions.DefaultLinqToHqlGeneratorsRegistry..ctor() |
| Clear() | 0 | 27 | 0 | NHibernate.Engine.StatefulPersistenceContext.Clear() |
| BindParameters(IDbCommand,Int32,ISessionImplementor) | 0 | 53 | 0 | NHibernate.Engine.QueryParameters.BindParameters(IDbCommand,Int32 ,ISessionImplementor) |
| NullifyTransientReferences(Object,IType) | 0 | 26 | 0 | NHibernate.Engine.ForeignKeys+Nullifier.NullifyTransientReferences (Object,IType) |
| .cctor() | 0 | 26 | 0 | NHibernate.Engine.CascadeStyle..cctor() |
| FormatCreateTable(String) | 0 | 23 | 0 | NHibernate.AdoNet.Util.DdlFormatter.FormatCreateTable(String) |
| .cctor() | 0 | 36 | 0 | NHibernate.AdoNet.Util.BasicFormatter..cctor() |
| Perform() | 0 | 41 | 0 | NHibernate.AdoNet.Util.BasicFormatter+FormatProcess.Perform() |
| Execute(Action<String>,Boolean,Boolean,IDbConnection,TextWriter) | 0 | 23 | 0 | NHibernate.Tool.hbm2ddl.SchemaExport.Execute(Action<String>,Boolean ,Boolean,IDbConnection,TextWriter) |
| Execute(Action<String>,Boolean) | 0 | 42 | 0 | NHibernate.Tool.hbm2ddl.SchemaUpdate.Execute(Action<String>,Boolean) |
| GetResultsFromDatabase(IList) | 1 | 53 | 1 | NHibernate.Impl.MultiCriteriaImpl.GetResultsFromDatabase(IList) |
| .ctor(ICustomQuery,ISessionFactoryImplementor) | 1 | 105 | 2 | NHibernate.Loader.Custom.CustomLoader..ctor(ICustomQuery ,ISessionFactoryImplementor) |
| Create(IToken) | 1 | 75 | 1 | NHibernate.Hql.Ast.ANTLR.Tree.HqlSqlWalkerTreeAdaptor.Create(IToken) |
| DoList() | 2 | 72 | 2 | NHibernate.Impl.MultiQueryImpl.DoList() |
| .ctor(Configuration,IMapping,Settings,EventListeners) | 2 | 135 | 3 | NHibernate.Impl.SessionFactoryImpl..ctor(Configuration,IMapping ,Settings,EventListeners) |
| RenderOrderByStringTemplate(String,Dialect,SQLFunctionRegistry) | 2 | 41 | 1 | NHibernate.SqlCommand.Template.RenderOrderByStringTemplate(String ,Dialect,SQLFunctionRegistry) |
| .ctor(PersistentClass,ISessionFactoryImplementor) | 2 | 131 | 3 | NHibernate.Tuple.Entity.EntityMetamodel..ctor(PersistentClass ,ISessionFactoryImplementor) |
| MoveNext() | 2 | 86 | 2 | NHibernate.Dialect .Dialect+QuotedAndParenthesisStringTokenizer+GetEnumerator>d__0 .MoveNext() |
| .ctor() | 2 | 85 | 2 | NHibernate.Dialect.MsSql2000Dialect..ctor() |
| RegisterStringFunctions() | 2 | 49 | 1 | NHibernate.Dialect.SybaseSQLAnywhere10Dialect.RegisterStringFunctions( ) |
| InitPersisters(IList<OuterJoinableAssociation>,LockMode) | 2 | 35 | 1 | NHibernate.Loader.JoinWalker.InitPersisters(IList <OuterJoinableAssociation>,LockMode) |
| .ctor(PersistentClass,ICacheConcurrencyStrategy ,ISessionFactoryImplementor,IMapping) | 2 | 83 | 2 | NHibernate.Persister.Entity.UnionSubclassEntityPersister..ctor (PersistentClass,ICacheConcurrencyStrategy,ISessionFactoryImplementor ,IMapping) |
| .cctor() | 2 | 71 | 2 | NHibernate.Hql.Classic.WhereParser..cctor() |
Statistics
| Stat | Percentage Comment | # lines of code (LOC) | # lines of comment |
|---|---|---|---|
| Sum: | 1 350 | 10 265 | 607 |
| Average: | 5.336 | 40.573 | 2.3992 |
| Minimum: | 0 | 21 | 0 |
| Maximum: | 19 | 401 | 22 |
| Standard deviation: | 5.6891 | 39.477 | 3.0932 |
| Variance: | 32.365 | 1 558 | 9.5679 |
| Rule warning: Methods with too many parameters |
// <Name>Methods with too many parameters</Name>
warnif count > 0 from m in JustMyCode.Methods where
m.NbParameters > 5
orderby m.NbParameters descending
select new { m, m.NbParameters }
// 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
warnif count > 0 from m in JustMyCode.Methods where
m.NbParameters > 5
orderby m.NbParameters descending
select new { m, m.NbParameters }
// 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
163 methods matched
The following list of methods is truncated and contains only the first 100 methods of the 163 methods matched. All matched methods could be listed in the report by unchecking the option:
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched methods.
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched methods.
| methods | # Parameters | Full Name |
|---|---|---|
| methods | # Parameters | Full Name |
| .ctor(IDictionary<String,PersistentClass>,IDictionary<String ,Collection>,IDictionary<String,Table>,IDictionary<String ,NamedQueryDefinition>,IDictionary<String,NamedSQLQueryDefinition> ,IDictionary<String,ResultSetMappingDefinition>,IDictionary<String ,String>,IList<SecondPassCommand>,Queue<FilterSecondPassArgs>,IList <Mappings+PropertyReference>,INamingStrategy,IDictionary<String ,TypeDef>,IDictionary<String,FilterDefinition>,ISet<ExtendsQueueEntry> ,IList<IAuxiliaryDatabaseObject>,IDictionary<String ,Mappings+TableDescription>,IDictionary<Table,Mappings+ColumnNames> ,String,String,String,String,Dialect) | 22 | NHibernate.Cfg.Mappings..ctor(IDictionary<String,PersistentClass> ,IDictionary<String,Collection>,IDictionary<String,Table>,IDictionary <String,NamedQueryDefinition>,IDictionary<String ,NamedSQLQueryDefinition>,IDictionary<String ,ResultSetMappingDefinition>,IDictionary<String,String>,IList <SecondPassCommand>,Queue<FilterSecondPassArgs>,IList <Mappings+PropertyReference>,INamingStrategy,IDictionary<String ,TypeDef>,IDictionary<String,FilterDefinition>,ISet<ExtendsQueueEntry> ,IList<IAuxiliaryDatabaseObject>,IDictionary<String ,Mappings+TableDescription>,IDictionary<Table,Mappings+ColumnNames> ,String,String,String,String,Dialect) |
| .ctor(IType[],Object[],IDictionary<String,TypedValue>,IDictionary <String,LockMode>,RowSelection,Boolean,Boolean,String,String,Object[] ,Object,String,Object,IResultTransformer) | 14 | NHibernate.Engine.QueryParameters..ctor(IType[],Object[],IDictionary <String,TypedValue>,IDictionary<String,LockMode>,RowSelection,Boolean ,Boolean,String,String,Object[],Object,String,Object ,IResultTransformer) |
| .ctor(String,String,IType,Boolean,Boolean,Boolean,Boolean,Boolean ,Boolean,Boolean,Boolean,CascadeStyle,Nullable<FetchMode>) | 13 | NHibernate.Tuple.StandardProperty..ctor(String,String,IType,Boolean ,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean,CascadeStyle ,Nullable<FetchMode>) |
| .ctor(String,String,IType,Boolean,Boolean,Boolean,Boolean,Boolean ,Boolean,Boolean,Boolean,CascadeStyle,VersionValue) | 13 | NHibernate.Tuple.VersionProperty..ctor(String,String,IType,Boolean ,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean,CascadeStyle ,VersionValue) |
| .ctor(String,INativeSQLQueryReturn[],IList<String>,Boolean,String ,Int32,Int32,FlushMode,Nullable<CacheMode>,Boolean,String,IDictionary <String,String>,Boolean) | 13 | NHibernate.Engine.NamedSQLQueryDefinition..ctor(String ,INativeSQLQueryReturn[],IList<String>,Boolean,String,Int32,Int32 ,FlushMode,Nullable<CacheMode>,Boolean,String,IDictionary<String ,String>,Boolean) |
| .ctor(String,String,IList<String>,Boolean,String,Int32,Int32,FlushMode ,Nullable<CacheMode>,Boolean,String,IDictionary<String,String>,Boolean ) | 13 | NHibernate.Engine.NamedSQLQueryDefinition..ctor(String,String,IList <String>,Boolean,String,Int32,Int32,FlushMode,Nullable<CacheMode> ,Boolean,String,IDictionary<String,String>,Boolean) |
| AddEntry(Object,Status,Object[],Object,Object,Object,LockMode,Boolean ,IEntityPersister,Boolean,Boolean) | 11 | NHibernate.Engine.IPersistenceContext.AddEntry(Object,Status,Object[] ,Object,Object,Object,LockMode,Boolean,IEntityPersister,Boolean ,Boolean) |
| AddEntry(Object,Status,Object[],Object,Object,Object,LockMode,Boolean ,IEntityPersister,Boolean,Boolean) | 11 | NHibernate.Engine.StatefulPersistenceContext.AddEntry(Object,Status ,Object[],Object,Object,Object,LockMode,Boolean,IEntityPersister ,Boolean,Boolean) |
| .ctor(IType[],Object[],IDictionary<String,TypedValue>,IDictionary <String,LockMode>,RowSelection,Boolean,Boolean,String,String,Object[] ,IResultTransformer) | 11 | NHibernate.Engine.QueryParameters..ctor(IType[],Object[],IDictionary <String,TypedValue>,IDictionary<String,LockMode>,RowSelection,Boolean ,Boolean,String,String,Object[],IResultTransformer) |
| .ctor(Status,Object[],Object,Object,Object,LockMode,Boolean ,IEntityPersister,EntityMode,Boolean,Boolean) | 11 | NHibernate.Engine.EntityEntry..ctor(Status,Object[],Object,Object ,Object,LockMode,Boolean,IEntityPersister,EntityMode,Boolean,Boolean) |
| .ctor(Object,Object[],Int32[],Boolean,Object[],Object,Object,Object ,IEntityPersister,ISessionImplementor) | 10 | NHibernate.Action.EntityUpdateAction..ctor(Object,Object[],Int32[] ,Boolean,Object[],Object,Object,Object,IEntityPersister ,ISessionImplementor) |
| InstanceNotYetLoaded(IDataReader,Int32,ILoadable,EntityKey,LockMode ,String,EntityKey,Object,IList,ISessionImplementor) | 10 | NHibernate.Loader.Loader.InstanceNotYetLoaded(IDataReader,Int32 ,ILoadable,EntityKey,LockMode,String,EntityKey,Object,IList ,ISessionImplementor) |
| UpdateOrInsert(Object,Object[],Object[],Object,Boolean[],Int32,Object ,Object,SqlCommandInfo,ISessionImplementor) | 10 | NHibernate.Persister.Entity.AbstractEntityPersister.UpdateOrInsert (Object,Object[],Object[],Object,Boolean[],Int32,Object,Object ,SqlCommandInfo,ISessionImplementor) |
| Update(Object,Object[],Object[],Object,Boolean[],Int32,Object,Object ,SqlCommandInfo,ISessionImplementor) | 10 | NHibernate.Persister.Entity.AbstractEntityPersister.Update(Object ,Object[],Object[],Object,Boolean[],Int32,Object,Object,SqlCommandInfo ,ISessionImplementor) |
| AddEntity(Object,Status,Object[],EntityKey,Object,LockMode,Boolean ,IEntityPersister,Boolean,Boolean) | 10 | NHibernate.Engine.IPersistenceContext.AddEntity(Object,Status,Object[] ,EntityKey,Object,LockMode,Boolean,IEntityPersister,Boolean,Boolean) |
| AddEntity(Object,Status,Object[],EntityKey,Object,LockMode,Boolean ,IEntityPersister,Boolean,Boolean) | 10 | NHibernate.Engine.StatefulPersistenceContext.AddEntity(Object,Status ,Object[],EntityKey,Object,LockMode,Boolean,IEntityPersister,Boolean ,Boolean) |
| .ctor(IType[],Object[],IDictionary<String,LockMode>,RowSelection ,Boolean,String,String,Boolean,IResultTransformer,IDictionary<Int32 ,Int32>) | 10 | NHibernate.Engine.QueryParameters..ctor(IType[],Object[],IDictionary <String,LockMode>,RowSelection,Boolean,String,String,Boolean ,IResultTransformer,IDictionary<Int32,Int32>) |
| .ctor(String,Boolean,String,Int32,Int32,FlushMode,Nullable<CacheMode> ,Boolean,String,IDictionary<String,String>) | 10 | NHibernate.Engine.NamedQueryDefinition..ctor(String,Boolean,String ,Int32,Int32,FlushMode,Nullable<CacheMode>,Boolean,String,IDictionary <String,String>) |
| .ctor(IDbConnection,SessionFactoryImpl,Boolean,Int64,IInterceptor ,EntityMode,Boolean,Boolean,ConnectionReleaseMode) | 9 | NHibernate.Impl.SessionImpl..ctor(IDbConnection,SessionFactoryImpl ,Boolean,Int64,IInterceptor,EntityMode,Boolean,Boolean ,ConnectionReleaseMode) |
| LoadFromResultSet(IDataReader,Int32,Object,String,EntityKey,String ,LockMode,ILoadable,ISessionImplementor) | 9 | NHibernate.Loader.Loader.LoadFromResultSet(IDataReader,Int32,Object ,String,EntityKey,String,LockMode,ILoadable,ISessionImplementor) |
| Update(Object,Object[],Int32[],Boolean,Object[],Object,Object,Object ,ISessionImplementor) | 9 | NHibernate.Persister.Entity.IEntityPersister.Update(Object,Object[] ,Int32[],Boolean,Object[],Object,Object,Object,ISessionImplementor) |
| Dehydrate(Object,Object[],Object,Boolean[],Boolean[][],Int32 ,IDbCommand,ISessionImplementor,Int32) | 9 | NHibernate.Persister.Entity.AbstractEntityPersister.Dehydrate(Object ,Object[],Object,Boolean[],Boolean[][],Int32,IDbCommand ,ISessionImplementor,Int32) |
| Update(Object,Object[],Int32[],Boolean,Object[],Object,Object,Object ,ISessionImplementor) | 9 | NHibernate.Persister.Entity.AbstractEntityPersister.Update(Object ,Object[],Int32[],Boolean,Object[],Object,Object,Object ,ISessionImplementor) |
| .ctor(String,Boolean,String,Int32,Int32,FlushMode,Boolean,String ,IDictionary<String,String>) | 9 | NHibernate.Engine.NamedQueryDefinition..ctor(String,Boolean,String ,Int32,Int32,FlushMode,Boolean,String,IDictionary<String,String>) |
| .ctor(String,ForeignKeyDirection,String,Boolean,Boolean,Boolean,String ,String) | 8 | NHibernate.Type.OneToOneType..ctor(String,ForeignKeyDirection,String ,Boolean,Boolean,Boolean,String,String) |
| OneToOne(String,ForeignKeyDirection,String,Boolean,Boolean,Boolean ,String,String) | 8 | NHibernate.Type.TypeFactory.OneToOne(String,ForeignKeyDirection,String ,Boolean,Boolean,Boolean,String,String) |
| .ctor(String,String[],Type[],LockMode[],ISessionImplementor ,ICollection<String>,FlushMode,ParameterMetadata) | 8 | NHibernate.Impl.SqlQueryImpl..ctor(String,String[],Type[],LockMode[] ,ISessionImplementor,ICollection<String>,FlushMode,ParameterMetadata) |
| GetRowFromResultSet(IDataReader,ISessionImplementor,QueryParameters ,LockMode[],EntityKey,IList,EntityKey[],Boolean) | 8 | NHibernate.Loader.Loader.GetRowFromResultSet(IDataReader ,ISessionImplementor,QueryParameters,LockMode[],EntityKey,IList ,EntityKey[],Boolean) |
| GetRow(IDataReader,ILoadable[],EntityKey[],Object,EntityKey,LockMode[] ,IList,ISessionImplementor) | 8 | NHibernate.Loader.Loader.GetRow(IDataReader,ILoadable[],EntityKey[] ,Object,EntityKey,LockMode[],IList,ISessionImplementor) |
| WalkEntityAssociationTree(IAssociationType,IOuterJoinLoadable,Int32 ,String,String,Boolean,Int32,ILhsAssociationTypeSqlInfo) | 8 | NHibernate.Loader.JoinWalker.WalkEntityAssociationTree (IAssociationType,IOuterJoinLoadable,Int32,String,String,Boolean,Int32 ,ILhsAssociationTypeSqlInfo) |
| GetJoinType(IAssociationType,FetchMode,String,String,String[],Boolean ,Int32,CascadeStyle) | 8 | NHibernate.Loader.JoinWalker.GetJoinType(IAssociationType,FetchMode ,String,String,String[],Boolean,Int32,CascadeStyle) |
| .ctor(IAssociationType,String,String[],String,JoinType,SqlString ,ISessionFactoryImplementor,IDictionary<String,IFilter>) | 8 | NHibernate.Loader.OuterJoinableAssociation..ctor(IAssociationType ,String,String[],String,JoinType,SqlString,ISessionFactoryImplementor ,IDictionary<String,IFilter>) |
| GetJoinType(IAssociationType,FetchMode,String,ISet,String,String[] ,Boolean,Int32) | 8 | NHibernate.Loader.Collection.BasicCollectionJoinWalker.GetJoinType (IAssociationType,FetchMode,String,ISet,String,String[],Boolean,Int32) |
| GetJoinType(IAssociationType,FetchMode,String,String,String[],Boolean ,Int32,CascadeStyle) | 8 | NHibernate.Loader.Criteria.CriteriaJoinWalker.GetJoinType (IAssociationType,FetchMode,String,String,String[],Boolean,Int32 ,CascadeStyle) |
| PerformInsert(Object,IPersistentCollection,IExpectation,Object,Int32 ,Boolean,Boolean,ISessionImplementor) | 8 | NHibernate.Persister.Collection.AbstractCollectionPersister .PerformInsert(Object,IPersistentCollection,IExpectation,Object,Int32 ,Boolean,Boolean,ISessionImplementor) |
| PostHydrate(IEntityPersister,Object,Object[],Object,Object,LockMode ,Boolean,ISessionImplementor) | 8 | NHibernate.Engine.TwoPhaseLoad.PostHydrate(IEntityPersister,Object ,Object[],Object,Object,LockMode,Boolean,ISessionImplementor) |
| Replace(Object[],Object[],IType[],ISessionImplementor,Object ,IDictionary,ForeignKeyDirection) | 7 | NHibernate.Type.TypeHelper.Replace(Object[],Object[],IType[] ,ISessionImplementor,Object,IDictionary,ForeignKeyDirection) |
| ReplaceAssociations(Object[],Object[],IType[],ISessionImplementor ,Object,IDictionary,ForeignKeyDirection) | 7 | NHibernate.Type.TypeHelper.ReplaceAssociations(Object[],Object[] ,IType[],ISessionImplementor,Object,IDictionary,ForeignKeyDirection) |
| .ctor(String,ForeignKeyDirection,String,Boolean,Boolean,String,String) | 7 | NHibernate.Type.SpecialOneToOneType..ctor(String,ForeignKeyDirection ,String,Boolean,Boolean,String,String) |
| BuildSqlCreateIndexString(Dialect,String,Table,IEnumerable<Column> ,Boolean,String,String) | 7 | NHibernate.Mapping.Index.BuildSqlCreateIndexString(Dialect,String ,Table,IEnumerable<Column>,Boolean,String,String) |
| .ctor(Object,Object[],Object,Object,IEntityPersister,Boolean ,ISessionImplementor) | 7 | NHibernate.Action.EntityDeleteAction..ctor(Object,Object[],Object ,Object,IEntityPersister,Boolean,ISessionImplementor) |
| .ctor(String,IList<INativeSQLQueryReturn>,ICollection<String> ,FlushMode,Boolean,ISessionImplementor,ParameterMetadata) | 7 | NHibernate.Impl.SqlQueryImpl..ctor(String,IList<INativeSQLQueryReturn> ,ICollection<String>,FlushMode,Boolean,ISessionImplementor ,ParameterMetadata) |
| .ctor(IDataReader,IDbCommand,ISessionImplementor,IType[],String[][] ,RowSelection,HolderInstantiator) | 7 | NHibernate.Impl.EnumerableImpl..ctor(IDataReader,IDbCommand ,ISessionImplementor,IType[],String[][],RowSelection ,HolderInstantiator) |
| AddJoin(String,String,String,String[],String[],JoinType,SqlString) | 7 | NHibernate.SqlCommand.QueryJoinFragment.AddJoin(String,String,String ,String[],String[],JoinType,SqlString) |
| InstanceAlreadyLoaded(IDataReader,Int32,IEntityPersister,EntityKey ,Object,LockMode,ISessionImplementor) | 7 | NHibernate.Loader.Loader.InstanceAlreadyLoaded(IDataReader,Int32 ,IEntityPersister,EntityKey,Object,LockMode,ISessionImplementor) |
| LoadEntity(ISessionImplementor,Object,IType,Object,String,Object ,IEntityPersister) | 7 | NHibernate.Loader.Loader.LoadEntity(ISessionImplementor,Object,IType ,Object,String,Object,IEntityPersister) |
| LoadEntityBatch(ISessionImplementor,Object[],IType,Object,String ,Object,IEntityPersister) | 7 | NHibernate.Loader.Loader.LoadEntityBatch(ISessionImplementor,Object[] ,IType,Object,String,Object,IEntityPersister) |
| .ctor(IOuterJoinLoadable,String[],IType,Int32,LockMode ,ISessionFactoryImplementor,IDictionary<String,IFilter>) | 7 | NHibernate.Loader.Entity.EntityLoader..ctor(IOuterJoinLoadable ,String[],IType,Int32,LockMode,ISessionFactoryImplementor,IDictionary <String,IFilter>) |
| .ctor(IQueryableCollection,SqlString,ICollection<EntityKey> ,QueryParameters,IDictionary<String,Int32[]> ,ISessionFactoryImplementor,IDictionary<String,IFilter>) | 7 | NHibernate.Loader.Collection.SubselectOneToManyLoader..ctor (IQueryableCollection,SqlString,ICollection<EntityKey>,QueryParameters ,IDictionary<String,Int32[]>,ISessionFactoryImplementor,IDictionary <String,IFilter>) |
| .ctor(IQueryableCollection,SqlString,ICollection<EntityKey> ,QueryParameters,IDictionary<String,Int32[]> ,ISessionFactoryImplementor,IDictionary<String,IFilter>) | 7 | NHibernate.Loader.Collection.SubselectCollectionLoader..ctor (IQueryableCollection,SqlString,ICollection<EntityKey>,QueryParameters ,IDictionary<String,Int32[]>,ISessionFactoryImplementor,IDictionary <String,IFilter>) |
| Hydrate(IDataReader,Object,Object,ILoadable,String[][],Boolean ,ISessionImplementor) | 7 | NHibernate.Persister.Entity.ILoadable.Hydrate(IDataReader,Object ,Object,ILoadable,String[][],Boolean,ISessionImplementor) |
| Dehydrate(Object,Object[],Boolean[],Boolean[][],Int32,IDbCommand ,ISessionImplementor) | 7 | NHibernate.Persister.Entity.AbstractEntityPersister.Dehydrate(Object ,Object[],Boolean[],Boolean[][],Int32,IDbCommand,ISessionImplementor) |
| Hydrate(IDataReader,Object,Object,ILoadable,String[][],Boolean ,ISessionImplementor) | 7 | NHibernate.Persister.Entity.AbstractEntityPersister.Hydrate (IDataReader,Object,Object,ILoadable,String[][],Boolean ,ISessionImplementor) |
| Insert(Object,Object[],Boolean[],Int32,SqlCommandInfo,Object ,ISessionImplementor) | 7 | NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object ,Object[],Boolean[],Int32,SqlCommandInfo,Object,ISessionImplementor) |
| Delete(Object,Object,Int32,Object,SqlCommandInfo,ISessionImplementor ,Object[]) | 7 | NHibernate.Persister.Entity.AbstractEntityPersister.Delete(Object ,Object,Int32,Object,SqlCommandInfo,ISessionImplementor,Object[]) |
| AppendComponentCondition(String,Object,IAbstractComponentType ,ICriteria,ICriteriaQuery,IDictionary<String,IFilter>,SqlStringBuilder ) | 7 | NHibernate.Criterion.Example.AppendComponentCondition(String,Object ,IAbstractComponentType,ICriteria,ICriteriaQuery,IDictionary<String ,IFilter>,SqlStringBuilder) |
| GetColumnNamesForSimpleExpression(String,IProjection,ICriteriaQuery ,ICriteria,IDictionary<String,IFilter>,ICriterion,Object) | 7 | NHibernate.Criterion.CriterionUtil.GetColumnNamesForSimpleExpression (String,IProjection,ICriteriaQuery,ICriteria,IDictionary<String ,IFilter>,ICriterion,Object) |
| .ctor(String,Type,Object,MethodInfo,MethodInfo,IAbstractComponentType ,ISessionImplementor) | 7 | NHibernate.Proxy.Poco.BasicLazyInitializer..ctor(String,Type,Object ,MethodInfo,MethodInfo,IAbstractComponentType,ISessionImplementor) |
| PerformSave(Object,Object,IEntityPersister,Boolean,Object,IEventSource ,Boolean) | 7 | NHibernate.Event.Default.AbstractSaveEventListener.PerformSave(Object ,Object,IEntityPersister,Boolean,Object,IEventSource,Boolean) |
| PerformSaveOrReplicate(Object,EntityKey,IEntityPersister,Boolean ,Object,IEventSource,Boolean) | 7 | NHibernate.Event.Default.AbstractSaveEventListener .PerformSaveOrReplicate(Object,EntityKey,IEntityPersister,Boolean ,Object,IEventSource,Boolean) |
| BindComponent(IComponentMapping,Component,Type,String,String,Boolean ,IDictionary<String,MetaAttribute>) | 7 | NHibernate.Cfg.XmlHbmBinding.ClassBinder.BindComponent (IComponentMapping,Component,Type,String,String,Boolean,IDictionary <String,MetaAttribute>) |
| AddUninitializedCachedEntity(EntityKey,Object,IEntityPersister ,LockMode,Boolean,Object,ISessionImplementor) | 7 | NHibernate.Engine.TwoPhaseLoad.AddUninitializedCachedEntity(EntityKey ,Object,IEntityPersister,LockMode,Boolean,Object,ISessionImplementor) |
| .ctor(Object,String,String,IType,Boolean,ISessionFactoryImplementor ,EntityMode) | 7 | NHibernate.Engine.EntityKey..ctor(Object,String,String,IType,Boolean ,ISessionFactoryImplementor,EntityMode) |
| .ctor(String,Type,Object,MethodInfo,MethodInfo,IAbstractComponentType ,ISessionImplementor) | 7 | NHibernate.ByteCode.LinFu.LazyInitializer..ctor(String,Type,Object ,MethodInfo,MethodInfo,IAbstractComponentType,ISessionImplementor) |
| .ctor(String,Type,Object,MethodInfo,MethodInfo,IAbstractComponentType ,ISessionImplementor) | 7 | NHibernate.ByteCode.Castle.LazyInitializer..ctor(String,Type,Object ,MethodInfo,MethodInfo,IAbstractComponentType,ISessionImplementor) |
| OnFlushDirty(Object,Object,Object[],Object[],String[],IType[]) | 6 | NHibernate.IInterceptor.OnFlushDirty(Object,Object,Object[],Object[] ,String[],IType[]) |
| FindDirty(Object,Object,Object[],Object[],String[],IType[]) | 6 | NHibernate.IInterceptor.FindDirty(Object,Object,Object[],Object[] ,String[],IType[]) |
| OnFlushDirty(Object,Object,Object[],Object[],String[],IType[]) | 6 | NHibernate.EmptyInterceptor.OnFlushDirty(Object,Object,Object[] ,Object[],String[],IType[]) |
| FindDirty(Object,Object,Object[],Object[],String[],IType[]) | 6 | NHibernate.EmptyInterceptor.FindDirty(Object,Object,Object[],Object[] ,String[],IType[]) |
| ReplaceElements(Object,Object,ICollectionPersister,Object,IDictionary ,ISessionImplementor) | 6 | NHibernate.UserTypes.IUserCollectionType.ReplaceElements(Object,Object ,ICollectionPersister,Object,IDictionary,ISessionImplementor) |
| Replace(Object,Object,ISessionImplementor,Object,IDictionary ,ForeignKeyDirection) | 6 | NHibernate.Type.IType.Replace(Object,Object,ISessionImplementor,Object ,IDictionary,ForeignKeyDirection) |
| Replace(Object,Object,ISessionImplementor,Object,IDictionary ,ForeignKeyDirection) | 6 | NHibernate.Type.AbstractType.Replace(Object,Object,ISessionImplementor ,Object,IDictionary,ForeignKeyDirection) |
| Replace(Object,Object,ISessionImplementor,Object,IDictionary ,ForeignKeyDirection) | 6 | NHibernate.Type.ComponentType.Replace(Object,Object ,ISessionImplementor,Object,IDictionary,ForeignKeyDirection) |
| Replace(Object[],Object[],IType[],ISessionImplementor,Object ,IDictionary) | 6 | NHibernate.Type.TypeHelper.Replace(Object[],Object[],IType[] ,ISessionImplementor,Object,IDictionary) |
| FindDirty(StandardProperty[],Object[],Object[],Boolean[][],Boolean ,ISessionImplementor) | 6 | NHibernate.Type.TypeHelper.FindDirty(StandardProperty[],Object[] ,Object[],Boolean[][],Boolean,ISessionImplementor) |
| FindModified(StandardProperty[],Object[],Object[],Boolean[][],Boolean ,ISessionImplementor) | 6 | NHibernate.Type.TypeHelper.FindModified(StandardProperty[],Object[] ,Object[],Boolean[][],Boolean,ISessionImplementor) |
| .ctor(String,String,Boolean,Boolean,Boolean,Boolean) | 6 | NHibernate.Type.ManyToOneType..ctor(String,String,Boolean,Boolean ,Boolean,Boolean) |
| ManyToOne(String,String,Boolean,Boolean,Boolean,Boolean) | 6 | NHibernate.Type.TypeFactory.ManyToOne(String,String,Boolean,Boolean ,Boolean,Boolean) |
| Convert(ISQLExceptionConverter,Exception,String,SqlString,Object[] ,IDictionary<String,TypedValue>) | 6 | NHibernate.Exceptions.ADOExceptionHelper.Convert (ISQLExceptionConverter,Exception,String,SqlString,Object[] ,IDictionary<String,TypedValue>) |
| InjectFieldInterceptor(Object,String,Type,ISet<String>,ISet<String> ,ISessionImplementor) | 6 | NHibernate.Intercept.FieldInterceptionHelper.InjectFieldInterceptor (Object,String,Type,ISet<String>,ISet<String>,ISessionImplementor) |
| .ctor(Object,Object[],Object,Object,IEntityPersister ,ISessionImplementor) | 6 | NHibernate.Action.EntityInsertAction..ctor(Object,Object[],Object ,Object,IEntityPersister,ISessionImplementor) |
| .ctor(CriteriaImpl,ICriteria,String,String,JoinType,ICriterion) | 6 | NHibernate.Impl.CriteriaImpl+Subcriteria..ctor(CriteriaImpl,ICriteria ,String,String,JoinType,ICriterion) |
| AddJoin(String,String,String[],String[],JoinType,SqlString) | 6 | NHibernate.SqlCommand.JoinFragment.AddJoin(String,String,String[] ,String[],JoinType,SqlString) |
| AddJoin(String,String,String[],String[],JoinType,SqlString) | 6 | NHibernate.SqlCommand.ANSIJoinFragment.AddJoin(String,String,String[] ,String[],JoinType,SqlString) |
| AddJoin(String,String,String[],String[],JoinType,SqlString) | 6 | NHibernate.SqlCommand.InformixJoinFragment.AddJoin(String,String ,String[],String[],JoinType,SqlString) |
| AddJoin(String,String,String[],String[],JoinType,SqlString) | 6 | NHibernate.SqlCommand.QueryJoinFragment.AddJoin(String,String,String[] ,String[],JoinType,SqlString) |
| AddJoin(String,String,String[],String[],JoinType,SqlString) | 6 | NHibernate.SqlCommand.OracleJoinFragment.AddJoin(String,String ,String[],String[],JoinType,SqlString) |
| .ctor(String,String,IType,Boolean,IdentifierValue,IIdentifierGenerator ) | 6 | NHibernate.Tuple.IdentifierProperty..ctor(String,String,IType,Boolean ,IdentifierValue,IIdentifierGenerator) |
| ReadCollectionElement(Object,Object,ICollectionPersister ,ICollectionAliases,IDataReader,ISessionImplementor) | 6 | NHibernate.Loader.Loader.ReadCollectionElement(Object,Object ,ICollectionPersister,ICollectionAliases,IDataReader ,ISessionImplementor) |
| CheckVersion(Int32,IEntityPersister,Object,Object,IDataReader ,ISessionImplementor) | 6 | NHibernate.Loader.Loader.CheckVersion(Int32,IEntityPersister,Object ,Object,IDataReader,ISessionImplementor) |
| LoadEntity(ISessionImplementor,Object,Object,IType,IType ,IEntityPersister) | 6 | NHibernate.Loader.Loader.LoadEntity(ISessionImplementor,Object,Object ,IType,IType,IEntityPersister) |
| LoadCollectionSubselect(ISessionImplementor,Object[],Object[],IType[] ,IDictionary<String,TypedValue>,IType) | 6 | NHibernate.Loader.Loader.LoadCollectionSubselect(ISessionImplementor ,Object[],Object[],IType[],IDictionary<String,TypedValue>,IType) |
| GetResultFromQueryCache(ISessionImplementor,QueryParameters,ISet <String>,IType[],IQueryCache,QueryKey) | 6 | NHibernate.Loader.Loader.GetResultFromQueryCache(ISessionImplementor ,QueryParameters,ISet<String>,IType[],IQueryCache,QueryKey) |
| PutResultInQueryCache(ISessionImplementor,QueryParameters,IType[] ,IQueryCache,QueryKey,IList) | 6 | NHibernate.Loader.Loader.PutResultInQueryCache(ISessionImplementor ,QueryParameters,IType[],IQueryCache,QueryKey,IList) |
| AddAssociationToJoinTreeIfNecessary(IAssociationType,String[],String ,String,Int32,JoinType) | 6 | NHibernate.Loader.JoinWalker.AddAssociationToJoinTreeIfNecessary (IAssociationType,String[],String,String,Int32,JoinType) |
| AddAssociationToJoinTree(IAssociationType,String[],String,String,Int32 ,JoinType) | 6 | NHibernate.Loader.JoinWalker.AddAssociationToJoinTree(IAssociationType ,String[],String,String,Int32,JoinType) |
| WalkComponentTree(IAbstractComponentType,Int32,String,String,Int32 ,ILhsAssociationTypeSqlInfo) | 6 | NHibernate.Loader.JoinWalker.WalkComponentTree(IAbstractComponentType ,Int32,String,String,Int32,ILhsAssociationTypeSqlInfo) |
| WalkCompositeElementTree(IAbstractComponentType,String[] ,IQueryableCollection,String,String,Int32) | 6 | NHibernate.Loader.JoinWalker.WalkCompositeElementTree (IAbstractComponentType,String[],IQueryableCollection,String,String ,Int32) |
| IsJoinable(JoinType,ISet<JoinWalker+AssociationKey>,String,String[] ,IAssociationType,Int32) | 6 | NHibernate.Loader.JoinWalker.IsJoinable(JoinType,ISet <JoinWalker+AssociationKey>,String,String[],IAssociationType,Int32) |
| InitStatementString(SqlString,SqlString,SqlString,String,SqlString ,LockMode) | 6 | NHibernate.Loader.AbstractEntityJoinWalker.InitStatementString (SqlString,SqlString,SqlString,String,SqlString,LockMode) |
Statistics
| Stat | # Parameters |
|---|---|
| Sum: | 1 153 |
| Average: | 7.0736 |
| Minimum: | 6 |
| Maximum: | 22 |
| Standard deviation: | 2.0532 |
| Variance: | 4.2154 |
| Rule warning: Methods with too many local variables |
// <Name>Methods with too many local variables</Name>
warnif count > 0 from m in JustMyCode.Methods where
m.NbVariables > 15
orderby m.NbVariables descending
select new { m, m.NbVariables }
// Methods where NbVariables > 8 are hard to understand and maintain.
// Methods where NbVariables > 15 are extremely complex
// and should be split in smaller methods.
// See the definition of the Nbvariables metric here
// http://www.ndepend.com/Metrics.aspx#Nbvariables
warnif count > 0 from m in JustMyCode.Methods where
m.NbVariables > 15
orderby m.NbVariables descending
select new { m, m.NbVariables }
// Methods where NbVariables > 8 are hard to understand and maintain.
// Methods where NbVariables > 15 are extremely complex
// and should be split in smaller methods.
// See the definition of the Nbvariables metric here
// http://www.ndepend.com/Metrics.aspx#Nbvariables
23 methods matched
| methods | # Variables | Full Name |
|---|---|---|
| methods | # Variables | Full Name |
| .ctor(PersistentClass,ICacheConcurrencyStrategy ,ISessionFactoryImplementor) | 46 | NHibernate.Persister.Entity.AbstractEntityPersister..ctor (PersistentClass,ICacheConcurrencyStrategy,ISessionFactoryImplementor) |
| .ctor(PersistentClass,ICacheConcurrencyStrategy ,ISessionFactoryImplementor,IMapping) | 36 | NHibernate.Persister.Entity.SingleTableEntityPersister..ctor (PersistentClass,ICacheConcurrencyStrategy,ISessionFactoryImplementor ,IMapping) |
| BuildSettings(IDictionary<String,String>) | 35 | NHibernate.Cfg.SettingsFactory.BuildSettings(IDictionary<String,String >) |
| .ctor(PersistentClass,ICacheConcurrencyStrategy ,ISessionFactoryImplementor,IMapping) | 33 | NHibernate.Persister.Entity.JoinedSubclassEntityPersister..ctor (PersistentClass,ICacheConcurrencyStrategy,ISessionFactoryImplementor ,IMapping) |
| .ctor(ICustomQuery,ISessionFactoryImplementor) | 29 | NHibernate.Loader.Custom.CustomLoader..ctor(ICustomQuery ,ISessionFactoryImplementor) |
| BindPropertyResults(String,HbmReturnDiscriminator,HbmReturnProperty[] ,PersistentClass) | 29 | NHibernate.Cfg.XmlHbmBinding.ResultSetMappingBinder .BindPropertyResults(String,HbmReturnDiscriminator,HbmReturnProperty[] ,PersistentClass) |
| .ctor(Collection,ICacheConcurrencyStrategy,Configuration ,ISessionFactoryImplementor) | 28 | NHibernate.Persister.Collection.AbstractCollectionPersister..ctor (Collection,ICacheConcurrencyStrategy,Configuration ,ISessionFactoryImplementor) |
| Bind(IEnumerable<IEntityPropertyMapping>,Table,IDictionary<String ,MetaAttribute>,Action<Property>,Action<Property>) | 23 | NHibernate.Cfg.XmlHbmBinding.PropertiesBinder.Bind(IEnumerable <IEntityPropertyMapping>,Table,IDictionary<String,MetaAttribute> ,Action<Property>,Action<Property>) |
| DoList() | 22 | NHibernate.Impl.MultiQueryImpl.DoList() |
| .ctor(Configuration,IMapping,Settings,EventListeners) | 21 | NHibernate.Impl.SessionFactoryImpl..ctor(Configuration,IMapping ,Settings,EventListeners) |
| Resolve(Boolean,Boolean,String,IASTNode) | 21 | NHibernate.Hql.Ast.ANTLR.Tree.IndexNode.Resolve(Boolean,Boolean,String ,IASTNode) |
| GetResultsFromDatabase(IList) | 19 | NHibernate.Impl.MultiCriteriaImpl.GetResultsFromDatabase(IList) |
| .ctor(PersistentClass,ICacheConcurrencyStrategy ,ISessionFactoryImplementor,IMapping) | 18 | NHibernate.Persister.Entity.UnionSubclassEntityPersister..ctor (PersistentClass,ICacheConcurrencyStrategy,ISessionFactoryImplementor ,IMapping) |
| PostProcessInsert(IASTNode) | 18 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.PostProcessInsert(IASTNode) |
| Process(NonAggregatingGroupBy,QueryModelVisitor,IntermediateHqlTree) | 18 | NHibernate.Linq.Visitors.ResultOperatorProcessors .ProcessNonAggregatingGroupBy.Process(NonAggregatingGroupBy ,QueryModelVisitor,IntermediateHqlTree) |
| PrepareParameterTypes(SqlString,ISessionFactoryImplementor ,QueryParameters+GetNamedParameterLocations,Int32,Boolean,Boolean) | 18 | NHibernate.Engine.QueryParameters.PrepareParameterTypes(SqlString ,ISessionFactoryImplementor,QueryParameters+GetNamedParameterLocations ,Int32,Boolean,Boolean) |
| RenderWhereStringTemplate(String,String,Dialect,SQLFunctionRegistry) | 17 | NHibernate.SqlCommand.Template.RenderWhereStringTemplate(String,String ,Dialect,SQLFunctionRegistry) |
| GenerateCustomReturns(Boolean) | 17 | NHibernate.Loader.Custom.Sql.SQLQueryReturnProcessor .GenerateCustomReturns(Boolean) |
| InitializeExplicitSelectClause(FromClause) | 17 | NHibernate.Hql.Ast.ANTLR.Tree.SelectClause .InitializeExplicitSelectClause(FromClause) |
| InitializeEntity(Object,Boolean,ISessionImplementor,PreLoadEvent ,PostLoadEvent) | 17 | NHibernate.Engine.TwoPhaseLoad.InitializeEntity(Object,Boolean ,ISessionImplementor,PreLoadEvent,PostLoadEvent) |
| ConcreteQueries(String,ISessionFactoryImplementor) | 16 | NHibernate.Hql.QuerySplitter.ConcreteQueries(String ,ISessionFactoryImplementor) |
| RenderScalarSelect() | 16 | NHibernate.Hql.Classic.QueryTranslator.RenderScalarSelect() |
| <AddSqlQuery>b__0(IDictionary<String,PersistentClass>) | 16 | NHibernate.Cfg.XmlHbmBinding.NamedSQLQueryBinder+<>c__DisplayClass1. <AddSqlQuery>b__0(IDictionary<String,PersistentClass>) |
Statistics
| Stat | # Variables |
|---|---|
| Sum: | 530 |
| Average: | 23.043 |
| Minimum: | 16 |
| Maximum: | 46 |
| Standard deviation: | 7.9536 |
| Variance: | 63.259 |
| Rule warning: Methods with too many overloads |
// <Name>Methods with too many overloads</Name>
warnif count > 0 from m in JustMyCode.Methods where
m.NbOverloads > 6 &&
!m.IsOperator // Don't report operator overload
orderby m.NbOverloads descending
select new { m, m.NbOverloads }
// Methods where NbOverloads > 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
warnif count > 0 from m in JustMyCode.Methods where
m.NbOverloads > 6 &&
!m.IsOperator // Don't report operator overload
orderby m.NbOverloads descending
select new { m, m.NbOverloads }
// Methods where NbOverloads > 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
214 methods matched
The following list of methods is truncated and contains only the first 100 methods of the 214 methods matched. All matched methods could be listed in the report by unchecking the option:
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched methods.
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched methods.
| methods | # Overloads | Full Name |
|---|---|---|
| methods | # Overloads | Full Name |
| JoinQueryOver<U>(Expression<Func<TSubType,U>>) | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,U>>) |
| JoinQueryOver<U>(Expression<Func<U>>) | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <U>>) |
| JoinQueryOver<U>(Expression<Func<TSubType,U>>,Expression<Func<U>>) | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,U>>,Expression<Func<U>>) |
| JoinQueryOver<U>(Expression<Func<U>>,Expression<Func<U>>) | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <U>>,Expression<Func<U>>) |
| JoinQueryOver<U>(Expression<Func<TSubType,U>>,JoinType) | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,U>>,JoinType) |
| JoinQueryOver<U>(Expression<Func<U>>,JoinType) | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <U>>,JoinType) |
| JoinQueryOver<U>(Expression<Func<TSubType,U>>,Expression<Func<U>> ,JoinType) | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,U>>,Expression<Func<U>>,JoinType) |
| JoinQueryOver<U>(Expression<Func<U>>,Expression<Func<U>>,JoinType) | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <U>>,Expression<Func<U>>,JoinType) |
| JoinQueryOver<U>(Expression<Func<TSubType,IEnumerable<U>>>) | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,IEnumerable<U>>>) |
| JoinQueryOver<U>(Expression<Func<IEnumerable<U>>>) | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <IEnumerable<U>>>) |
| JoinQueryOver<U>(Expression<Func<TSubType,IEnumerable<U>>>,Expression <Func<U>>) | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,IEnumerable<U>>>,Expression<Func<U>>) |
| JoinQueryOver<U>(Expression<Func<IEnumerable<U>>>,Expression<Func<U>>) | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <IEnumerable<U>>>,Expression<Func<U>>) |
| JoinQueryOver<U>(Expression<Func<TSubType,IEnumerable<U>>>,JoinType) | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,IEnumerable<U>>>,JoinType) |
| JoinQueryOver<U>(Expression<Func<IEnumerable<U>>>,JoinType) | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <IEnumerable<U>>>,JoinType) |
| JoinQueryOver<U>(Expression<Func<TSubType,IEnumerable<U>>>,Expression <Func<U>>,JoinType) | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,IEnumerable<U>>>,Expression<Func<U>>,JoinType) |
| JoinQueryOver<U>(Expression<Func<IEnumerable<U>>>,Expression<Func<U>> ,JoinType) | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <IEnumerable<U>>>,Expression<Func<U>>,JoinType) |
| JoinQueryOver<U>(Expression<Func<TSubType,U>>) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.JoinQueryOver<U> (Expression<Func<TSubType,U>>) |
| JoinQueryOver<U>(Expression<Func<U>>) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.JoinQueryOver<U> (Expression<Func<U>>) |
| JoinQueryOver<U>(Expression<Func<TSubType,U>>,Expression<Func<U>>) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.JoinQueryOver<U> (Expression<Func<TSubType,U>>,Expression<Func<U>>) |
| JoinQueryOver<U>(Expression<Func<U>>,Expression<Func<U>>) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.JoinQueryOver<U> (Expression<Func<U>>,Expression<Func<U>>) |
| JoinQueryOver<U>(Expression<Func<TSubType,U>>,JoinType) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.JoinQueryOver<U> (Expression<Func<TSubType,U>>,JoinType) |
| JoinQueryOver<U>(Expression<Func<U>>,JoinType) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.JoinQueryOver<U> (Expression<Func<U>>,JoinType) |
| JoinQueryOver<U>(Expression<Func<TSubType,U>>,Expression<Func<U>> ,JoinType) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.JoinQueryOver<U> (Expression<Func<TSubType,U>>,Expression<Func<U>>,JoinType) |
| JoinQueryOver<U>(Expression<Func<U>>,Expression<Func<U>>,JoinType) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.JoinQueryOver<U> (Expression<Func<U>>,Expression<Func<U>>,JoinType) |
| JoinQueryOver<U>(Expression<Func<TSubType,IEnumerable<U>>>,Expression <Func<U>>) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.JoinQueryOver<U> (Expression<Func<TSubType,IEnumerable<U>>>,Expression<Func<U>>) |
| JoinQueryOver<U>(Expression<Func<IEnumerable<U>>>,Expression<Func<U>>) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.JoinQueryOver<U> (Expression<Func<IEnumerable<U>>>,Expression<Func<U>>) |
| JoinQueryOver<U>(Expression<Func<TSubType,IEnumerable<U>>>) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.JoinQueryOver<U> (Expression<Func<TSubType,IEnumerable<U>>>) |
| JoinQueryOver<U>(Expression<Func<IEnumerable<U>>>) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.JoinQueryOver<U> (Expression<Func<IEnumerable<U>>>) |
| JoinQueryOver<U>(Expression<Func<TSubType,IEnumerable<U>>>,Expression <Func<U>>,JoinType) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.JoinQueryOver<U> (Expression<Func<TSubType,IEnumerable<U>>>,Expression<Func<U>> ,JoinType) |
| JoinQueryOver<U>(Expression<Func<IEnumerable<U>>>,Expression<Func<U>> ,JoinType) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.JoinQueryOver<U> (Expression<Func<IEnumerable<U>>>,Expression<Func<U>>,JoinType) |
| JoinQueryOver<U>(Expression<Func<TSubType,IEnumerable<U>>>,JoinType) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.JoinQueryOver<U> (Expression<Func<TSubType,IEnumerable<U>>>,JoinType) |
| JoinQueryOver<U>(Expression<Func<IEnumerable<U>>>,JoinType) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.JoinQueryOver<U> (Expression<Func<IEnumerable<U>>>,JoinType) |
| NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,U>>) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.NHibernate.IQueryOver <TRoot,TSubType>.JoinQueryOver<U>(Expression<Func<TSubType,U>>) |
| NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <U>>) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.NHibernate.IQueryOver <TRoot,TSubType>.JoinQueryOver<U>(Expression<Func<U>>) |
| NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,U>>,Expression<Func<U>>) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.NHibernate.IQueryOver <TRoot,TSubType>.JoinQueryOver<U>(Expression<Func<TSubType,U>> ,Expression<Func<U>>) |
| NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <U>>,Expression<Func<U>>) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.NHibernate.IQueryOver <TRoot,TSubType>.JoinQueryOver<U>(Expression<Func<U>>,Expression<Func <U>>) |
| NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,U>>,JoinType) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.NHibernate.IQueryOver <TRoot,TSubType>.JoinQueryOver<U>(Expression<Func<TSubType,U>> ,JoinType) |
| NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <U>>,JoinType) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.NHibernate.IQueryOver <TRoot,TSubType>.JoinQueryOver<U>(Expression<Func<U>>,JoinType) |
| NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,U>>,Expression<Func<U>>,JoinType) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.NHibernate.IQueryOver <TRoot,TSubType>.JoinQueryOver<U>(Expression<Func<TSubType,U>> ,Expression<Func<U>>,JoinType) |
| NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <U>>,Expression<Func<U>>,JoinType) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.NHibernate.IQueryOver <TRoot,TSubType>.JoinQueryOver<U>(Expression<Func<U>>,Expression<Func <U>>,JoinType) |
| NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,IEnumerable<U>>>) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.NHibernate.IQueryOver <TRoot,TSubType>.JoinQueryOver<U>(Expression<Func<TSubType,IEnumerable <U>>>) |
| NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <IEnumerable<U>>>) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.NHibernate.IQueryOver <TRoot,TSubType>.JoinQueryOver<U>(Expression<Func<IEnumerable<U>>>) |
| NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,IEnumerable<U>>>,Expression<Func<U>>) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.NHibernate.IQueryOver <TRoot,TSubType>.JoinQueryOver<U>(Expression<Func<TSubType,IEnumerable <U>>>,Expression<Func<U>>) |
| NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <IEnumerable<U>>>,Expression<Func<U>>) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.NHibernate.IQueryOver <TRoot,TSubType>.JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> ,Expression<Func<U>>) |
| NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,IEnumerable<U>>>,JoinType) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.NHibernate.IQueryOver <TRoot,TSubType>.JoinQueryOver<U>(Expression<Func<TSubType,IEnumerable <U>>>,JoinType) |
| NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <IEnumerable<U>>>,JoinType) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.NHibernate.IQueryOver <TRoot,TSubType>.JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> ,JoinType) |
| NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,IEnumerable<U>>>,Expression<Func<U>>,JoinType) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.NHibernate.IQueryOver <TRoot,TSubType>.JoinQueryOver<U>(Expression<Func<TSubType,IEnumerable <U>>>,Expression<Func<U>>,JoinType) |
| NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <IEnumerable<U>>>,Expression<Func<U>>,JoinType) | 16 | NHibernate.Criterion.QueryOver<TRoot,TSubType>.NHibernate.IQueryOver <TRoot,TSubType>.JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> ,Expression<Func<U>>,JoinType) |
| Add(Type,ICriteria) | 14 | NHibernate.IMultiCriteria.Add(Type,ICriteria) |
| Add<T>(ICriteria) | 14 | NHibernate.IMultiCriteria.Add<T>(ICriteria) |
| Add<T>(String,ICriteria) | 14 | NHibernate.IMultiCriteria.Add<T>(String,ICriteria) |
| Add<T>(DetachedCriteria) | 14 | NHibernate.IMultiCriteria.Add<T>(DetachedCriteria) |
| Add<T>(String,DetachedCriteria) | 14 | NHibernate.IMultiCriteria.Add<T>(String,DetachedCriteria) |
| Add(ICriteria) | 14 | NHibernate.IMultiCriteria.Add(ICriteria) |
| Add(String,ICriteria) | 14 | NHibernate.IMultiCriteria.Add(String,ICriteria) |
| Add(DetachedCriteria) | 14 | NHibernate.IMultiCriteria.Add(DetachedCriteria) |
| Add(String,DetachedCriteria) | 14 | NHibernate.IMultiCriteria.Add(String,DetachedCriteria) |
| Add(Type,IQueryOver) | 14 | NHibernate.IMultiCriteria.Add(Type,IQueryOver) |
| Add<T>(IQueryOver<T>) | 14 | NHibernate.IMultiCriteria.Add<T>(IQueryOver<T>) |
| Add<U>(IQueryOver) | 14 | NHibernate.IMultiCriteria.Add<U>(IQueryOver) |
| Add<T>(String,IQueryOver<T>) | 14 | NHibernate.IMultiCriteria.Add<T>(String,IQueryOver<T>) |
| Add<U>(String,IQueryOver) | 14 | NHibernate.IMultiCriteria.Add<U>(String,IQueryOver) |
| Add(Type,ICriteria) | 14 | NHibernate.Impl.MultiCriteriaImpl.Add(Type,ICriteria) |
| Add(ICriteria) | 14 | NHibernate.Impl.MultiCriteriaImpl.Add(ICriteria) |
| Add(String,ICriteria) | 14 | NHibernate.Impl.MultiCriteriaImpl.Add(String,ICriteria) |
| Add(DetachedCriteria) | 14 | NHibernate.Impl.MultiCriteriaImpl.Add(DetachedCriteria) |
| Add(String,DetachedCriteria) | 14 | NHibernate.Impl.MultiCriteriaImpl.Add(String,DetachedCriteria) |
| Add<T>(ICriteria) | 14 | NHibernate.Impl.MultiCriteriaImpl.Add<T>(ICriteria) |
| Add<T>(String,ICriteria) | 14 | NHibernate.Impl.MultiCriteriaImpl.Add<T>(String,ICriteria) |
| Add<T>(DetachedCriteria) | 14 | NHibernate.Impl.MultiCriteriaImpl.Add<T>(DetachedCriteria) |
| Add<T>(String,DetachedCriteria) | 14 | NHibernate.Impl.MultiCriteriaImpl.Add<T>(String,DetachedCriteria) |
| Add(Type,IQueryOver) | 14 | NHibernate.Impl.MultiCriteriaImpl.Add(Type,IQueryOver) |
| Add<T>(IQueryOver<T>) | 14 | NHibernate.Impl.MultiCriteriaImpl.Add<T>(IQueryOver<T>) |
| Add<U>(IQueryOver) | 14 | NHibernate.Impl.MultiCriteriaImpl.Add<U>(IQueryOver) |
| Add<T>(String,IQueryOver<T>) | 14 | NHibernate.Impl.MultiCriteriaImpl.Add<T>(String,IQueryOver<T>) |
| Add<U>(String,IQueryOver) | 14 | NHibernate.Impl.MultiCriteriaImpl.Add<U>(String,IQueryOver) |
| BindSimpleValue(HbmProperty,String,Boolean) | 13 | NHibernate.Cfg.XmlHbmBinding.ValuePropertyBinder.BindSimpleValue (HbmProperty,String,Boolean) |
| BindSimpleValue(HbmElement,String,Boolean) | 13 | NHibernate.Cfg.XmlHbmBinding.ValuePropertyBinder.BindSimpleValue (HbmElement,String,Boolean) |
| BindSimpleValue(HbmKey,String,Boolean) | 13 | NHibernate.Cfg.XmlHbmBinding.ValuePropertyBinder.BindSimpleValue (HbmKey,String,Boolean) |
| BindSimpleValue(HbmManyToMany,String,Boolean) | 13 | NHibernate.Cfg.XmlHbmBinding.ValuePropertyBinder.BindSimpleValue (HbmManyToMany,String,Boolean) |
| BindSimpleValue(HbmCollectionId,String) | 13 | NHibernate.Cfg.XmlHbmBinding.ValuePropertyBinder.BindSimpleValue (HbmCollectionId,String) |
| BindSimpleValue(HbmListIndex,String,Boolean) | 13 | NHibernate.Cfg.XmlHbmBinding.ValuePropertyBinder.BindSimpleValue (HbmListIndex,String,Boolean) |
| BindSimpleValue(HbmIndex,String,Boolean) | 13 | NHibernate.Cfg.XmlHbmBinding.ValuePropertyBinder.BindSimpleValue (HbmIndex,String,Boolean) |
| BindSimpleValue(HbmMapKey,String,Boolean) | 13 | NHibernate.Cfg.XmlHbmBinding.ValuePropertyBinder.BindSimpleValue (HbmMapKey,String,Boolean) |
| BindSimpleValue(HbmManyToOne,String,Boolean) | 13 | NHibernate.Cfg.XmlHbmBinding.ValuePropertyBinder.BindSimpleValue (HbmManyToOne,String,Boolean) |
| BindSimpleValue(HbmIndexManyToMany,String,Boolean) | 13 | NHibernate.Cfg.XmlHbmBinding.ValuePropertyBinder.BindSimpleValue (HbmIndexManyToMany,String,Boolean) |
| BindSimpleValue(HbmMapKeyManyToMany,String,Boolean) | 13 | NHibernate.Cfg.XmlHbmBinding.ValuePropertyBinder.BindSimpleValue (HbmMapKeyManyToMany,String,Boolean) |
| BindSimpleValue(HbmKeyProperty,String,Boolean) | 13 | NHibernate.Cfg.XmlHbmBinding.ValuePropertyBinder.BindSimpleValue (HbmKeyProperty,String,Boolean) |
| BindSimpleValue(HbmKeyManyToOne,String,Boolean) | 13 | NHibernate.Cfg.XmlHbmBinding.ValuePropertyBinder.BindSimpleValue (HbmKeyManyToOne,String,Boolean) |
| List(String,QueryParameters) | 11 | NHibernate.Impl.AbstractSessionImpl.List(String,QueryParameters) |
| List(String,QueryParameters,IList) | 11 | NHibernate.Impl.AbstractSessionImpl.List(String,QueryParameters,IList) |
| List(IQueryExpression,QueryParameters) | 11 | NHibernate.Impl.AbstractSessionImpl.List(IQueryExpression ,QueryParameters) |
| List(IQueryExpression,QueryParameters,IList) | 11 | NHibernate.Impl.AbstractSessionImpl.List(IQueryExpression ,QueryParameters,IList) |
| List<T>(String,QueryParameters) | 11 | NHibernate.Impl.AbstractSessionImpl.List<T>(String,QueryParameters) |
| List<T>(CriteriaImpl) | 11 | NHibernate.Impl.AbstractSessionImpl.List<T>(CriteriaImpl) |
| List(CriteriaImpl,IList) | 11 | NHibernate.Impl.AbstractSessionImpl.List(CriteriaImpl,IList) |
| List(CriteriaImpl) | 11 | NHibernate.Impl.AbstractSessionImpl.List(CriteriaImpl) |
| List(NativeSQLQuerySpecification,QueryParameters) | 11 | NHibernate.Impl.AbstractSessionImpl.List(NativeSQLQuerySpecification ,QueryParameters) |
| List(NativeSQLQuerySpecification,QueryParameters,IList) | 11 | NHibernate.Impl.AbstractSessionImpl.List(NativeSQLQuerySpecification ,QueryParameters,IList) |
| List<T>(NativeSQLQuerySpecification,QueryParameters) | 11 | NHibernate.Impl.AbstractSessionImpl.List<T> (NativeSQLQuerySpecification,QueryParameters) |
Statistics
| Stat | # Overloads |
|---|---|
| Sum: | 2 474 |
| Average: | 11.561 |
| Minimum: | 7 |
| Maximum: | 16 |
| Standard deviation: | 3.145 |
| Variance: | 9.8912 |
| Rule warning: Types with too many methods |
// <Name>Types with too many methods</Name>
warnif count > 0 from t in JustMyCode.Types where
t.Methods.Count() > 20
orderby t.Methods.Count() descending
select new { t, t.InstanceMethods, t.StaticMethods }
// Types where Methods.Count() > 20 might be hard to
// understand and maintain
// but there might be cases where it is relevant
// to have a high number of methods.
// For example, the System.Windows.Forms.DataGridView
// standard class has more than 1000 methods.
warnif count > 0 from t in JustMyCode.Types where
t.Methods.Count() > 20
orderby t.Methods.Count() descending
select new { t, t.InstanceMethods, t.StaticMethods }
// Types where Methods.Count() > 20 might be hard to
// understand and maintain
// but there might be cases where it is relevant
// to have a high number of methods.
// For example, the System.Windows.Forms.DataGridView
// standard class has more than 1000 methods.
137 types matched
The following list of types is truncated and contains only the first 100 types of the 137 types matched. All matched types could be listed in the report by unchecking the option:
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched types.
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched types.
| types | InstanceMethods | StaticMethods | Full Name |
|---|---|---|---|
| types | InstanceMethods | StaticMethods | Full Name |
| AbstractEntityPersister | 311 methods | 0 method | NHibernate.Persister.Entity.AbstractEntityPersister |
| SessionImpl | 183 methods | 0 method | NHibernate.Impl.SessionImpl |
| Dialect | 144 methods | 4 methods | NHibernate.Dialect.Dialect |
| AbstractCollectionPersister | 144 methods | 2 methods | NHibernate.Persister.Collection.AbstractCollectionPersister |
| PersistentClass | 145 methods | 0 method | NHibernate.Mapping.PersistentClass |
| HqlSqlWalker | 134 methods | 10 methods | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker |
| Collection | 122 methods | 0 method | NHibernate.Mapping.Collection |
| Configuration | 115 methods | 5 methods | NHibernate.Cfg.Configuration |
| QueryOver<TRoot,TSubType> | 114 methods | 0 method | NHibernate.Criterion.QueryOver<TRoot,TSubType> |
| AbstractQueryImpl | 109 methods | 1 method | NHibernate.Impl.AbstractQueryImpl |
| HqlLexer | 105 methods | 0 method | NHibernate.Hql.Ast.ANTLR.HqlLexer |
| QueryTranslator | 100 methods | 4 methods | NHibernate.Hql.Classic.QueryTranslator |
| HqlParser | 96 methods | 0 method | NHibernate.Hql.Ast.ANTLR.HqlParser |
| StatelessSessionImpl | 92 methods | 0 method | NHibernate.Impl.StatelessSessionImpl |
| Settings | 90 methods | 0 method | NHibernate.Cfg.Settings |
| IEntityPersister | 89 methods | 0 method | NHibernate.Persister.Entity.IEntityPersister |
| AbstractSessionImpl | 86 methods | 0 method | NHibernate.Impl.AbstractSessionImpl |
| ISession | 84 methods | 0 method | NHibernate.ISession |
| SqlGenerator | 82 methods | 1 method | NHibernate.Hql.Ast.ANTLR.SqlGenerator |
| StatefulPersistenceContext | 83 methods | 0 method | NHibernate.Engine.StatefulPersistenceContext |
| FromElement | 80 methods | 0 method | NHibernate.Hql.Ast.ANTLR.Tree.FromElement |
| TypeFactory | 1 method | 77 methods | NHibernate.Type.TypeFactory |
| HqlTreeBuilder | 78 methods | 0 method | NHibernate.Hql.Ast.HqlTreeBuilder |
| Loader | 64 methods | 12 methods | NHibernate.Loader.Loader |
| EventListeners | 75 methods | 0 method | NHibernate.Event.EventListeners |
| IQuery | 73 methods | 0 method | NHibernate.IQuery |
| Restrictions | 0 method | 72 methods | NHibernate.Criterion.Restrictions |
| IPersistenceContext | 72 methods | 0 method | NHibernate.Engine.IPersistenceContext |
| Table | 69 methods | 2 methods | NHibernate.Mapping.Table |
| StatisticsImpl | 70 methods | 1 method | NHibernate.Stat.StatisticsImpl |
| AbstractPersistentCollection | 69 methods | 2 methods | NHibernate.Collection.AbstractPersistentCollection |
| MultiQueryImpl | 67 methods | 1 method | NHibernate.Impl.MultiQueryImpl |
| SessionFactoryImpl | 68 methods | 0 method | NHibernate.Impl.SessionFactoryImpl |
| ISessionImplementor | 67 methods | 0 method | NHibernate.Engine.ISessionImplementor |
| AbstractDetachedQuery | 65 methods | 0 method | NHibernate.Impl.AbstractDetachedQuery |
| EntityMetamodel | 64 methods | 1 method | NHibernate.Tuple.Entity.EntityMetamodel |
| SybaseSQLAnywhere10Dialect | 62 methods | 1 method | NHibernate.Dialect.SybaseSQLAnywhere10Dialect |
| Subclass | 62 methods | 0 method | NHibernate.Mapping.Subclass |
| CriteriaImpl | 62 methods | 0 method | NHibernate.Impl.CriteriaImpl |
| CollectionType | 61 methods | 0 method | NHibernate.Type.CollectionType |
| Mappings | 57 methods | 2 methods | NHibernate.Cfg.Mappings |
| JoinWalker | 55 methods | 3 methods | NHibernate.Loader.JoinWalker |
| IDetachedQuery | 57 methods | 0 method | NHibernate.IDetachedQuery |
| QueryParameters | 55 methods | 2 methods | NHibernate.Engine.QueryParameters |
| IQueryOver<TRoot,TSubType> | 54 methods | 0 method | NHibernate.IQueryOver<TRoot,TSubType> |
| StringHelper | 0 method | 54 methods | NHibernate.Util.StringHelper |
| ICollectionPersister | 53 methods | 0 method | NHibernate.Persister.Collection.ICollectionPersister |
| AnyType | 51 methods | 1 method | NHibernate.Type.AnyType |
| RootClass | 52 methods | 0 method | NHibernate.Mapping.RootClass |
| Property | 51 methods | 1 method | NHibernate.Criterion.Property |
| Column | 51 methods | 0 method | NHibernate.Mapping.Column |
| ASTNode | 51 methods | 0 method | NHibernate.Hql.Ast.ANTLR.Tree.ASTNode |
| SingleTableEntityPersister | 50 methods | 0 method | NHibernate.Persister.Entity.SingleTableEntityPersister |
| Subqueries | 0 method | 50 methods | NHibernate.Criterion.Subqueries |
| ComponentType | 49 methods | 0 method | NHibernate.Type.ComponentType |
| CriteriaQueryTranslator | 48 methods | 1 method | NHibernate.Loader.Criteria.CriteriaQueryTranslator |
| Property | 48 methods | 0 method | NHibernate.Mapping.Property |
| EntityType | 46 methods | 1 method | NHibernate.Type.EntityType |
| Oracle8iDialect | 47 methods | 0 method | NHibernate.Dialect.Oracle8iDialect |
| Projections | 0 method | 46 methods | NHibernate.Criterion.Projections |
| IPersistentCollection | 46 methods | 0 method | NHibernate.Collection.IPersistentCollection |
| CollectionBinder | 40 methods | 6 methods | NHibernate.Cfg.XmlHbmBinding.CollectionBinder |
| PathExpressionParser | 44 methods | 0 method | NHibernate.Hql.Classic.PathExpressionParser |
| IMultiQuery | 43 methods | 0 method | NHibernate.IMultiQuery |
| SimpleValue | 43 methods | 0 method | NHibernate.Mapping.SimpleValue |
| CriteriaImpl+Subcriteria | 43 methods | 0 method | NHibernate.Impl.CriteriaImpl+Subcriteria |
| IStatistics | 43 methods | 0 method | NHibernate.Stat.IStatistics |
| PersistentSet | 43 methods | 0 method | NHibernate.Collection.PersistentSet |
| AbstractType | 40 methods | 1 method | NHibernate.Type.AbstractType |
| MsSql2000Dialect | 40 methods | 1 method | NHibernate.Dialect.MsSql2000Dialect |
| PersistentIdentifierBag | 40 methods | 0 method | NHibernate.Collection.PersistentIdentifierBag |
| JoinedSubclassEntityPersister | 35 methods | 4 methods | NHibernate.Persister.Entity.JoinedSubclassEntityPersister |
| QueryOver<TRoot> | 39 methods | 0 method | NHibernate.Criterion.QueryOver<TRoot> |
| PersistentBag | 38 methods | 1 method | NHibernate.Collection.PersistentBag |
| AbstractBatcher | 37 methods | 2 methods | NHibernate.AdoNet.AbstractBatcher |
| Component | 38 methods | 0 method | NHibernate.Mapping.Component |
| NHybridDataReader | 38 methods | 0 method | NHibernate.Driver.NHybridDataReader |
| InformixDialect | 37 methods | 1 method | NHibernate.Dialect.InformixDialect |
| PersistentList | 38 methods | 0 method | NHibernate.Collection.PersistentList |
| PersistentMap | 38 methods | 0 method | NHibernate.Collection.PersistentMap |
| ActionQueue | 37 methods | 1 method | NHibernate.Engine.ActionQueue |
| ResultSetWrapper | 38 methods | 0 method | NHibernate.AdoNet.ResultSetWrapper |
| ICriteria | 36 methods | 0 method | NHibernate.ICriteria |
| NDataReader | 36 methods | 0 method | NHibernate.Driver.NDataReader |
| ExpressionProcessor | 0 method | 36 methods | NHibernate.Impl.ExpressionProcessor |
| AbstractEntityTuplizer | 36 methods | 0 method | NHibernate.Tuple.Entity.AbstractEntityTuplizer |
| IType | 35 methods | 0 method | NHibernate.Type.IType |
| UnionSubclassEntityPersister | 35 methods | 0 method | NHibernate.Persister.Entity.UnionSubclassEntityPersister |
| DetachedCriteria | 29 methods | 6 methods | NHibernate.Criterion.DetachedCriteria |
| ReflectHelper | 0 method | 34 methods | NHibernate.Util.ReflectHelper |
| CompositeCustomType | 34 methods | 0 method | NHibernate.Type.CompositeCustomType |
| MultiCriteriaImpl | 34 methods | 0 method | NHibernate.Impl.MultiCriteriaImpl |
| LinkedHashMap<TKey,TValue> | 31 methods | 2 methods | NHibernate.Util.LinkedHashMap<TKey,TValue> |
| ArrayHelper | 0 method | 33 methods | NHibernate.Util.ArrayHelper |
| DotNode | 30 methods | 3 methods | NHibernate.Hql.Ast.ANTLR.Tree.DotNode |
| CustomType | 32 methods | 0 method | NHibernate.Type.CustomType |
| SqlString | 28 methods | 4 methods | NHibernate.SqlCommand.SqlString |
| FromElementType | 29 methods | 3 methods | NHibernate.Hql.Ast.ANTLR.Tree.FromElementType |
| CollectionEntry | 32 methods | 0 method | NHibernate.Engine.CollectionEntry |
| Join | 31 methods | 0 method | NHibernate.Mapping.Join |
Statistics
| Stat | InstanceMethods | StaticMethods |
|---|---|---|
| Sum: | 0 | 0 |
| Average: | 0 | 0 |
| Minimum: | 0 | 0 |
| Maximum: | 0 | 0 |
| Standard deviation: | 0 | 0 |
| Variance: | 0 | 0 |
| Rule warning: Types with too many fields |
// <Name>Types with too many fields</Name>
warnif count > 0 from t in JustMyCode.Types where
t.Fields.Count() > 20 &&
!t.IsEnumeration
orderby t.Fields.Count() descending
select new { t, t.InstanceFields, t.StaticFields, t.SizeOfInst }
// Types where Fields.Count() > 20 and not IsEnumeration
// might be hard to understand and maintain
// but there might be cases where it is relevant
// to have a high number of fields.
// For example, the System.Windows.Forms.Control
// standard class has more than 200 fields.
warnif count > 0 from t in JustMyCode.Types where
t.Fields.Count() > 20 &&
!t.IsEnumeration
orderby t.Fields.Count() descending
select new { t, t.InstanceFields, t.StaticFields, t.SizeOfInst }
// Types where Fields.Count() > 20 and not IsEnumeration
// might be hard to understand and maintain
// but there might be cases where it is relevant
// to have a high number of fields.
// For example, the System.Windows.Forms.Control
// standard class has more than 200 fields.
33 types matched
| types | InstanceFields | StaticFields | Size of instance | Full Name |
|---|---|---|---|---|
| types | InstanceFields | StaticFields | Size of instance | Full Name |
| HqlParser | 3 fields | 467 fields | 13 | NHibernate.Hql.Ast.ANTLR.HqlParser |
| HqlSqlWalker | 29 fields | 428 fields | 108 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker |
| SqlGenerator | 8 fields | 422 fields | 36 | NHibernate.Hql.Ast.ANTLR.SqlGenerator |
| HqlLexer | 1 field | 144 fields | 8 | NHibernate.Hql.Ast.ANTLR.HqlLexer |
| AbstractEntityPersister | 85 fields | 3 fields | 331 | NHibernate.Persister.Entity.AbstractEntityPersister |
| AbstractCollectionPersister | 87 fields | 1 field | 291 | NHibernate.Persister.Collection.AbstractCollectionPersister |
| Environment | 0 field | 55 fields | N/A | NHibernate.Cfg.Environment |
| EntityMetamodel | 50 fields | 2 fields | 140 | NHibernate.Tuple.Entity.EntityMetamodel |
| Collection | 48 fields | 3 fields | 150 | NHibernate.Mapping.Collection |
| StatisticsImpl | 37 fields | 13 fields | 261 | NHibernate.Stat.StatisticsImpl |
| QueryTranslator | 45 fields | 4 fields | 188 | NHibernate.Hql.Classic.QueryTranslator |
| Settings | 45 fields | 0 field | 108 | NHibernate.Cfg.Settings |
| NHibernateUtil | 0 field | 44 fields | N/A | NHibernate.NHibernateUtil |
| PersistentClass | 38 fields | 3 fields | 130 | NHibernate.Mapping.PersistentClass |
| HbmConstants | 0 field | 40 fields | 0 | NHibernate.Cfg.HbmConstants |
| EventListeners | 36 fields | 1 field | 144 | NHibernate.Event.EventListeners |
| SingleTableEntityPersister | 34 fields | 2 fields | 458 | NHibernate.Persister.Entity.SingleTableEntityPersister |
| Configuration | 32 fields | 3 fields | 125 | NHibernate.Cfg.Configuration |
| SessionFactoryImpl | 30 fields | 2 fields | 114 | NHibernate.Impl.SessionFactoryImpl |
| QueryParameters | 29 fields | 3 fields | 100 | NHibernate.Engine.QueryParameters |
| TypeFactory | 0 field | 30 fields | 0 | NHibernate.Type.TypeFactory |
| Mappings | 28 fields | 1 field | 106 | NHibernate.Cfg.Mappings |
| SqlTypeFactory | 0 field | 26 fields | N/A | NHibernate.SqlTypes.SqlTypeFactory |
| CriteriaImpl | 25 fields | 0 field | 101 | NHibernate.Impl.CriteriaImpl |
| AbstractQueryImpl | 22 fields | 2 fields | 81 | NHibernate.Impl.AbstractQueryImpl |
| JoinedSubclassEntityPersister | 24 fields | 0 field | 427 | NHibernate.Persister.Entity.JoinedSubclassEntityPersister |
| FromElement | 23 fields | 1 field | 102 | NHibernate.Hql.Ast.ANTLR.Tree.FromElement |
| StatefulPersistenceContext | 19 fields | 4 fields | 70 | NHibernate.Engine.StatefulPersistenceContext |
| SessionImpl | 19 fields | 3 fields | 100 | NHibernate.Impl.SessionImpl |
| PathExpressionParser | 20 fields | 2 fields | 68 | NHibernate.Hql.Classic.PathExpressionParser |
| Log4NetLogger | 1 field | 20 fields | 4 | NHibernate.Log4NetLogger |
| CriteriaQueryTranslator | 18 fields | 3 fields | 72 | NHibernate.Loader.Criteria.CriteriaQueryTranslator |
| QueryLoader | 21 fields | 0 field | 101 | NHibernate.Hql.Ast.ANTLR.Loader.QueryLoader |
Statistics
| Stat | InstanceFields | StaticFields | Size of instance |
|---|---|---|---|
| Sum: | 0 | 0 | 3 937 |
| Average: | 0 | 0 | 131.23 |
| Minimum: | 0 | 0 | 0 |
| Maximum: | 0 | 0 | 458 |
| Standard deviation: | 0 | 0 | 113.97 |
| Variance: | 0 | 0 | 12 989 |
| Rule warning: Types with poor cohesion |
// <Name>Types with poor cohesion</Name>
warnif count > 0 from t in JustMyCode.Types where
(t.LCOM > 0.8 || t.LCOMHS > 0.95) &&
t.NbFields > 10 &&
t.NbMethods >10
orderby t.LCOM descending, t.LCOMHS descending
select new { t, t.LCOM, t.LCOMHS,
t.NbMethods, t.NbFields }
// 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
warnif count > 0 from t in JustMyCode.Types where
(t.LCOM > 0.8 || t.LCOMHS > 0.95) &&
t.NbFields > 10 &&
t.NbMethods >10
orderby t.LCOM descending, t.LCOMHS descending
select new { t, t.LCOM, t.LCOMHS,
t.NbMethods, t.NbFields }
// 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
53 types matched
| types | Lack of Cohesion Of Methods (LCOM) | LCOM Henderson-Sellers (LCOMHS) | # Methods | # Fields | Full Name |
|---|---|---|---|---|---|
| types | Lack of Cohesion Of Methods (LCOM) | LCOM Henderson-Sellers (LCOMHS) | # Methods | # Fields | Full Name |
| AbstractEntityPersister | 0.98717 | 0.99062 | 313 | 88 | NHibernate.Persister.Entity.AbstractEntityPersister |
| HqlLexer | 0.98165 | 0.99074 | 109 | 145 | NHibernate.Hql.Ast.ANTLR.HqlLexer |
| Collection | 0.98029 | 0.98839 | 124 | 51 | NHibernate.Mapping.Collection |
| Dialect | 0.97733 | 0.98389 | 150 | 12 | NHibernate.Dialect.Dialect |
| AbstractCollectionPersister | 0.97579 | 0.98324 | 148 | 88 | NHibernate.Persister.Collection.AbstractCollectionPersister |
| PersistentClass | 0.97494 | 0.98431 | 147 | 41 | NHibernate.Mapping.PersistentClass |
| EntityMetamodel | 0.96741 | 0.98207 | 67 | 52 | NHibernate.Tuple.Entity.EntityMetamodel |
| QueryTranslator | 0.96656 | 0.97568 | 107 | 49 | NHibernate.Hql.Classic.QueryTranslator |
| HqlSqlWalker | 0.96109 | 0.96763 | 148 | 457 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker |
| SqlGenerator | 0.95833 | 0.96948 | 87 | 430 | NHibernate.Hql.Ast.ANTLR.SqlGenerator |
| AbstractQueryImpl | 0.95804 | 0.96734 | 112 | 24 | NHibernate.Impl.AbstractQueryImpl |
| SessionImpl | 0.95722 | 0.96237 | 187 | 22 | NHibernate.Impl.SessionImpl |
| RootClass | 0.95643 | 0.97447 | 54 | 20 | NHibernate.Mapping.RootClass |
| Configuration | 0.95548 | 0.96325 | 124 | 35 | NHibernate.Cfg.Configuration |
| FromElement | 0.9544 | 0.96618 | 82 | 24 | NHibernate.Hql.Ast.ANTLR.Tree.FromElement |
| SingleTableEntityPersister | 0.95362 | 0.97232 | 52 | 36 | NHibernate.Persister.Entity.SingleTableEntityPersister |
| JoinWalker | 0.95028 | 0.96667 | 59 | 15 | NHibernate.Loader.JoinWalker |
| Mappings | 0.95019 | 0.96603 | 61 | 29 | NHibernate.Cfg.Mappings |
| SessionFactoryImpl | 0.94952 | 0.96329 | 70 | 32 | NHibernate.Impl.SessionFactoryImpl |
| EventListeners | 0.94841 | 0.96089 | 77 | 37 | NHibernate.Event.EventListeners |
| CriteriaImpl | 0.94727 | 0.96185 | 66 | 25 | NHibernate.Impl.CriteriaImpl |
| Table | 0.94521 | 0.95833 | 73 | 20 | NHibernate.Mapping.Table |
| JoinedSubclassEntityPersister | 0.94167 | 0.96581 | 40 | 24 | NHibernate.Persister.Entity.JoinedSubclassEntityPersister |
| QueryParameters | 0.94031 | 0.955 | 67 | 32 | NHibernate.Engine.QueryParameters |
| StatisticsImpl | 0.93318 | 0.94597 | 74 | 50 | NHibernate.Stat.StatisticsImpl |
| Join | 0.93226 | 0.9614 | 33 | 18 | NHibernate.Mapping.Join |
| Property | 0.92933 | 0.9483 | 50 | 16 | NHibernate.Mapping.Property |
| MultiQueryImpl | 0.92778 | 0.94122 | 70 | 19 | NHibernate.Impl.MultiQueryImpl |
| AbstractDetachedQuery | 0.9276 | 0.9421 | 66 | 17 | NHibernate.Impl.AbstractDetachedQuery |
| Component | 0.9246 | 0.94715 | 42 | 13 | NHibernate.Mapping.Component |
| StatefulPersistenceContext | 0.91738 | 0.92817 | 86 | 23 | NHibernate.Engine.StatefulPersistenceContext |
| CriteriaQueryTranslator | 0.91346 | 0.93137 | 52 | 21 | NHibernate.Loader.Criteria.CriteriaQueryTranslator |
| Column | 0.91321 | 0.93077 | 53 | 18 | NHibernate.Mapping.Column |
| SimpleValue | 0.90909 | 0.92975 | 45 | 11 | NHibernate.Mapping.SimpleValue |
| QueryLoader | 0.90476 | 0.94095 | 26 | 21 | NHibernate.Hql.Ast.ANTLR.Loader.QueryLoader |
| AbstractPersistentCollection | 0.89935 | 0.9157 | 74 | 12 | NHibernate.Collection.AbstractPersistentCollection |
| AbstractBatcher | 0.89815 | 0.92381 | 41 | 15 | NHibernate.AdoNet.AbstractBatcher |
| PathExpressionParser | 0.88667 | 0.90682 | 45 | 22 | NHibernate.Hql.Classic.PathExpressionParser |
| NhLinqExpression | 0.88095 | 0.94872 | 16 | 11 | NHibernate.Linq.NhLinqExpression |
| SqlSelectBuilder | 0.87778 | 0.92941 | 18 | 11 | NHibernate.SqlCommand.SqlSelectBuilder |
| AbstractEntityTuplizer | 0.87778 | 0.90805 | 38 | 11 | NHibernate.Tuple.Entity.AbstractEntityTuplizer |
| MultiCriteriaImpl | 0.87745 | 0.90252 | 36 | 18 | NHibernate.Impl.MultiCriteriaImpl |
| FromClause | 0.87542 | 0.90278 | 33 | 11 | NHibernate.Hql.Ast.ANTLR.Tree.FromClause |
| QueryTranslatorImpl | 0.87366 | 0.90278 | 31 | 13 | NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl |
| DotNode | 0.87143 | 0.89706 | 35 | 18 | NHibernate.Hql.Ast.ANTLR.Tree.DotNode |
| CollectionEntry | 0.86712 | 0.8912 | 37 | 13 | NHibernate.Engine.CollectionEntry |
| CustomLoader | 0.86325 | 0.91403 | 18 | 13 | NHibernate.Loader.Custom.CustomLoader |
| OuterJoinLoader | 0.85714 | 0.92308 | 14 | 11 | NHibernate.Loader.OuterJoinLoader |
| EntityEntry | 0.85207 | 0.88615 | 26 | 13 | NHibernate.Engine.EntityEntry |
| SqlClientSqlCommandSet | 0.83333 | 0.90909 | 12 | 11 | NHibernate.AdoNet.SqlClientSqlCommandSet |
| IntermediateHqlTree | 0.83333 | 0.88235 | 23 | 13 | NHibernate.Linq.IntermediateHqlTree |
| SQLQueryReturnProcessor | 0.8287 | 0.87745 | 18 | 13 | NHibernate.Loader.Custom.Sql.SQLQueryReturnProcessor |
| WhereParser | 0.80567 | 0.85043 | 19 | 18 | NHibernate.Hql.Classic.WhereParser |
Statistics
| Stat | Lack of Cohesion Of Methods (LCOM) | LCOM Henderson-Sellers (LCOMHS) | # Methods | # Fields |
|---|---|---|---|---|
| Sum: | 48.731 | 49.938 | 3 655 | 2 262 |
| Average: | 0.91944 | 0.94223 | 68.962 | 42.679 |
| Minimum: | 0.80567 | 0.85043 | 12 | 11 |
| Maximum: | 0.98717 | 0.99074 | 313 | 457 |
| Standard deviation: | 0.045524 | 0.033389 | 53.027 | 82.783 |
| Variance: | 0.0020725 | 0.0011148 | 2 811 | 6 853 |
| Code Quality Regression |
|
|
| Rule warning: From now, all methods added or refactored should respect basic quality principles |
// <Name>From now, all methods added or refactored should respect basic quality principles</Name>
warnif count > 0 from m in JustMyCode.Methods where
// *** Only new or modified methods since Baseline for Comparison ***
(m.WasAdded() || m.CodeWasChanged()) &&
// Low Quality methods// Metrics' definitions
( m.NbLinesOfCode > 30 || // http://www.ndepend.com/Metrics.aspx#NbLinesOfCode
m.NbILInstructions > 200 || // http://www.ndepend.com/Metrics.aspx#NbILInstructions
m.CyclomaticComplexity > 20 || // http://www.ndepend.com/Metrics.aspx#CC
m.ILCyclomaticComplexity > 50 || // http://www.ndepend.com/Metrics.aspx#ILCC
m.ILNestingDepth > 4 || // http://www.ndepend.com/Metrics.aspx#ILNestingDepth
m.NbParameters > 5 || // http://www.ndepend.com/Metrics.aspx#NbParameters
m.NbVariables > 8 || // http://www.ndepend.com/Metrics.aspx#NbVariables
m.NbOverloads > 6 )
select new { m, m.NbLinesOfCode, m.NbILInstructions, m.CyclomaticComplexity,
m.ILCyclomaticComplexity, m.ILNestingDepth,
m.NbParameters, m.NbVariables, m.NbOverloads } // http://www.ndepend.com/Metrics.aspx#NbOverloads
// This rule warns if a method with
// low-quality has been added or refactored.
// With NDepend and such rule, you can
// Ensure Quality From Now! as explained here:
// http://codebetter.com/blogs/patricksmacchia/archive/2008/01/01/ensure-the-quality-of-the-code-that-will-be-developed-this-year.aspx
warnif count > 0 from m in JustMyCode.Methods where
// *** Only new or modified methods since Baseline for Comparison ***
(m.WasAdded() || m.CodeWasChanged()) &&
// Low Quality methods// Metrics' definitions
( m.NbLinesOfCode > 30 || // http://www.ndepend.com/Metrics.aspx#NbLinesOfCode
m.NbILInstructions > 200 || // http://www.ndepend.com/Metrics.aspx#NbILInstructions
m.CyclomaticComplexity > 20 || // http://www.ndepend.com/Metrics.aspx#CC
m.ILCyclomaticComplexity > 50 || // http://www.ndepend.com/Metrics.aspx#ILCC
m.ILNestingDepth > 4 || // http://www.ndepend.com/Metrics.aspx#ILNestingDepth
m.NbParameters > 5 || // http://www.ndepend.com/Metrics.aspx#NbParameters
m.NbVariables > 8 || // http://www.ndepend.com/Metrics.aspx#NbVariables
m.NbOverloads > 6 )
select new { m, m.NbLinesOfCode, m.NbILInstructions, m.CyclomaticComplexity,
m.ILCyclomaticComplexity, m.ILNestingDepth,
m.NbParameters, m.NbVariables, m.NbOverloads } // http://www.ndepend.com/Metrics.aspx#NbOverloads
// This rule warns if a method with
// low-quality has been added or refactored.
// With NDepend and such rule, you can
// Ensure Quality From Now! as explained here:
// http://codebetter.com/blogs/patricksmacchia/archive/2008/01/01/ensure-the-quality-of-the-code-that-will-be-developed-this-year.aspx
293 methods matched
The following list of methods is truncated and contains only the first 100 methods of the 293 methods matched. All matched methods could be listed in the report by unchecking the option:
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched methods.
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched methods.
| methods | # lines of code (LOC) | # IL instructions | Cyclomatic Complexity (CC) | IL Cyclomatic Complexity (ILCC) | IL Nesting Depth | # Parameters | # Variables | # Overloads | Full Name |
|---|---|---|---|---|---|---|---|---|---|
| methods | # lines of code (LOC) | # IL instructions | Cyclomatic Complexity (CC) | IL Cyclomatic Complexity (ILCC) | IL Nesting Depth | # Parameters | # Variables | # Overloads | Full Name |
| .cctor() | 53 | 139 | 3 | 5 | 2 | 0 | 3 | 1 | NHibernate.NHibernateUtil..cctor() |
| JoinQueryOver<U>(Expression<Func<TSubType,U>>) | N/A | N/A | N/A | N/A | N/A | 1 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,U>>) |
| JoinQueryOver<U>(Expression<Func<U>>) | N/A | N/A | N/A | N/A | N/A | 1 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <U>>) |
| JoinQueryOver<U>(Expression<Func<TSubType,U>>,Expression<Func<U>>) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,U>>,Expression<Func<U>>) |
| JoinQueryOver<U>(Expression<Func<U>>,Expression<Func<U>>) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <U>>,Expression<Func<U>>) |
| JoinQueryOver<U>(Expression<Func<TSubType,U>>,JoinType) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,U>>,JoinType) |
| JoinQueryOver<U>(Expression<Func<U>>,JoinType) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <U>>,JoinType) |
| JoinQueryOver<U>(Expression<Func<TSubType,U>>,Expression<Func<U>> ,JoinType) | N/A | N/A | N/A | N/A | N/A | 3 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,U>>,Expression<Func<U>>,JoinType) |
| JoinQueryOver<U>(Expression<Func<U>>,Expression<Func<U>>,JoinType) | N/A | N/A | N/A | N/A | N/A | 3 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <U>>,Expression<Func<U>>,JoinType) |
| JoinQueryOver<U>(Expression<Func<TSubType,IEnumerable<U>>>) | N/A | N/A | N/A | N/A | N/A | 1 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,IEnumerable<U>>>) |
| JoinQueryOver<U>(Expression<Func<IEnumerable<U>>>) | N/A | N/A | N/A | N/A | N/A | 1 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <IEnumerable<U>>>) |
| JoinQueryOver<U>(Expression<Func<TSubType,IEnumerable<U>>>,Expression <Func<U>>) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,IEnumerable<U>>>,Expression<Func<U>>) |
| JoinQueryOver<U>(Expression<Func<IEnumerable<U>>>,Expression<Func<U>>) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <IEnumerable<U>>>,Expression<Func<U>>) |
| JoinQueryOver<U>(Expression<Func<TSubType,IEnumerable<U>>>,JoinType) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,IEnumerable<U>>>,JoinType) |
| JoinQueryOver<U>(Expression<Func<IEnumerable<U>>>,JoinType) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <IEnumerable<U>>>,JoinType) |
| JoinQueryOver<U>(Expression<Func<TSubType,IEnumerable<U>>>,Expression <Func<U>>,JoinType) | N/A | N/A | N/A | N/A | N/A | 3 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <TSubType,IEnumerable<U>>>,Expression<Func<U>>,JoinType) |
| JoinQueryOver<U>(Expression<Func<IEnumerable<U>>>,Expression<Func<U>> ,JoinType) | N/A | N/A | N/A | N/A | N/A | 3 | N/A | 16 | NHibernate.IQueryOver<TRoot,TSubType>.JoinQueryOver<U>(Expression<Func <IEnumerable<U>>>,Expression<Func<U>>,JoinType) |
| Add(Type,IQueryOver) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 14 | NHibernate.IMultiCriteria.Add(Type,IQueryOver) |
| Add<T>(IQueryOver<T>) | N/A | N/A | N/A | N/A | N/A | 1 | N/A | 14 | NHibernate.IMultiCriteria.Add<T>(IQueryOver<T>) |
| Add<U>(IQueryOver) | N/A | N/A | N/A | N/A | N/A | 1 | N/A | 14 | NHibernate.IMultiCriteria.Add<U>(IQueryOver) |
| Add<T>(String,IQueryOver<T>) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 14 | NHibernate.IMultiCriteria.Add<T>(String,IQueryOver<T>) |
| Add<U>(String,IQueryOver) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 14 | NHibernate.IMultiCriteria.Add<U>(String,IQueryOver) |
| TypeFromAssembly(AssemblyQualifiedTypeName,Boolean) | 24 | 130 | 9 | 9 | 6 | 2 | 4 | 2 | NHibernate.Util.ReflectHelper.TypeFromAssembly (AssemblyQualifiedTypeName,Boolean) |
| Replace(Object,Object,ISessionImplementor,Object,IDictionary ,ForeignKeyDirection) | 7 | 51 | 3 | 4 | 1 | 6 | 3 | 2 | NHibernate.Type.ComponentType.Replace(Object,Object ,ISessionImplementor,Object,IDictionary,ForeignKeyDirection) |
| Replace(Object[],Object[],IType[],ISessionImplementor,Object ,IDictionary) | 6 | 44 | 2 | 3 | 1 | 6 | 2 | 2 | NHibernate.Type.TypeHelper.Replace(Object[],Object[],IType[] ,ISessionImplementor,Object,IDictionary) |
| Replace(Object[],Object[],IType[],ISessionImplementor,Object ,IDictionary,ForeignKeyDirection) | 8 | 71 | 4 | 7 | 2 | 7 | 2 | 2 | NHibernate.Type.TypeHelper.Replace(Object[],Object[],IType[] ,ISessionImplementor,Object,IDictionary,ForeignKeyDirection) |
| ReplaceAssociations(Object[],Object[],IType[],ISessionImplementor ,Object,IDictionary,ForeignKeyDirection) | 19 | 178 | 10 | 16 | 3 | 7 | 7 | 1 | NHibernate.Type.TypeHelper.ReplaceAssociations(Object[],Object[] ,IType[],ISessionImplementor,Object,IDictionary,ForeignKeyDirection) |
| FindDirty(StandardProperty[],Object[],Object[],Boolean[][],Boolean ,ISessionImplementor) | 16 | 105 | 6 | 9 | 3 | 6 | 6 | 1 | NHibernate.Type.TypeHelper.FindDirty(StandardProperty[],Object[] ,Object[],Boolean[][],Boolean,ISessionImplementor) |
| FindModified(StandardProperty[],Object[],Object[],Boolean[][],Boolean ,ISessionImplementor) | 16 | 105 | 6 | 9 | 3 | 6 | 6 | 1 | NHibernate.Type.TypeHelper.FindModified(StandardProperty[],Object[] ,Object[],Boolean[][],Boolean,ISessionImplementor) |
| RegisterDefaultNetTypes() | 25 | 404 | 1 | 7 | 1 | 0 | 0 | 1 | NHibernate.Type.TypeFactory.RegisterDefaultNetTypes() |
| HeuristicType(String,IDictionary<String,String>) | 30 | 259 | 15 | 18 | 4 | 2 | 5 | 2 | NHibernate.Type.TypeFactory.HeuristicType(String,IDictionary<String ,String>) |
| SqlCreateString(Dialect,IMapping,String,String) | 55 | 422 | 23 | 42 | 3 | 4 | 7 | 1 | NHibernate.Mapping.Table.SqlCreateString(Dialect,IMapping,String ,String) |
| Convert(ISQLExceptionConverter,Exception,String,SqlString,Object[] ,IDictionary<String,TypedValue>) | 4 | 29 | 2 | 3 | 1 | 6 | 1 | 4 | NHibernate.Exceptions.ADOExceptionHelper.Convert (ISQLExceptionConverter,Exception,String,SqlString,Object[] ,IDictionary<String,TypedValue>) |
| InjectFieldInterceptor(Object,String,Type,ISet<String>,ISet<String> ,ISessionImplementor) | 6 | 30 | 2 | 3 | 1 | 6 | 2 | 1 | NHibernate.Intercept.FieldInterceptionHelper.InjectFieldInterceptor (Object,String,Type,ISet<String>,ISet<String>,ISessionImplementor) |
| Execute() | 40 | 302 | 17 | 22 | 3 | 0 | 12 | 1 | NHibernate.Action.EntityUpdateAction.Execute() |
| .ctor(CriteriaImpl,ICriteria,String,String,JoinType,ICriterion) | 11 | 49 | 2 | 2 | 1 | 6 | 0 | 3 | NHibernate.Impl.CriteriaImpl+Subcriteria..ctor(CriteriaImpl,ICriteria ,String,String,JoinType,ICriterion) |
| ListUsingQueryCache() | 23 | 159 | 3 | 4 | 1 | 0 | 12 | 1 | NHibernate.Impl.MultiCriteriaImpl.ListUsingQueryCache() |
| GetResultsFromDatabase(IList) | 53 | 385 | 16 | 28 | 3 | 1 | 19 | 1 | NHibernate.Impl.MultiCriteriaImpl.GetResultsFromDatabase(IList) |
| Add(Type,IQueryOver) | 1 | 10 | 1 | 1 | 0 | 2 | 0 | 14 | NHibernate.Impl.MultiCriteriaImpl.Add(Type,IQueryOver) |
| Add<T>(IQueryOver<T>) | 1 | 9 | 1 | 1 | 0 | 1 | 0 | 14 | NHibernate.Impl.MultiCriteriaImpl.Add<T>(IQueryOver<T>) |
| Add<U>(IQueryOver) | 1 | 9 | 1 | 1 | 0 | 1 | 0 | 14 | NHibernate.Impl.MultiCriteriaImpl.Add<U>(IQueryOver) |
| Add<T>(String,IQueryOver<T>) | 1 | 10 | 1 | 1 | 0 | 2 | 0 | 14 | NHibernate.Impl.MultiCriteriaImpl.Add<T>(String,IQueryOver<T>) |
| Add<U>(String,IQueryOver) | 1 | 10 | 1 | 1 | 0 | 2 | 0 | 14 | NHibernate.Impl.MultiCriteriaImpl.Add<U>(String,IQueryOver) |
| List(IQueryExpression,QueryParameters) | N/A | N/A | N/A | N/A | N/A | 2 | N/A | 11 | NHibernate.Impl.AbstractSessionImpl.List(IQueryExpression ,QueryParameters) |
| List(IQueryExpression,QueryParameters,IList) | N/A | N/A | N/A | N/A | N/A | 3 | N/A | 11 | NHibernate.Impl.AbstractSessionImpl.List(IQueryExpression ,QueryParameters,IList) |
| .ctor(IDbConnection,SessionFactoryImpl,Boolean,Int64,IInterceptor ,EntityMode,Boolean,Boolean,ConnectionReleaseMode) | 24 | 143 | 4 | 6 | 2 | 9 | 0 | 3 | NHibernate.Impl.SessionImpl..ctor(IDbConnection,SessionFactoryImpl ,Boolean,Int64,IInterceptor,EntityMode,Boolean,Boolean ,ConnectionReleaseMode) |
| List(String,QueryParameters,IList) | 15 | 81 | 3 | 5 | 2 | 3 | 3 | 11 | NHibernate.Impl.SessionImpl.List(String,QueryParameters,IList) |
| List(IQueryExpression,QueryParameters) | 3 | 30 | 1 | 1 | 0 | 2 | 1 | 11 | NHibernate.Impl.SessionImpl.List(IQueryExpression,QueryParameters) |
| List(IQueryExpression,QueryParameters,IList) | 15 | 81 | 3 | 5 | 2 | 3 | 3 | 11 | NHibernate.Impl.SessionImpl.List(IQueryExpression,QueryParameters ,IList) |
| Add<T>(String,IQuery) | 3 | 20 | 1 | 1 | 0 | 2 | 0 | 9 | NHibernate.Impl.MultiQueryImpl.Add<T>(String,IQuery) |
| DoList() | 72 | 503 | 22 | 32 | 3 | 0 | 22 | 1 | NHibernate.Impl.MultiQueryImpl.DoList() |
| ListUsingQueryCache() | 27 | 174 | 4 | 6 | 1 | 0 | 13 | 1 | NHibernate.Impl.MultiQueryImpl.ListUsingQueryCache() |
| .ctor(Configuration,IMapping,Settings,EventListeners) | 135 | 820 | 34 | 55 | 4 | 4 | 21 | 1 | NHibernate.Impl.SessionFactoryImpl..ctor(Configuration,IMapping ,Settings,EventListeners) |
| GetImplementors(String) | 35 | 243 | 16 | 24 | 5 | 1 | 10 | 1 | NHibernate.Impl.SessionFactoryImpl.GetImplementors(String) |
| CheckNamedQueries() | 34 | 204 | 9 | 12 | 3 | 0 | 10 | 1 | NHibernate.Impl.SessionFactoryImpl.CheckNamedQueries() |
| BuildCurrentSessionContext() | 13 | 90 | 8 | 9 | 6 | 0 | 3 | 1 | NHibernate.Impl.SessionFactoryImpl.BuildCurrentSessionContext() |
| List(String,QueryParameters,IList) | 13 | 68 | 3 | 5 | 2 | 3 | 3 | 11 | NHibernate.Impl.StatelessSessionImpl.List(String,QueryParameters,IList ) |
| List(IQueryExpression,QueryParameters) | 1 | 3 | 1 | 1 | 0 | 2 | 0 | 11 | NHibernate.Impl.StatelessSessionImpl.List(IQueryExpression ,QueryParameters) |
| List(IQueryExpression,QueryParameters,IList) | 1 | 3 | 1 | 1 | 0 | 3 | 0 | 11 | NHibernate.Impl.StatelessSessionImpl.List(IQueryExpression ,QueryParameters,IList) |
| ExpandParameters(IDictionary<String,TypedValue>) | 30 | 197 | 7 | 14 | 3 | 1 | 13 | 1 | NHibernate.Impl.ExpressionQueryImpl.ExpandParameters(IDictionary <String,TypedValue>) |
| Expand() | 20 | 103 | 3 | 8 | 2 | 0 | 9 | 2 | NHibernate.Impl.ParameterExpander.Expand() |
| .cctor() | 46 | 559 | 1 | 1 | 0 | 0 | 0 | 1 | NHibernate.Impl.ExpressionProcessor..cctor() |
| ToSqlString() | 42 | 332 | 14 | 23 | 2 | 0 | 6 | 1 | NHibernate.SqlCommand.SqlInsertBuilder.ToSqlString() |
| AddJoin(String,String,String[],String[],JoinType,SqlString) | N/A | N/A | N/A | N/A | N/A | 6 | N/A | 2 | NHibernate.SqlCommand.JoinFragment.AddJoin(String,String,String[] ,String[],JoinType,SqlString) |
| AddJoin(String,String,String[],String[],JoinType,SqlString) | 18 | 128 | 8 | 10 | 2 | 6 | 2 | 2 | NHibernate.SqlCommand.ANSIJoinFragment.AddJoin(String,String,String[] ,String[],JoinType,SqlString) |
| ToSqlString() | 52 | 386 | 17 | 26 | 2 | 0 | 8 | 1 | NHibernate.SqlCommand.SqlUpdateBuilder.ToSqlString() |
| RenderWhereStringTemplate(String,String,Dialect,SQLFunctionRegistry) | 63 | 369 | 32 | 42 | 4 | 4 | 17 | 2 | NHibernate.SqlCommand.Template.RenderWhereStringTemplate(String,String ,Dialect,SQLFunctionRegistry) |
| IsFunctionOrKeyword(String,String,Dialect,SQLFunctionRegistry) | 1 | 32 | 6 | 3 | 5 | 4 | 0 | 1 | NHibernate.SqlCommand.Template.IsFunctionOrKeyword(String,String ,Dialect,SQLFunctionRegistry) |
| AddJoin(String,String,String[],String[],JoinType,SqlString) | 2 | 14 | 1 | 1 | 0 | 6 | 0 | 2 | NHibernate.SqlCommand.InformixJoinFragment.AddJoin(String,String ,String[],String[],JoinType,SqlString) |
| ToSqlString() | 33 | 339 | 19 | 23 | 3 | 0 | 4 | 1 | NHibernate.SqlCommand.SqlSelectBuilder.ToSqlString() |
| AddJoin(String,String,String,String[],String[],JoinType,SqlString) | 7 | 50 | 3 | 5 | 1 | 7 | 1 | 3 | NHibernate.SqlCommand.QueryJoinFragment.AddJoin(String,String,String ,String[],String[],JoinType,SqlString) |
| AddJoin(String,String,String[],String[],JoinType,SqlString) | 1 | 12 | 1 | 1 | 0 | 6 | 0 | 3 | NHibernate.SqlCommand.QueryJoinFragment.AddJoin(String,String,String[] ,String[],JoinType,SqlString) |
| ToSqlString() | 21 | 224 | 9 | 12 | 2 | 0 | 3 | 1 | NHibernate.SqlCommand.SqlDeleteBuilder.ToSqlString() |
| AddJoin(String,String,String[],String[],JoinType,SqlString) | 6 | 44 | 3 | 4 | 1 | 6 | 0 | 2 | NHibernate.SqlCommand.OracleJoinFragment.AddJoin(String,String ,String[],String[],JoinType,SqlString) |
| LogSummary() | 29 | 233 | 1 | 1 | 0 | 0 | 0 | 1 | NHibernate.Stat.StatisticsImpl.LogSummary() |
| .ctor(PersistentClass,ISessionFactoryImplementor) | 131 | 842 | 40 | 64 | 4 | 2 | 14 | 1 | NHibernate.Tuple.Entity.EntityMetamodel..ctor(PersistentClass ,ISessionFactoryImplementor) |
| .ctor(EntityMetamodel,PersistentClass) | 31 | 197 | 9 | 16 | 2 | 2 | 4 | 1 | NHibernate.Tuple.Entity.AbstractEntityTuplizer..ctor(EntityMetamodel ,PersistentClass) |
| BuildProxyFactory(PersistentClass,IGetter,ISetter) | 34 | 223 | 19 | 28 | 3 | 3 | 14 | 1 | NHibernate.Tuple.Entity.PocoEntityTuplizer.BuildProxyFactory (PersistentClass,IGetter,ISetter) |
| .ctor() | 46 | 279 | 1 | 1 | 0 | 0 | 0 | 1 | NHibernate.Dialect.Dialect..ctor() |
| ExtractColumnOrAliasNames(SqlString,List<SqlString>&,Dictionary <SqlString,SqlString>&) | 33 | 206 | 18 | 20 | 5 | 3 | 9 | 1 | NHibernate.Dialect.Dialect.ExtractColumnOrAliasNames(SqlString,List <SqlString>&,Dictionary<SqlString,SqlString>&) |
| MoveNext() | 86 | 684 | 31 | 61 | 5 | 0 | 0 | 1 | NHibernate.Dialect .Dialect+QuotedAndParenthesisStringTokenizer+GetEnumerator>d__0 .MoveNext() |
| .ctor() | 34 | 190 | 1 | 1 | 0 | 0 | 0 | 1 | NHibernate.Dialect.PostgreSQLDialect..ctor() |
| .ctor() | 44 | 239 | 1 | 1 | 0 | 0 | 0 | 1 | NHibernate.Dialect.MySQLDialect..ctor() |
| .ctor() | 40 | 223 | 1 | 1 | 0 | 0 | 0 | 1 | NHibernate.Dialect.SybaseASA9Dialect..ctor() |
| .ctor() | 85 | 525 | 1 | 1 | 0 | 0 | 0 | 1 | NHibernate.Dialect.MsSql2000Dialect..ctor() |
| GetLimitString(SqlString,Int32,Int32,Nullable<Int32>,Nullable<Int32>) | 18 | 168 | 7 | 13 | 2 | 5 | 10 | 1 | NHibernate.Dialect.MsSql2005Dialect.GetLimitString(SqlString,Int32 ,Int32,Nullable<Int32>,Nullable<Int32>) |
| .ctor() | 31 | 170 | 1 | 1 | 0 | 0 | 0 | 1 | NHibernate.Dialect.SQLiteDialect..ctor() |
| RegisterDateFunctions() | 31 | 215 | 1 | 1 | 0 | 0 | 0 | 1 | NHibernate.Dialect.SybaseSQLAnywhere10Dialect.RegisterDateFunctions() |
| RegisterStringFunctions() | 49 | 378 | 1 | 1 | 0 | 0 | 0 | 1 | NHibernate.Dialect.SybaseSQLAnywhere10Dialect.RegisterStringFunctions( ) |
| RegisterMiscellaneousFunctions() | 37 | 282 | 1 | 1 | 0 | 0 | 0 | 1 | NHibernate.Dialect.SybaseSQLAnywhere10Dialect .RegisterMiscellaneousFunctions() |
| DoQuery(ISessionImplementor,QueryParameters,Boolean) | 35 | 218 | 12 | 18 | 2 | 3 | 15 | 1 | NHibernate.Loader.Loader.DoQuery(ISessionImplementor,QueryParameters ,Boolean) |
| ReadCollectionElement(Object,Object,ICollectionPersister ,ICollectionAliases,IDataReader,ISessionImplementor) | 16 | 121 | 8 | 8 | 3 | 6 | 4 | 1 | NHibernate.Loader.Loader.ReadCollectionElement(Object,Object ,ICollectionPersister,ICollectionAliases,IDataReader ,ISessionImplementor) |
| GetRow(IDataReader,ILoadable[],EntityKey[],Object,EntityKey,LockMode[] ,IList,ISessionImplementor) | 17 | 121 | 5 | 8 | 2 | 8 | 6 | 1 | NHibernate.Loader.Loader.GetRow(IDataReader,ILoadable[],EntityKey[] ,Object,EntityKey,LockMode[],IList,ISessionImplementor) |
| LoadFromResultSet(IDataReader,Int32,Object,String,EntityKey,String ,LockMode,ILoadable,ISessionImplementor) | 18 | 152 | 7 | 10 | 2 | 9 | 11 | 1 | NHibernate.Loader.Loader.LoadFromResultSet(IDataReader,Int32,Object ,String,EntityKey,String,LockMode,ILoadable,ISessionImplementor) |
| PrepareQueryCommand(QueryParameters,Boolean,ISessionImplementor) | 34 | 226 | 16 | 19 | 2 | 3 | 11 | 1 | NHibernate.Loader.Loader.PrepareQueryCommand(QueryParameters,Boolean ,ISessionImplementor) |
| LoadEntity(ISessionImplementor,Object,IType,Object,String,Object ,IEntityPersister) | 11 | 91 | 4 | 3 | 1 | 7 | 4 | 2 | NHibernate.Loader.Loader.LoadEntity(ISessionImplementor,Object,IType ,Object,String,Object,IEntityPersister) |
| LoadEntity(ISessionImplementor,Object,Object,IType,IType ,IEntityPersister) | 6 | 59 | 2 | 2 | 1 | 6 | 2 | 2 | NHibernate.Loader.Loader.LoadEntity(ISessionImplementor,Object,Object ,IType,IType,IEntityPersister) |
| LoadEntityBatch(ISessionImplementor,Object[],IType,Object,String ,Object,IEntityPersister) | 11 | 73 | 4 | 3 | 1 | 7 | 3 | 1 | NHibernate.Loader.Loader.LoadEntityBatch(ISessionImplementor,Object[] ,IType,Object,String,Object,IEntityPersister) |
| AddAssociationToJoinTree(IAssociationType,String[],String,String,Int32 ,JoinType) | 13 | 86 | 4 | 5 | 2 | 6 | 6 | 1 | NHibernate.Loader.JoinWalker.AddAssociationToJoinTree(IAssociationType ,String[],String,String,Int32,JoinType) |
| .ctor(IAssociationType,String,String[],String,JoinType,SqlString ,ISessionFactoryImplementor,IDictionary<String,IFilter>) | 12 | 59 | 2 | 2 | 1 | 8 | 0 | 1 | NHibernate.Loader.OuterJoinableAssociation..ctor(IAssociationType ,String,String[],String,JoinType,SqlString,ISessionFactoryImplementor ,IDictionary<String,IFilter>) |
Statistics
| Stat | # lines of code (LOC) | # IL instructions | Cyclomatic Complexity (CC) | IL Cyclomatic Complexity (ILCC) | IL Nesting Depth | # Parameters | # Variables | # Overloads |
|---|---|---|---|---|---|---|---|---|
| Sum: | 6 422 | 48 772 | 1 933 | 2 632 | 443 | 905 | 1 240 | 1 596 |
| Average: | 24.052 | 182.67 | 7.2397 | 9.8577 | 1.6592 | 3.0887 | 4.6442 | 5.4471 |
| Minimum: | 1 | 3 | 1 | 1 | 0 | 0 | 0 | 1 |
| Maximum: | 401 | 4 892 | 64 | 64 | 9 | 22 | 46 | 16 |
| Standard deviation: | 37.41 | 397.96 | 8.9092 | 11.575 | 1.803 | 2.5901 | 6.3527 | 6.0251 |
| Variance: | 1 399 | 158 374 | 79.373 | 133.98 | 3.2509 | 6.7088 | 40.357 | 36.302 |
| Rule warning: From now, all types added or refactored should respect basic quality principles |
// <Name>From now, all types added or refactored should respect basic quality principles</Name>
warnif count > 0 from t in JustMyCode.Types where
// *** Only match new or modified types since Baseline for Comparison ***
(t.WasAdded() || t.CodeWasChanged()) &&
// Eliminate interfaces, enumerations or types only with constant fields
// by making sure we are matching type with code.
t.NbLinesOfCode > 10 &&
// Low Quality types Metrics' definitions are available here:
// http://www.ndepend.com/Metrics.aspx#MetricsOnTypes
( // Types with too many methods
t.NbMethods > 20 ||
// Types with too many fields
t.NbFields > 20 ||
// Complex Types that use more than 50 other types
t.NbTypesUsed > 50
)
select new { t, t.Methods, t.Fields, t.TypesUsed }
// This rule warns if a type with
// low-quality has been added or refactored.
// With NDepend and such rule, you can
// Ensure Quality From Now! as explained here:
// http://codebetter.com/blogs/patricksmacchia/archive/2008/01/01/ensure-the-quality-of-the-code-that-will-be-developed-this-year.aspx
warnif count > 0 from t in JustMyCode.Types where
// *** Only match new or modified types since Baseline for Comparison ***
(t.WasAdded() || t.CodeWasChanged()) &&
// Eliminate interfaces, enumerations or types only with constant fields
// by making sure we are matching type with code.
t.NbLinesOfCode > 10 &&
// Low Quality types Metrics' definitions are available here:
// http://www.ndepend.com/Metrics.aspx#MetricsOnTypes
( // Types with too many methods
t.NbMethods > 20 ||
// Types with too many fields
t.NbFields > 20 ||
// Complex Types that use more than 50 other types
t.NbTypesUsed > 50
)
select new { t, t.Methods, t.Fields, t.TypesUsed }
// This rule warns if a type with
// low-quality has been added or refactored.
// With NDepend and such rule, you can
// Ensure Quality From Now! as explained here:
// http://codebetter.com/blogs/patricksmacchia/archive/2008/01/01/ensure-the-quality-of-the-code-that-will-be-developed-this-year.aspx
111 types matched
The following list of types is truncated and contains only the first 100 types of the 111 types matched. All matched types could be listed in the report by unchecking the option:
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched types.
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched types.
| types | Methods | Fields | TypesUsed | Full Name |
|---|---|---|---|---|
| types | Methods | Fields | TypesUsed | Full Name |
| NHibernateUtil | 14 methods | 44 fields | 74 types | NHibernate.NHibernateUtil |
| Log4NetLogger | 23 methods | 21 fields | 18 types | NHibernate.Log4NetLogger |
| StringHelper | 54 methods | 10 fields | 29 types | NHibernate.Util.StringHelper |
| ArrayHelper | 33 methods | 6 fields | 27 types | NHibernate.Util.ArrayHelper |
| IdentityMap | 23 methods | 2 fields | 26 types | NHibernate.Util.IdentityMap |
| ReflectHelper | 34 methods | 6 fields | 53 types | NHibernate.Util.ReflectHelper |
| NullableType | 27 methods | 2 fields | 33 types | NHibernate.Type.NullableType |
| ComponentType | 49 methods | 9 fields | 42 types | NHibernate.Type.ComponentType |
| CustomType | 32 methods | 3 fields | 47 types | NHibernate.Type.CustomType |
| TypeFactory | 78 methods | 30 fields | 97 types | NHibernate.Type.TypeFactory |
| CompositeCustomType | 34 methods | 2 fields | 42 types | NHibernate.Type.CompositeCustomType |
| PersistentClass | 145 methods | 41 fields | 58 types | NHibernate.Mapping.PersistentClass |
| Property | 48 methods | 16 fields | 30 types | NHibernate.Mapping.Property |
| Component | 38 methods | 13 fields | 39 types | NHibernate.Mapping.Component |
| RootClass | 52 methods | 20 fields | 35 types | NHibernate.Mapping.RootClass |
| Table | 71 methods | 20 fields | 45 types | NHibernate.Mapping.Table |
| NDataReader | 36 methods | 7 fields | 29 types | NHibernate.Driver.NDataReader |
| DriverBase | 26 methods | 3 fields | 38 types | NHibernate.Driver.DriverBase |
| NHybridDataReader | 38 methods | 4 fields | 26 types | NHibernate.Driver.NHybridDataReader |
| AbstractQueryImpl | 110 methods | 24 fields | 80 types | NHibernate.Impl.AbstractQueryImpl |
| CriteriaImpl | 62 methods | 25 fields | 59 types | NHibernate.Impl.CriteriaImpl |
| CriteriaImpl+Subcriteria | 43 methods | 7 fields | 31 types | NHibernate.Impl.CriteriaImpl+Subcriteria |
| MultiCriteriaImpl | 34 methods | 18 fields | 81 types | NHibernate.Impl.MultiCriteriaImpl |
| AbstractSessionImpl | 86 methods | 6 fields | 67 types | NHibernate.Impl.AbstractSessionImpl |
| SessionImpl | 183 methods | 22 fields | 158 types | NHibernate.Impl.SessionImpl |
| MultiQueryImpl | 68 methods | 19 fields | 87 types | NHibernate.Impl.MultiQueryImpl |
| SessionFactoryImpl | 68 methods | 32 fields | 124 types | NHibernate.Impl.SessionFactoryImpl |
| StatelessSessionImpl | 92 methods | 4 fields | 87 types | NHibernate.Impl.StatelessSessionImpl |
| ExpressionProcessor | 36 methods | 4 fields | 51 types | NHibernate.Impl.ExpressionProcessor |
| SqlString | 32 methods | 3 fields | 23 types | NHibernate.SqlCommand.SqlString |
| SqlStringBuilder | 19 methods | 2 fields | 16 types | NHibernate.SqlCommand.SqlStringBuilder |
| AdoTransaction | 20 methods | 10 fields | 31 types | NHibernate.Transaction.AdoTransaction |
| StatisticsImpl | 71 methods | 50 fields | 34 types | NHibernate.Stat.StatisticsImpl |
| SqlTypeFactory | 15 methods | 26 fields | 25 types | NHibernate.SqlTypes.SqlTypeFactory |
| EntityMetamodel | 65 methods | 52 fields | 59 types | NHibernate.Tuple.Entity.EntityMetamodel |
| AbstractEntityTuplizer | 36 methods | 11 fields | 46 types | NHibernate.Tuple.Entity.AbstractEntityTuplizer |
| PocoEntityTuplizer | 21 methods | 9 fields | 56 types | NHibernate.Tuple.Entity.PocoEntityTuplizer |
| Dialect | 148 methods | 12 fields | 82 types | NHibernate.Dialect.Dialect |
| Oracle8iDialect | 47 methods | 0 field | 34 types | NHibernate.Dialect.Oracle8iDialect |
| MySQLDialect | 21 methods | 1 field | 26 types | NHibernate.Dialect.MySQLDialect |
| MsSql2000Dialect | 41 methods | 1 field | 45 types | NHibernate.Dialect.MsSql2000Dialect |
| InformixDialect | 38 methods | 0 field | 34 types | NHibernate.Dialect.InformixDialect |
| SQLiteDialect | 21 methods | 0 field | 20 types | NHibernate.Dialect.SQLiteDialect |
| SybaseSQLAnywhere10Dialect | 63 methods | 0 field | 27 types | NHibernate.Dialect.SybaseSQLAnywhere10Dialect |
| AbstractTableMetadata | 24 methods | 7 fields | 23 types | NHibernate.Dialect.Schema.AbstractTableMetadata |
| Loader | 76 methods | 4 fields | 102 types | NHibernate.Loader.Loader |
| JoinWalker | 58 methods | 15 fields | 53 types | NHibernate.Loader.JoinWalker |
| CriteriaQueryTranslator | 49 methods | 21 fields | 75 types | NHibernate.Loader.Criteria.CriteriaQueryTranslator |
| SQLQueryReturnProcessor | 16 methods | 13 fields | 53 types | NHibernate.Loader.Custom.Sql.SQLQueryReturnProcessor |
| AbstractEntityPersister | 311 methods | 88 fields | 168 types | NHibernate.Persister.Entity.AbstractEntityPersister |
| SingleTableEntityPersister | 50 methods | 36 fields | 70 types | NHibernate.Persister.Entity.SingleTableEntityPersister |
| AbstractCollectionPersister | 146 methods | 88 fields | 115 types | NHibernate.Persister.Collection.AbstractCollectionPersister |
| QueryOverBuilderExtensions | 30 methods | 0 field | 15 types | NHibernate.Criterion.QueryOverBuilderExtensions |
| Subqueries | 50 methods | 0 field | 19 types | NHibernate.Criterion.Subqueries |
| Restrictions | 72 methods | 0 field | 49 types | NHibernate.Criterion.Restrictions |
| QueryOver<TRoot> | 39 methods | 0 field | 27 types | NHibernate.Criterion.QueryOver<TRoot> |
| QueryOver<TRoot,TSubType> | 114 methods | 0 field | 46 types | NHibernate.Criterion.QueryOver<TRoot,TSubType> |
| Projections | 46 methods | 0 field | 35 types | NHibernate.Criterion.Projections |
| ProjectionList | 21 methods | 1 field | 34 types | NHibernate.Criterion.ProjectionList |
| DetachedCriteria | 35 methods | 2 fields | 23 types | NHibernate.Criterion.DetachedCriteria |
| QueryOverProjectionBuilder<T> | 22 methods | 2 fields | 15 types | NHibernate.Criterion.Lambda.QueryOverProjectionBuilder<T> |
| QueryTranslator | 104 methods | 49 fields | 104 types | NHibernate.Hql.Classic.QueryTranslator |
| HqlTreeBuilder | 78 methods | 1 field | 89 types | NHibernate.Hql.Ast.HqlTreeBuilder |
| HqlParser | 96 methods | 470 fields | 115 types | NHibernate.Hql.Ast.ANTLR.HqlParser |
| HqlSqlWalker | 144 methods | 457 fields | 182 types | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker |
| QueryTranslatorImpl | 29 methods | 13 fields | 66 types | NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl |
| SqlGenerator | 83 methods | 430 fields | 59 types | NHibernate.Hql.Ast.ANTLR.SqlGenerator |
| HqlLexer | 105 methods | 145 fields | 28 types | NHibernate.Hql.Ast.ANTLR.HqlLexer |
| JoinProcessor | 7 methods | 3 fields | 54 types | NHibernate.Hql.Ast.ANTLR.Util.JoinProcessor |
| ASTNode | 51 methods | 7 fields | 25 types | NHibernate.Hql.Ast.ANTLR.Tree.ASTNode |
| FromElementType | 32 methods | 9 fields | 42 types | NHibernate.Hql.Ast.ANTLR.Tree.FromElementType |
| DotNode | 33 methods | 18 fields | 54 types | NHibernate.Hql.Ast.ANTLR.Tree.DotNode |
| FromElement | 80 methods | 24 fields | 46 types | NHibernate.Hql.Ast.ANTLR.Tree.FromElement |
| FromClause | 31 methods | 11 fields | 45 types | NHibernate.Hql.Ast.ANTLR.Tree.FromClause |
| HqlSqlWalkerTreeAdaptor | 4 methods | 1 field | 54 types | NHibernate.Hql.Ast.ANTLR.Tree.HqlSqlWalkerTreeAdaptor |
| SelectClause | 22 methods | 10 fields | 42 types | NHibernate.Hql.Ast.ANTLR.Tree.SelectClause |
| FromElementFactory | 18 methods | 11 fields | 41 types | NHibernate.Hql.Ast.ANTLR.Tree.FromElementFactory |
| AbstractStatementExecutor | 14 methods | 3 fields | 51 types | NHibernate.Hql.Ast.ANTLR.Exec.AbstractStatementExecutor |
| MultiTableUpdateExecutor | 5 methods | 5 fields | 52 types | NHibernate.Hql.Ast.ANTLR.Exec.MultiTableUpdateExecutor |
| ReadWriteCache | 19 methods | 4 fields | 20 types | NHibernate.Cache.ReadWriteCache |
| EventListeners | 75 methods | 37 fields | 71 types | NHibernate.Event.EventListeners |
| AbstractSaveEventListener | 17 methods | 1 field | 54 types | NHibernate.Event.Default.AbstractSaveEventListener |
| DefaultLoadEventListener | 12 methods | 4 fields | 66 types | NHibernate.Event.Default.DefaultLoadEventListener |
| AbstractFlushingEventListener | 10 methods | 1 field | 59 types | NHibernate.Event.Default.AbstractFlushingEventListener |
| PersistentIdentifierBag | 40 methods | 2 fields | 33 types | NHibernate.Collection.PersistentIdentifierBag |
| PersistentArrayHolder | 30 methods | 4 fields | 30 types | NHibernate.Collection.PersistentArrayHolder |
| PersistentMap | 38 methods | 1 field | 38 types | NHibernate.Collection.PersistentMap |
| PersistentGenericMap<TKey,TValue> | 24 methods | 1 field | 36 types | NHibernate.Collection.Generic.PersistentGenericMap<TKey,TValue> |
| Mappings | 59 methods | 29 fields | 46 types | NHibernate.Cfg.Mappings |
| SettingsFactory | 6 methods | 2 fields | 57 types | NHibernate.Cfg.SettingsFactory |
| Environment | 12 methods | 55 fields | 34 types | NHibernate.Cfg.Environment |
| Configuration | 120 methods | 35 fields | 178 types | NHibernate.Cfg.Configuration |
| ClassBinder | 31 methods | 6 fields | 94 types | NHibernate.Cfg.XmlHbmBinding.ClassBinder |
| MappingRootBinder | 14 methods | 1 field | 51 types | NHibernate.Cfg.XmlHbmBinding.MappingRootBinder |
| RootClassBinder | 9 methods | 0 field | 72 types | NHibernate.Cfg.XmlHbmBinding.RootClassBinder |
| PropertiesBinder | 21 methods | 8 fields | 78 types | NHibernate.Cfg.XmlHbmBinding.PropertiesBinder |
| ValuePropertyBinder | 16 methods | 1 field | 55 types | NHibernate.Cfg.XmlHbmBinding.ValuePropertyBinder |
| CollectionBinder | 46 methods | 3 fields | 120 types | NHibernate.Cfg.XmlHbmBinding.CollectionBinder |
| ResultSetMappingBinder | 15 methods | 0 field | 57 types | NHibernate.Cfg.XmlHbmBinding.ResultSetMappingBinder |
| DbIntegrationConfigurationProperties | 20 methods | 1 field | 15 types | NHibernate.Cfg.Loquacious.DbIntegrationConfigurationProperties |
Statistics
| Stat | Methods | Fields | TypesUsed |
|---|---|---|---|
| Sum: | 0 | 0 | 0 |
| Average: | 0 | 0 | 0 |
| Minimum: | 0 | 0 | 0 |
| Maximum: | 0 | 0 | 0 |
| Standard deviation: | 0 | 0 | 0 |
| Variance: | 0 | 0 | 0 |
| Rule warning: From now, all types added or refactored should be 100% covered by tests |
// <Name>From now, all types added or refactored should be 100% covered by tests</Name>
warnif count > 0 from t in JustMyCode.Types where
// Match methods new or modified since Baseline for Comparison...
(t.WasAdded() || t.CodeWasChanged()) &&
// ...that are not 100% covered by tests
t.PercentageCoverage < 100
let methodsCulprit = t.Methods.Where(m => m.PercentageCoverage < 100)
select new { t, t.PercentageCoverage, methodsCulprit }
// Having types 100% covered by tests is a good idea because
// the small portion of code hard to cover, is also the
// portion of code that is the most likely to contain bugs.
warnif count > 0 from t in JustMyCode.Types where
// Match methods new or modified since Baseline for Comparison...
(t.WasAdded() || t.CodeWasChanged()) &&
// ...that are not 100% covered by tests
t.PercentageCoverage < 100
let methodsCulprit = t.Methods.Where(m => m.PercentageCoverage < 100)
select new { t, t.PercentageCoverage, methodsCulprit }
// Having types 100% covered by tests is a good idea because
// the small portion of code hard to cover, is also the
// portion of code that is the most likely to contain bugs.
497 types matched
The following list of types is truncated and contains only the first 100 types of the 497 types matched. All matched types could be listed in the report by unchecking the option:
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched types.
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched types.
| types | Percentage Coverage | methodsCulprit | Full Name |
|---|---|---|---|
| types | Percentage Coverage | methodsCulprit | Full Name |
| ADOException | 22 | 2 methods | NHibernate.ADOException |
| NHibernateUtil | 86 | 9 methods | NHibernate.NHibernateUtil |
| LazyInitializationException | 75 | 0 method | NHibernate.LazyInitializationException |
| AssertionFailure | 0 | 0 method | NHibernate.AssertionFailure |
| LoggerProvider | 72 | 3 methods | NHibernate.LoggerProvider |
| NoLoggingLoggerFactory | 66 | 1 method | NHibernate.NoLoggingLoggerFactory |
| NoLoggingInternalLogger | 20 | 18 methods | NHibernate.NoLoggingInternalLogger |
| NonUniqueResultException | 0 | 0 method | NHibernate.NonUniqueResultException |
| ConnectionReleaseModeParser | 40 | 2 methods | NHibernate.ConnectionReleaseModeParser |
| StringHelper | 83 | 15 methods | NHibernate.Util.StringHelper |
| StringHelper+<>c__DisplayClass1 | 0 | 1 method | NHibernate.Util.StringHelper+<>c__DisplayClass1 |
| JoinedEnumerable | 92 | 1 method | NHibernate.Util.JoinedEnumerable |
| ADOExceptionReporter | 72 | 1 method | NHibernate.Util.ADOExceptionReporter |
| ExpressionsHelper | 66 | 1 method | NHibernate.Util.ExpressionsHelper |
| PropertiesHelper | 84 | 2 methods | NHibernate.Util.PropertiesHelper |
| ArrayHelper | 71 | 11 methods | NHibernate.Util.ArrayHelper |
| IdentityMap | 76 | 9 methods | NHibernate.Util.IdentityMap |
| ReflectHelper | 80 | 15 methods | NHibernate.Util.ReflectHelper |
| NullableType | 83 | 4 methods | NHibernate.Type.NullableType |
| GenericBagType<T> | 85 | 1 method | NHibernate.Type.GenericBagType<T> |
| AbstractCharType | 60 | 6 methods | NHibernate.Type.AbstractCharType |
| DbTimestampType | 70 | 2 methods | NHibernate.Type.DbTimestampType |
| DateTimeOffsetType | 57 | 10 methods | NHibernate.Type.DateTimeOffsetType |
| ComponentType | 82 | 17 methods | NHibernate.Type.ComponentType |
| MapType | 58 | 5 methods | NHibernate.Type.MapType |
| GenericMapType<TKey,TValue> | 91 | 2 methods | NHibernate.Type.GenericMapType<TKey,TValue> |
| XmlDocType | 78 | 4 methods | NHibernate.Type.XmlDocType |
| TypeHelper | 96 | 3 methods | NHibernate.Type.TypeHelper |
| CustomType | 34 | 17 methods | NHibernate.Type.CustomType |
| AbstractBinaryType | 26 | 9 methods | NHibernate.Type.AbstractBinaryType |
| XDocType | 75 | 4 methods | NHibernate.Type.XDocType |
| UriType | 63 | 3 methods | NHibernate.Type.UriType |
| AbstractDateTimeSpecificKindType | 56 | 4 methods | NHibernate.Type.AbstractDateTimeSpecificKindType |
| EnumStringType<T> | 75 | 1 method | NHibernate.Type.EnumStringType<T> |
| TypeFactory | 88 | 14 methods | NHibernate.Type.TypeFactory |
| DateTime2Type | 72 | 2 methods | NHibernate.Type.DateTime2Type |
| CompositeCustomType | 77 | 11 methods | NHibernate.Type.CompositeCustomType |
| DateType | 65 | 8 methods | NHibernate.Type.DateType |
| PersistentClass | 85 | 19 methods | NHibernate.Mapping.PersistentClass |
| Property | 88 | 7 methods | NHibernate.Mapping.Property |
| Component | 86 | 11 methods | NHibernate.Mapping.Component |
| RootClass | 92 | 5 methods | NHibernate.Mapping.RootClass |
| ForeignKey | 90 | 3 methods | NHibernate.Mapping.ForeignKey |
| Any | 75 | 4 methods | NHibernate.Mapping.Any |
| Table | 68 | 27 methods | NHibernate.Mapping.Table |
| ADOExceptionHelper | 76 | 3 methods | NHibernate.Exceptions.ADOExceptionHelper |
| SqlParseException | 0 | 0 method | NHibernate.Exceptions.SqlParseException |
| GenericADOException | 25 | 0 method | NHibernate.Exceptions.GenericADOException |
| SQLExceptionConverterFactory | 66 | 3 methods | NHibernate.Exceptions.SQLExceptionConverterFactory |
| FieldInterceptionHelper | 68 | 3 methods | NHibernate.Intercept.FieldInterceptionHelper |
| AbstractFieldInterceptor | 69 | 6 methods | NHibernate.Intercept.AbstractFieldInterceptor |
| ReflectionDriveConnectionCommandProvider | 77 | 0 method | NHibernate.Driver.ReflectionDriveConnectionCommandProvider |
| NDataReader | 50 | 23 methods | NHibernate.Driver.NDataReader |
| DriverBase | 59 | 9 methods | NHibernate.Driver.DriverBase |
| ReflectionBasedDriver | 83 | 0 method | NHibernate.Driver.ReflectionBasedDriver |
| MySqlDataDriver | 0 | 6 methods | NHibernate.Driver.MySqlDataDriver |
| OracleDataClientDriver | 0 | 6 methods | NHibernate.Driver.OracleDataClientDriver |
| NpgsqlDriver | 0 | 6 methods | NHibernate.Driver.NpgsqlDriver |
| CsharpSqliteDriver | 0 | 4 methods | NHibernate.Driver.CsharpSqliteDriver |
| SqlStringFormatter | 81 | 4 methods | NHibernate.Driver.SqlStringFormatter |
| SQLite20Driver | 0 | 5 methods | NHibernate.Driver.SQLite20Driver |
| FirebirdClientDriver | 0 | 3 methods | NHibernate.Driver.FirebirdClientDriver |
| OdbcDriver | 0 | 8 methods | NHibernate.Driver.OdbcDriver |
| IfxDriver | 0 | 3 methods | NHibernate.Driver.IfxDriver |
| SQLiteDriver | 0 | 4 methods | NHibernate.Driver.SQLiteDriver |
| NHybridDataReader | 58 | 22 methods | NHibernate.Driver.NHybridDataReader |
| OracleClientDriver | 15 | 5 methods | NHibernate.Driver.OracleClientDriver |
| DB2Driver | 0 | 4 methods | NHibernate.Driver.DB2Driver |
| EntityAction | 61 | 8 methods | NHibernate.Action.EntityAction |
| EntityUpdateAction | 82 | 4 methods | NHibernate.Action.EntityUpdateAction |
| EntityDeleteAction | 79 | 4 methods | NHibernate.Action.EntityDeleteAction |
| CollectionAction | 75 | 4 methods | NHibernate.Action.CollectionAction |
| CollectionUpdateAction | 91 | 2 methods | NHibernate.Action.CollectionUpdateAction |
| EntityInsertAction | 67 | 7 methods | NHibernate.Action.EntityInsertAction |
| EntityIdentityInsertAction | 70 | 4 methods | NHibernate.Action.EntityIdentityInsertAction |
| BulkOperationCleanupAction | 97 | 3 methods | NHibernate.Action.BulkOperationCleanupAction |
| FutureBatch<TQueryApproach,TMultiApproach> | 96 | 1 method | NHibernate.Impl.FutureBatch<TQueryApproach,TMultiApproach> |
| MultipleQueriesCacheAssembler | 92 | 4 methods | NHibernate.Impl.MultipleQueriesCacheAssembler |
| AbstractQueryImpl | 75 | 36 methods | NHibernate.Impl.AbstractQueryImpl |
| SessionFactoryObjectFactory | 69 | 3 methods | NHibernate.Impl.SessionFactoryObjectFactory |
| EnumerableImpl | 94 | 3 methods | NHibernate.Impl.EnumerableImpl |
| CriteriaImpl | 76 | 13 methods | NHibernate.Impl.CriteriaImpl |
| CriteriaImpl+Subcriteria | 59 | 20 methods | NHibernate.Impl.CriteriaImpl+Subcriteria |
| MultiCriteriaImpl | 89 | 9 methods | NHibernate.Impl.MultiCriteriaImpl |
| AbstractSessionImpl | 92 | 5 methods | NHibernate.Impl.AbstractSessionImpl |
| SessionImpl | 85 | 49 methods | NHibernate.Impl.SessionImpl |
| MultiQueryImpl | 62 | 37 methods | NHibernate.Impl.MultiQueryImpl |
| DelayedEnumerator<T> | 75 | 1 method | NHibernate.Impl.DelayedEnumerator<T> |
| DelayedEnumerator<T>+<get_Enumerable>d__0 | 75 | 1 method | NHibernate.Impl.DelayedEnumerator<T>+<get_Enumerable>d__0 |
| SessionFactoryImpl | 72 | 29 methods | NHibernate.Impl.SessionFactoryImpl |
| StatelessSessionImpl | 70 | 50 methods | NHibernate.Impl.StatelessSessionImpl |
| ExpressionQueryImpl | 76 | 7 methods | NHibernate.Impl.ExpressionQueryImpl |
| FutureValue<T> | 84 | 1 method | NHibernate.Impl.FutureValue<T> |
| ExpressionProcessor | 89 | 14 methods | NHibernate.Impl.ExpressionProcessor |
| Printer | 17 | 4 methods | NHibernate.Impl.Printer |
| DistinctRootEntityResultTransformer | 92 | 1 method | NHibernate.Transform.DistinctRootEntityResultTransformer |
| AliasToBeanResultTransformer | 76 | 1 method | NHibernate.Transform.AliasToBeanResultTransformer |
| SqlInsertBuilder | 89 | 4 methods | NHibernate.SqlCommand.SqlInsertBuilder |
| JoinFragment | 76 | 2 methods | NHibernate.SqlCommand.JoinFragment |
| ANSIJoinFragment | 70 | 5 methods | NHibernate.SqlCommand.ANSIJoinFragment |
Statistics
| Stat | Percentage Coverage | methodsCulprit |
|---|---|---|
| Sum: | 30 662 | 0 |
| Average: | 61.694 | 0 |
| Minimum: | 0 | 0 |
| Maximum: | 98 | 0 |
| Standard deviation: | 32.757 | 0 |
| Variance: | 1 073 | 0 |
| Rule warning: Avoid making complex methods even more complex (Source CC) |
// <Name>Avoid making complex methods even more complex (Source CC)</Name>
// To visualize changes in code, right-click a matched method and select:
// - Compare older and newer versions of source file
// - Compare older and newer versions disassembled with Reflector
warnif count > 0
from m in JustMyCode.Methods where
!m.IsAbstract &&
m.IsPresentInBothBuilds() &&
m.CodeWasChanged()
let oldCC = m.OlderVersion().CyclomaticComplexity
where oldCC > 6 && m.CyclomaticComplexity > oldCC
select new { m,
oldCC ,
newCC = m.CyclomaticComplexity ,
oldLoc = m.OlderVersion().NbLinesOfCode,
newLoc = m.NbLinesOfCode,
}
// To visualize changes in code, right-click a matched method and select:
// - Compare older and newer versions of source file
// - Compare older and newer versions disassembled with Reflector
warnif count > 0
from m in JustMyCode.Methods where
!m.IsAbstract &&
m.IsPresentInBothBuilds() &&
m.CodeWasChanged()
let oldCC = m.OlderVersion().CyclomaticComplexity
where oldCC > 6 && m.CyclomaticComplexity > oldCC
select new { m,
oldCC ,
newCC = m.CyclomaticComplexity ,
oldLoc = m.OlderVersion().NbLinesOfCode,
newLoc = m.NbLinesOfCode,
}
16 methods matched
| methods | oldCC | newCC | oldLoc | newLoc | Full Name |
|---|---|---|---|---|---|
| methods | oldCC | newCC | oldLoc | newLoc | Full Name |
| Intercept(Object,String,Object) | 7 | 10 | 13 | 14 | NHibernate.Intercept.AbstractFieldInterceptor.Intercept(Object,String ,Object) |
| SetDefaultParameterSize(IDbDataParameter,SqlType) | 9 | 11 | 14 | 16 | NHibernate.Driver.SqlClientDriver.SetDefaultParameterSize (IDbDataParameter,SqlType) |
| GetImplementors(String) | 15 | 16 | 33 | 35 | NHibernate.Impl.SessionFactoryImpl.GetImplementors(String) |
| BuildCurrentSessionContext() | 7 | 8 | 12 | 13 | NHibernate.Impl.SessionFactoryImpl.BuildCurrentSessionContext() |
| TransformTuple(Object[],String[]) | 9 | 10 | 19 | 21 | NHibernate.Transform.AliasToBeanResultTransformer.TransformTuple (Object[],String[]) |
| RenderWhereStringTemplate(String,String,Dialect,SQLFunctionRegistry) | 30 | 32 | 61 | 63 | NHibernate.SqlCommand.Template.RenderWhereStringTemplate(String,String ,Dialect,SQLFunctionRegistry) |
| .ctor(PersistentClass,ISessionFactoryImplementor) | 33 | 40 | 117 | 131 | NHibernate.Tuple.Entity.EntityMetamodel..ctor(PersistentClass ,ISessionFactoryImplementor) |
| Delete(Object,Object,Int32,Object,SqlCommandInfo,ISessionImplementor ,Object[]) | 21 | 22 | 43 | 43 | NHibernate.Persister.Entity.AbstractEntityPersister.Delete(Object ,Object,Int32,Object,SqlCommandInfo,ISessionImplementor,Object[]) |
| WeakKeywords() | 11 | 14 | 14 | 14 | NHibernate.Hql.Ast.ANTLR.HqlParser.WeakKeywords() |
| DetermineDecimalRepresentation(String,Int32) | 8 | 11 | 11 | 14 | NHibernate.Hql.Ast.ANTLR.Util.LiteralProcessor .DetermineDecimalRepresentation(String,Int32) |
| SetConstantValue(DotNode,String,Object) | 13 | 14 | 32 | 34 | NHibernate.Hql.Ast.ANTLR.Util.LiteralProcessor.SetConstantValue (DotNode,String,Object) |
| get_DataType() | 9 | 10 | 8 | 9 | NHibernate.Hql.Ast.ANTLR.Tree.LiteralNode.get_DataType() |
| Create(IToken) | 63 | 64 | 75 | 75 | NHibernate.Hql.Ast.ANTLR.Tree.HqlSqlWalkerTreeAdaptor.Create(IToken) |
| ValidateFilterDefs() | 9 | 10 | 31 | 36 | NHibernate.Cfg.Configuration.ValidateFilterDefs() |
| BindComponent(Type,String,HbmCompositeId) | 9 | 10 | 26 | 28 | NHibernate.Cfg.XmlHbmBinding.ClassCompositeIdBinder.BindComponent(Type ,String,HbmCompositeId) |
| Execute(Action<String>,Boolean) | 9 | 10 | 38 | 42 | NHibernate.Tool.hbm2ddl.SchemaUpdate.Execute(Action<String>,Boolean) |
Statistics
| Stat | oldCC | newCC | oldLoc | newLoc |
|---|---|---|---|---|
| Sum: | 262 | 292 | 547 | 588 |
| Average: | 16.375 | 18.25 | 34.188 | 36.75 |
| Minimum: | 7 | 8 | 8 | 9 |
| Maximum: | 63 | 64 | 117 | 131 |
| Standard deviation: | 14.3 | 14.639 | 28.094 | 30.368 |
| Variance: | 204.48 | 214.31 | 789.28 | 922.19 |
| Rule warning: Avoid making complex methods even more complex (IL CC) |
// <Name>Avoid making complex methods even more complex (IL CC)</Name>
// To visualize changes in code, right-click a matched method and select:
// - Compare older and newer versions of source file
// - Compare older and newer versions disassembled with Reflector
warnif count > 0
from m in JustMyCode.Methods where
!m.IsAbstract &&
m.IsPresentInBothBuilds() &&
m.CodeWasChanged()
let oldCC = m.OlderVersion().ILCyclomaticComplexity
where oldCC > 10 && m.ILCyclomaticComplexity > oldCC
select new { m,
oldCC ,
newCC = m.ILCyclomaticComplexity ,
oldLoc = m.OlderVersion().NbLinesOfCode,
newLoc = m.NbLinesOfCode,
}
// To visualize changes in code, right-click a matched method and select:
// - Compare older and newer versions of source file
// - Compare older and newer versions disassembled with Reflector
warnif count > 0
from m in JustMyCode.Methods where
!m.IsAbstract &&
m.IsPresentInBothBuilds() &&
m.CodeWasChanged()
let oldCC = m.OlderVersion().ILCyclomaticComplexity
where oldCC > 10 && m.ILCyclomaticComplexity > oldCC
select new { m,
oldCC ,
newCC = m.ILCyclomaticComplexity ,
oldLoc = m.OlderVersion().NbLinesOfCode,
newLoc = m.NbLinesOfCode,
}
14 methods matched
| methods | oldCC | newCC | oldLoc | newLoc | Full Name |
|---|---|---|---|---|---|
| methods | oldCC | newCC | oldLoc | newLoc | Full Name |
| Intercept(Object,String,Object) | 11 | 12 | 13 | 14 | NHibernate.Intercept.AbstractFieldInterceptor.Intercept(Object,String ,Object) |
| SetDefaultParameterSize(IDbDataParameter,SqlType) | 11 | 13 | 14 | 16 | NHibernate.Driver.SqlClientDriver.SetDefaultParameterSize (IDbDataParameter,SqlType) |
| GetImplementors(String) | 23 | 24 | 33 | 35 | NHibernate.Impl.SessionFactoryImpl.GetImplementors(String) |
| TransformTuple(Object[],String[]) | 11 | 12 | 19 | 21 | NHibernate.Transform.AliasToBeanResultTransformer.TransformTuple (Object[],String[]) |
| RenderWhereStringTemplate(String,String,Dialect,SQLFunctionRegistry) | 40 | 42 | 61 | 63 | NHibernate.SqlCommand.Template.RenderWhereStringTemplate(String,String ,Dialect,SQLFunctionRegistry) |
| ExecuteWorkInIsolation(ISessionImplementor,IIsolatedWork,Boolean) | 14 | 15 | 22 | 23 | NHibernate.Transaction.AdoNetTransactionFactory.ExecuteWorkInIsolation (ISessionImplementor,IIsolatedWork,Boolean) |
| .ctor(PersistentClass,ISessionFactoryImplementor) | 55 | 64 | 117 | 131 | NHibernate.Tuple.Entity.EntityMetamodel..ctor(PersistentClass ,ISessionFactoryImplementor) |
| .ctor(PersistentClass,ICacheConcurrencyStrategy ,ISessionFactoryImplementor) | 51 | 52 | 192 | 189 | NHibernate.Persister.Entity.AbstractEntityPersister..ctor (PersistentClass,ICacheConcurrencyStrategy,ISessionFactoryImplementor) |
| WeakKeywords() | 11 | 15 | 14 | 14 | NHibernate.Hql.Ast.ANTLR.HqlParser.WeakKeywords() |
| SetConstantValue(DotNode,String,Object) | 14 | 15 | 32 | 34 | NHibernate.Hql.Ast.ANTLR.Util.LiteralProcessor.SetConstantValue (DotNode,String,Object) |
| ValidateFilterDefs() | 21 | 25 | 31 | 36 | NHibernate.Cfg.Configuration.ValidateFilterDefs() |
| BindComponent(Type,String,HbmCompositeId) | 13 | 15 | 26 | 28 | NHibernate.Cfg.XmlHbmBinding.ClassCompositeIdBinder.BindComponent(Type ,String,HbmCompositeId) |
| AddToBatch(IExpectation) | 11 | 15 | 24 | 31 | NHibernate.AdoNet.OracleDataClientBatchingBatcher.AddToBatch (IExpectation) |
| Execute(Action<String>,Boolean) | 11 | 12 | 38 | 42 | NHibernate.Tool.hbm2ddl.SchemaUpdate.Execute(Action<String>,Boolean) |
Statistics
| Stat | oldCC | newCC | oldLoc | newLoc |
|---|---|---|---|---|
| Sum: | 297 | 331 | 636 | 677 |
| Average: | 21.214 | 23.643 | 45.429 | 48.357 |
| Minimum: | 11 | 12 | 13 | 14 |
| Maximum: | 55 | 64 | 192 | 189 |
| Standard deviation: | 15.077 | 16.18 | 48.224 | 48.489 |
| Variance: | 227.31 | 261.8 | 2 325 | 2 351 |
| Rule warning: Avoid making large methods even larger |
// <Name>Avoid making large methods even larger</Name>
// To visualize changes in code, right-click a matched method and select:
// - Compare older and newer versions of source file
// - Compare older and newer versions disassembled with Reflector
warnif count > 0
from m in JustMyCode.Methods where
!m.IsAbstract &&
m.IsPresentInBothBuilds() &&
m.CodeWasChanged() &&
// Eliminate constructors from match, since they get larger
// as soons as some fields initialization are added.
!m.IsConstructor &&
!m.IsClassConstructor
let oldLoc = m.OlderVersion().NbLinesOfCode
where oldLoc > 15 && m.NbLinesOfCode > oldLoc
select new { m,
oldLoc,
newLoc = m.NbLinesOfCode,
}
// To visualize changes in code, right-click a matched method and select:
// - Compare older and newer versions of source file
// - Compare older and newer versions disassembled with Reflector
warnif count > 0
from m in JustMyCode.Methods where
!m.IsAbstract &&
m.IsPresentInBothBuilds() &&
m.CodeWasChanged() &&
// Eliminate constructors from match, since they get larger
// as soons as some fields initialization are added.
!m.IsConstructor &&
!m.IsClassConstructor
let oldLoc = m.OlderVersion().NbLinesOfCode
where oldLoc > 15 && m.NbLinesOfCode > oldLoc
select new { m,
oldLoc,
newLoc = m.NbLinesOfCode,
}
19 methods matched
| methods | oldLoc | newLoc | Full Name |
|---|---|---|---|
| methods | oldLoc | newLoc | Full Name |
| RegisterDefaultNetTypes() | 22 | 25 | NHibernate.Type.TypeFactory.RegisterDefaultNetTypes() |
| SqlCreateString(Dialect,IMapping,String,String) | 54 | 55 | NHibernate.Mapping.Table.SqlCreateString(Dialect,IMapping,String ,String) |
| SetProjection(IProjection[]) | 16 | 17 | NHibernate.Impl.CriteriaImpl.SetProjection(IProjection[]) |
| GetImplementors(String) | 33 | 35 | NHibernate.Impl.SessionFactoryImpl.GetImplementors(String) |
| TransformTuple(Object[],String[]) | 19 | 21 | NHibernate.Transform.AliasToBeanResultTransformer.TransformTuple (Object[],String[]) |
| RenderWhereStringTemplate(String,String,Dialect,SQLFunctionRegistry) | 61 | 63 | NHibernate.SqlCommand.Template.RenderWhereStringTemplate(String,String ,Dialect,SQLFunctionRegistry) |
| ExecuteWorkInIsolation(ISessionImplementor,IIsolatedWork,Boolean) | 22 | 23 | NHibernate.Transaction.AdoNetTransactionFactory.ExecuteWorkInIsolation (ISessionImplementor,IIsolatedWork,Boolean) |
| PrepareQueryCommand(QueryParameters,Boolean,ISessionImplementor) | 31 | 34 | NHibernate.Loader.Loader.PrepareQueryCommand(QueryParameters,Boolean ,ISessionImplementor) |
| WhereString(String,String[],Int32) | 21 | 22 | NHibernate.Loader.JoinWalker.WhereString(String,String[],Int32) |
| SetConstantValue(DotNode,String,Object) | 32 | 34 | NHibernate.Hql.Ast.ANTLR.Util.LiteralProcessor.SetConstantValue (DotNode,String,Object) |
| BuildSettings(IDictionary<String,String>) | 135 | 136 | NHibernate.Cfg.SettingsFactory.BuildSettings(IDictionary<String,String >) |
| ValidateFilterDefs() | 31 | 36 | NHibernate.Cfg.Configuration.ValidateFilterDefs() |
| BindComponent(Type,String,HbmCompositeId) | 26 | 28 | NHibernate.Cfg.XmlHbmBinding.ClassCompositeIdBinder.BindComponent(Type ,String,HbmCompositeId) |
| ExecuteReader(IDbCommand) | 19 | 20 | NHibernate.AdoNet.AbstractBatcher.ExecuteReader(IDbCommand) |
| AddToBatch(IExpectation) | 24 | 31 | NHibernate.AdoNet.OracleDataClientBatchingBatcher.AddToBatch (IExpectation) |
| DoExecuteBatch(IDbCommand) | 19 | 24 | NHibernate.AdoNet.OracleDataClientBatchingBatcher.DoExecuteBatch (IDbCommand) |
| Execute(Action<String>,Boolean,Boolean,IDbConnection,TextWriter) | 22 | 23 | NHibernate.Tool.hbm2ddl.SchemaExport.Execute(Action<String>,Boolean ,Boolean,IDbConnection,TextWriter) |
| Execute(Action<String>,Boolean,Boolean) | 29 | 30 | NHibernate.Tool.hbm2ddl.SchemaExport.Execute(Action<String>,Boolean ,Boolean) |
| Execute(Action<String>,Boolean) | 38 | 42 | NHibernate.Tool.hbm2ddl.SchemaUpdate.Execute(Action<String>,Boolean) |
Statistics
| Stat | oldLoc | newLoc |
|---|---|---|
| Sum: | 654 | 699 |
| Average: | 34.421 | 36.789 |
| Minimum: | 16 | 17 |
| Maximum: | 135 | 136 |
| Standard deviation: | 26.313 | 26.046 |
| Variance: | 692.35 | 678.38 |
| Rule warning: Avoid adding methods to a type that already had many methods |
// <Name>Avoid adding methods to a type that already had many methods</Name>
// To visualize changes in code, right-click a matched type and select:
// - Compare older and newer versions of source file
// - Compare older and newer versions disassembled with Reflector
warnif count > 0
from t in JustMyCode.Types where
t.IsPresentInBothBuilds() &&
t.Methods.Count() > t.OlderVersion().Methods.Count() &&
t.OlderVersion().Methods.Count() > 10
let newMethods = t.Methods.Where(m => m.WasAdded())
let removedMethods = t.OlderVersion().Methods.Where(m => m.WasRemoved())
select new { t,
oldNbMethods = t.OlderVersion().NbMethods,
newNbMethods = t.NbMethods,
newMethods,
removedMethods }
// To visualize changes in code, right-click a matched type and select:
// - Compare older and newer versions of source file
// - Compare older and newer versions disassembled with Reflector
warnif count > 0
from t in JustMyCode.Types where
t.IsPresentInBothBuilds() &&
t.Methods.Count() > t.OlderVersion().Methods.Count() &&
t.OlderVersion().Methods.Count() > 10
let newMethods = t.Methods.Where(m => m.WasAdded())
let removedMethods = t.OlderVersion().Methods.Where(m => m.WasRemoved())
select new { t,
oldNbMethods = t.OlderVersion().NbMethods,
newNbMethods = t.NbMethods,
newMethods,
removedMethods }
71 types matched
| types | oldNbMethods | newNbMethods | newMethods | removedMethods | Full Name |
|---|---|---|---|---|---|
| types | oldNbMethods | newNbMethods | newMethods | removedMethods | Full Name |
| ICriteria | 34 | 36 | 2 methods | 0 method | NHibernate.ICriteria |
| IMultiCriteria | 15 | 20 | 5 methods | 0 method | NHibernate.IMultiCriteria |
| StringHelper | 53 | 54 | 2 methods | 0 method | NHibernate.Util.StringHelper |
| ArrayHelper | 34 | 34 | 1 method | 0 method | NHibernate.Util.ArrayHelper |
| ReflectHelper | 28 | 35 | 8 methods | 1 method | NHibernate.Util.ReflectHelper |
| DateTimeOffsetType | 12 | 16 | 5 methods | 1 method | NHibernate.Type.DateTimeOffsetType |
| DateType | 15 | 16 | 1 method | 0 method | NHibernate.Type.DateType |
| Property | 47 | 50 | 3 methods | 0 method | NHibernate.Mapping.Property |
| ForeignKey | 18 | 19 | 1 method | 0 method | NHibernate.Mapping.ForeignKey |
| DriverBase | 26 | 28 | 2 methods | 0 method | NHibernate.Driver.DriverBase |
| SqlClientDriver | 13 | 14 | 1 method | 0 method | NHibernate.Driver.SqlClientDriver |
| EntityAction | 15 | 18 | 5 methods | 2 methods | NHibernate.Action.EntityAction |
| CollectionAction | 15 | 16 | 3 methods | 2 methods | NHibernate.Action.CollectionAction |
| FutureBatch<TQueryApproach,TMultiApproach> | 12 | 14 | 3 methods | 1 method | NHibernate.Impl.FutureBatch<TQueryApproach,TMultiApproach> |
| AbstractQueryImpl | 110 | 112 | 2 methods | 0 method | NHibernate.Impl.AbstractQueryImpl |
| CriteriaImpl | 64 | 66 | 2 methods | 0 method | NHibernate.Impl.CriteriaImpl |
| CriteriaImpl+Subcriteria | 42 | 46 | 3 methods | 0 method | NHibernate.Impl.CriteriaImpl+Subcriteria |
| MultiCriteriaImpl | 31 | 36 | 8 methods | 3 methods | NHibernate.Impl.MultiCriteriaImpl |
| AbstractSessionImpl | 86 | 90 | 4 methods | 0 method | NHibernate.Impl.AbstractSessionImpl |
| MultiQueryImpl | 69 | 70 | 7 methods | 6 methods | NHibernate.Impl.MultiQueryImpl |
| StatelessSessionImpl | 92 | 94 | 2 methods | 0 method | NHibernate.Impl.StatelessSessionImpl |
| Parameter | 12 | 13 | 1 method | 0 method | NHibernate.SqlCommand.Parameter |
| SqlString | 34 | 35 | 1 method | 0 method | NHibernate.SqlCommand.SqlString |
| SqlStringBuilder | 21 | 22 | 1 method | 0 method | NHibernate.SqlCommand.SqlStringBuilder |
| EntityMetamodel | 63 | 67 | 4 methods | 0 method | NHibernate.Tuple.Entity.EntityMetamodel |
| Dialect | 146 | 150 | 4 methods | 0 method | NHibernate.Dialect.Dialect |
| PostgreSQLDialect | 19 | 20 | 2 methods | 1 method | NHibernate.Dialect.PostgreSQLDialect |
| Oracle8iDialect | 47 | 48 | 2 methods | 1 method | NHibernate.Dialect.Oracle8iDialect |
| MySQLDialect | 19 | 22 | 4 methods | 1 method | NHibernate.Dialect.MySQLDialect |
| FirebirdDialect | 12 | 13 | 1 method | 0 method | NHibernate.Dialect.FirebirdDialect |
| MsSql2000Dialect | 40 | 42 | 2 methods | 0 method | NHibernate.Dialect.MsSql2000Dialect |
| InformixDialect | 38 | 39 | 1 method | 0 method | NHibernate.Dialect.InformixDialect |
| SQLiteDialect | 18 | 22 | 4 methods | 0 method | NHibernate.Dialect.SQLiteDialect |
| MsSqlCeDialect | 12 | 13 | 1 method | 0 method | NHibernate.Dialect.MsSqlCeDialect |
| JoinWalker | 57 | 59 | 2 methods | 0 method | NHibernate.Loader.JoinWalker |
| CriteriaJoinWalker | 13 | 14 | 1 method | 0 method | NHibernate.Loader.Criteria.CriteriaJoinWalker |
| CriteriaQueryTranslator | 50 | 52 | 3 methods | 1 method | NHibernate.Loader.Criteria.CriteriaQueryTranslator |
| IOuterJoinLoadable | 16 | 17 | 1 method | 0 method | NHibernate.Persister.Entity.IOuterJoinLoadable |
| AbstractEntityPersister | 312 | 313 | 1 method | 0 method | NHibernate.Persister.Entity.AbstractEntityPersister |
| SimpleProjection | 12 | 15 | 3 methods | 0 method | NHibernate.Criterion.SimpleProjection |
| AliasedProjection | 12 | 14 | 2 methods | 0 method | NHibernate.Criterion.AliasedProjection |
| Subqueries | 38 | 51 | 13 methods | 0 method | NHibernate.Criterion.Subqueries |
| Restrictions | 67 | 73 | 6 methods | 0 method | NHibernate.Criterion.Restrictions |
| Distinct | 12 | 14 | 2 methods | 0 method | NHibernate.Criterion.Distinct |
| ICriteriaQuery | 18 | 20 | 2 methods | 0 method | NHibernate.Criterion.ICriteriaQuery |
| Projections | 30 | 47 | 17 methods | 0 method | NHibernate.Criterion.Projections |
| ProjectionList | 17 | 22 | 5 methods | 0 method | NHibernate.Criterion.ProjectionList |
| DetachedCriteria | 38 | 41 | 3 methods | 0 method | NHibernate.Criterion.DetachedCriteria |
| IQueryTranslator | 17 | 18 | 1 method | 0 method | NHibernate.Hql.IQueryTranslator |
| QueryTranslator | 105 | 107 | 2 methods | 0 method | NHibernate.Hql.Classic.QueryTranslator |
| HqlParser | 98 | 99 | 1 method | 0 method | NHibernate.Hql.Ast.ANTLR.HqlParser |
| HqlSqlWalker | 147 | 148 | 1 method | 0 method | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker |
| ASTNode | 51 | 54 | 3 methods | 0 method | NHibernate.Hql.Ast.ANTLR.Tree.ASTNode |
| AbstractProxyFactory | 16 | 17 | 1 method | 0 method | NHibernate.Proxy.AbstractProxyFactory |
| DefaultLoadEventListener | 13 | 14 | 1 method | 0 method | NHibernate.Event.Default.DefaultLoadEventListener |
| PersistentMap | 40 | 41 | 1 method | 0 method | NHibernate.Collection.PersistentMap |
| PersistentGenericMap<TKey,TValue> | 26 | 27 | 1 method | 0 method | NHibernate.Collection.Generic.PersistentGenericMap<TKey,TValue> |
| Settings | 89 | 91 | 2 methods | 0 method | NHibernate.Cfg.Settings |
| Mappings | 56 | 61 | 5 methods | 0 method | NHibernate.Cfg.Mappings |
| Environment | 12 | 13 | 1 method | 0 method | NHibernate.Cfg.Environment |
| Configuration | 115 | 124 | 11 methods | 2 methods | NHibernate.Cfg.Configuration |
| MappingRootBinder | 14 | 15 | 6 methods | 5 methods | NHibernate.Cfg.XmlHbmBinding.MappingRootBinder |
| CollectionBinder | 29 | 47 | 44 methods | 26 methods | NHibernate.Cfg.XmlHbmBinding.CollectionBinder |
| IBatcher | 15 | 16 | 1 method | 0 method | NHibernate.Engine.IBatcher |
| QueryParameters | 59 | 67 | 10 methods | 2 methods | NHibernate.Engine.QueryParameters |
| ISessionImplementor | 66 | 67 | 1 method | 0 method | NHibernate.Engine.ISessionImplementor |
| ActionQueue | 34 | 40 | 6 methods | 0 method | NHibernate.Engine.ActionQueue |
| LoadContexts | 14 | 15 | 1 method | 0 method | NHibernate.Engine.Loading.LoadContexts |
| HQLQueryPlan | 18 | 20 | 8 methods | 5 methods | NHibernate.Engine.Query.HQLQueryPlan |
| AbstractBatcher | 40 | 41 | 1 method | 0 method | NHibernate.AdoNet.AbstractBatcher |
| SqlStatementLogger | 16 | 17 | 1 method | 0 method | NHibernate.AdoNet.Util.SqlStatementLogger |
Statistics
| Stat | oldNbMethods | newNbMethods | newMethods | removedMethods |
|---|---|---|---|---|
| Sum: | 3 094 | 3 301 | 0 | 0 |
| Average: | 43.577 | 46.493 | 0 | 0 |
| Minimum: | 12 | 13 | 0 | 0 |
| Maximum: | 312 | 313 | 0 | 0 |
| Standard deviation: | 45.428 | 45.597 | 0 | 0 |
| Variance: | 2 063 | 2 079 | 0 | 0 |
| Rule warning: Avoid transforming an immutable type into a mutable one |
//<Name>Avoid transforming an immutable type into a mutable one</Name>
// Users of an immutable type often rely on the fact that the type is immutable.
// If an immutable type becomes mutable, there are chances that this will break its users.
warnif count > 0
from t in Application.Types where
t.IsPresentInBothBuilds() &&
t.OlderVersion().IsImmutable &&
!t.IsImmutable &&
// Don't take account of immutable types transformed into static types (not deemed as immtable)
!t.IsStatic
let culpritFields = t.Fields.Where(f => f.IsImmutable)
select new {t, culpritFields }
// Users of an immutable type often rely on the fact that the type is immutable.
// If an immutable type becomes mutable, there are chances that this will break its users.
warnif count > 0
from t in Application.Types where
t.IsPresentInBothBuilds() &&
t.OlderVersion().IsImmutable &&
!t.IsImmutable &&
// Don't take account of immutable types transformed into static types (not deemed as immtable)
!t.IsStatic
let culpritFields = t.Fields.Where(f => f.IsImmutable)
select new {t, culpritFields }
5 types matched
| types | culpritFields | Full Name |
|---|---|---|
| types | culpritFields | Full Name |
| DateType | 1 field | NHibernate.Type.DateType |
| DelayedEnumerator<T> | 1 field | NHibernate.Impl.DelayedEnumerator<T> |
| FutureValue<T> | 1 field | NHibernate.Impl.FutureValue<T> |
| HQLQueryPlan | 2 fields | NHibernate.Engine.Query.HQLQueryPlan |
| FilterQueryPlan | 1 field | NHibernate.Engine.Query.FilterQueryPlan |
Statistics
| Stat | culpritFields |
|---|---|
| Sum: | 0 |
| Average: | 0 |
| Minimum: | 0 |
| Maximum: | 0 |
| Standard deviation: | 0 |
| Variance: | 0 |
| Rule warning: Avoid transforming an immutable field into a mutable one |
// <Name>Avoid transforming an immutable field into a mutable one</Name>
// Users of an immutable field often rely on the fact that the type is immutable.
// If an immutable field becomes mutable, there are chances that this will break its users.
warnif count > 0
from f in Application.Fields where
f.IsPresentInBothBuilds() &&
f.OlderVersion().IsImmutable &&
!f.IsImmutable
select f
// Users of an immutable field often rely on the fact that the type is immutable.
// If an immutable field becomes mutable, there are chances that this will break its users.
warnif count > 0
from f in Application.Fields where
f.IsPresentInBothBuilds() &&
f.OlderVersion().IsImmutable &&
!f.IsImmutable
select f
4 fields matched
| fields | Full Name |
|---|---|
| fields | Full Name |
| createSQL | NHibernate.Tool.hbm2ddl.SchemaExport.createSQL |
| dialect | NHibernate.Tool.hbm2ddl.SchemaExport.dialect |
| dropSQL | NHibernate.Tool.hbm2ddl.SchemaExport.dropSQL |
| formatter | NHibernate.Tool.hbm2ddl.SchemaExport.formatter |
Statistics
| Stat |
|---|
| Sum: |
| Average: |
| Minimum: |
| Maximum: |
| Standard deviation: |
| Variance: |
| Rule warning: Avoid adding instance fields to a type that already had many instance fields |
// <Name>Avoid adding instance fields to a type that already had many instance fields</Name>
// To visualize changes in code, right-click a matched type and select:
// - Compare older and newer versions of source file
// - Compare older and newer versions disassembled with Reflector
warnif count > 0
from t in JustMyCode.Types where
t.IsPresentInBothBuilds() &&
!t.IsStatic
let oldNbInstanceFields = t.OlderVersion().InstanceFields
let newNbInstanceFields = t.InstanceFields
where
newNbInstanceFields.Count() > oldNbInstanceFields .Count() &&
oldNbInstanceFields.Count() > 6
let newInstanceFields = t.InstanceFields.Where(f => f.WasAdded())
select new { t,
oldCount = oldNbInstanceFields.Count() ,
newCount = newNbInstanceFields.Count() ,
newInstanceFields }
// To visualize changes in code, right-click a matched type and select:
// - Compare older and newer versions of source file
// - Compare older and newer versions disassembled with Reflector
warnif count > 0
from t in JustMyCode.Types where
t.IsPresentInBothBuilds() &&
!t.IsStatic
let oldNbInstanceFields = t.OlderVersion().InstanceFields
let newNbInstanceFields = t.InstanceFields
where
newNbInstanceFields.Count() > oldNbInstanceFields .Count() &&
oldNbInstanceFields.Count() > 6
let newInstanceFields = t.InstanceFields.Where(f => f.WasAdded())
select new { t,
oldCount = oldNbInstanceFields.Count() ,
newCount = newNbInstanceFields.Count() ,
newInstanceFields }
11 types matched
| types | oldCount | newCount | newInstanceFields | Full Name |
|---|---|---|---|---|
| types | oldCount | newCount | newInstanceFields | Full Name |
| ComponentType | 8 | 9 | 1 field | NHibernate.Type.ComponentType |
| Property | 15 | 16 | 1 field | NHibernate.Mapping.Property |
| EntityMetamodel | 48 | 50 | 2 fields | NHibernate.Tuple.Entity.EntityMetamodel |
| PocoEntityTuplizer | 7 | 8 | 1 field | NHibernate.Tuple.Entity.PocoEntityTuplizer |
| CriteriaQueryTranslator | 15 | 18 | 3 fields | NHibernate.Loader.Criteria.CriteriaQueryTranslator |
| Settings | 44 | 45 | 1 field | NHibernate.Cfg.Settings |
| Mappings | 26 | 28 | 2 fields | NHibernate.Cfg.Mappings |
| Configuration | 30 | 32 | 2 fields | NHibernate.Cfg.Configuration |
| QueryParameters | 24 | 29 | 5 fields | NHibernate.Engine.QueryParameters |
| ActionQueue | 8 | 9 | 2 fields | NHibernate.Engine.ActionQueue |
| SchemaExport | 7 | 9 | 2 fields | NHibernate.Tool.hbm2ddl.SchemaExport |
Statistics
| Stat | oldCount | newCount | newInstanceFields |
|---|---|---|---|
| Sum: | 232 | 253 | 0 |
| Average: | 21.091 | 23 | 0 |
| Minimum: | 7 | 8 | 0 |
| Maximum: | 48 | 50 | 0 |
| Standard deviation: | 14.061 | 14.276 | 0 |
| Variance: | 197.72 | 203.82 | 0 |
| Object Oriented Design |
|
|
| Rule warning: Base class should not use derivatives |
// <Name>Base class should not use derivatives</Name>
warnif count > 0
from baseClass in JustMyCode.Types
where baseClass.IsClass && baseClass.NbChildren > 0 // <-- for optimization!
let derivedClassesUsed = baseClass.DerivedTypes.UsedBy(baseClass)
where derivedClassesUsed.Count() > 0
select new { baseClass, derivedClassesUsed }
warnif count > 0
from baseClass in JustMyCode.Types
where baseClass.IsClass && baseClass.NbChildren > 0 // <-- for optimization!
let derivedClassesUsed = baseClass.DerivedTypes.UsedBy(baseClass)
where derivedClassesUsed.Count() > 0
select new { baseClass, derivedClassesUsed }
15 types matched
| types | derivedClassesUsed | Full Name |
|---|---|---|
| types | derivedClassesUsed | Full Name |
| ReplicationMode | 4 types | NHibernate.ReplicationMode |
| ForeignKeyDirection | 2 types | NHibernate.Type.ForeignKeyDirection |
| PersistentClass | 2 types | NHibernate.Mapping.PersistentClass |
| Collection | 2 types | NHibernate.Mapping.Collection |
| AbstractCriterion | 4 types | NHibernate.Criterion.AbstractCriterion |
| MatchMode | 4 types | NHibernate.Criterion.MatchMode |
| QueryOver | 1 type | NHibernate.Criterion.QueryOver |
| QueryOver<TRoot> | 1 type | NHibernate.Criterion.QueryOver<TRoot> |
| SelectExpressionList | 1 type | NHibernate.Hql.Ast.ANTLR.Tree.SelectExpressionList |
| ClassBinder | 4 types | NHibernate.Cfg.XmlHbmBinding.ClassBinder |
| IdentifierValue | 4 types | NHibernate.Engine.IdentifierValue |
| CascadingAction | 10 types | NHibernate.Engine.CascadingAction |
| CascadeStyle | 13 types | NHibernate.Engine.CascadeStyle |
| VersionValue | 3 types | NHibernate.Engine.VersionValue |
| ScriptReader | 1 type | NHibernate.Tool.hbm2ddl.ScriptReader |
Statistics
| Stat | derivedClassesUsed |
|---|---|
| Sum: | 0 |
| Average: | 0 |
| Minimum: | 0 |
| Maximum: | 0 |
| Standard deviation: | 0 |
| Variance: | 0 |
| Rule warning: Class shouldn't be too deep in inheritance tree |
// <Name>Class shouldn't be too deep in inheritance tree</Name>
warnif count > 0 from t in JustMyCode.Types
where t.IsClass
let baseClasses = t.BaseClasses.ExceptThirdParty()
// Warn for classes with 3 or more base classes.
// Notice that we don't count third-party classes
// because this rule concerns your code design,
// not third-party libraries consumed design.
where baseClasses.Count() >= 3
select new { t, baseClasses,
// The metric value DepthOfInheritance takes account
// of third-party base classes
t.DepthOfInheritance }
// Branches too long in the derivation should be avoided.
// See the definition of the DepthOfInheritance metric here
// http://www.ndepend.com/Metrics.aspx#DIT
warnif count > 0 from t in JustMyCode.Types
where t.IsClass
let baseClasses = t.BaseClasses.ExceptThirdParty()
// Warn for classes with 3 or more base classes.
// Notice that we don't count third-party classes
// because this rule concerns your code design,
// not third-party libraries consumed design.
where baseClasses.Count() >= 3
select new { t, baseClasses,
// The metric value DepthOfInheritance takes account
// of third-party base classes
t.DepthOfInheritance }
// Branches too long in the derivation should be avoided.
// See the definition of the DepthOfInheritance metric here
// http://www.ndepend.com/Metrics.aspx#DIT
161 types matched
The following list of types is truncated and contains only the first 100 types of the 161 types matched. All matched types could be listed in the report by unchecking the option:
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched types.
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched types.
| types | baseClasses | Depth of inheritance | Full Name |
|---|---|---|---|
| types | baseClasses | Depth of inheritance | Full Name |
| GenericIdentifierBagType<T> | 3 types | 4 | NHibernate.Type.GenericIdentifierBagType<T> |
| PrimitiveType | 3 types | 4 | NHibernate.Type.PrimitiveType |
| BooleanType | 4 types | 5 | NHibernate.Type.BooleanType |
| CharBooleanType | 5 types | 6 | NHibernate.Type.CharBooleanType |
| YesNoType | 6 types | 7 | NHibernate.Type.YesNoType |
| UInt64Type | 4 types | 5 | NHibernate.Type.UInt64Type |
| DoubleType | 4 types | 5 | NHibernate.Type.DoubleType |
| GenericBagType<T> | 3 types | 4 | NHibernate.Type.GenericBagType<T> |
| AbstractCharType | 4 types | 5 | NHibernate.Type.AbstractCharType |
| AnsiCharType | 5 types | 6 | NHibernate.Type.AnsiCharType |
| TimestampType | 4 types | 5 | NHibernate.Type.TimestampType |
| DbTimestampType | 5 types | 6 | NHibernate.Type.DbTimestampType |
| SingleType | 4 types | 5 | NHibernate.Type.SingleType |
| Int32Type | 4 types | 5 | NHibernate.Type.Int32Type |
| DecimalType | 4 types | 5 | NHibernate.Type.DecimalType |
| DateTimeOffsetType | 4 types | 5 | NHibernate.Type.DateTimeOffsetType |
| AbstractStringType | 3 types | 4 | NHibernate.Type.AbstractStringType |
| StringType | 4 types | 5 | NHibernate.Type.StringType |
| StringClobType | 5 types | 6 | NHibernate.Type.StringClobType |
| Int64Type | 4 types | 5 | NHibernate.Type.Int64Type |
| GenericMapType<TKey,TValue> | 3 types | 4 | NHibernate.Type.GenericMapType<TKey,TValue> |
| GenericSortedListType<TKey,TValue> | 4 types | 5 | NHibernate.Type.GenericSortedListType<TKey,TValue> |
| XmlDocType | 3 types | 4 | NHibernate.Type.XmlDocType |
| SByteType | 4 types | 5 | NHibernate.Type.SByteType |
| TimeAsTimeSpanType | 4 types | 5 | NHibernate.Type.TimeAsTimeSpanType |
| AbstractEnumType | 4 types | 5 | NHibernate.Type.AbstractEnumType |
| SortedMapType | 3 types | 4 | NHibernate.Type.SortedMapType |
| PersistentEnumType | 5 types | 6 | NHibernate.Type.PersistentEnumType |
| EnumType<T> | 6 types | 7 | NHibernate.Type.EnumType<T> |
| CultureInfoType | 3 types | 4 | NHibernate.Type.CultureInfoType |
| GenericListType<T> | 3 types | 4 | NHibernate.Type.GenericListType<T> |
| TimeType | 4 types | 5 | NHibernate.Type.TimeType |
| OrderedMapType | 3 types | 4 | NHibernate.Type.OrderedMapType |
| TypeType | 3 types | 4 | NHibernate.Type.TypeType |
| AbstractBinaryType | 3 types | 4 | NHibernate.Type.AbstractBinaryType |
| BinaryType | 4 types | 5 | NHibernate.Type.BinaryType |
| XDocType | 3 types | 4 | NHibernate.Type.XDocType |
| UriType | 3 types | 4 | NHibernate.Type.UriType |
| DateTimeType | 4 types | 5 | NHibernate.Type.DateTimeType |
| AbstractDateTimeSpecificKindType | 5 types | 6 | NHibernate.Type.AbstractDateTimeSpecificKindType |
| LocalDateTimeType | 6 types | 7 | NHibernate.Type.LocalDateTimeType |
| TrueFalseType | 6 types | 7 | NHibernate.Type.TrueFalseType |
| SerializableType | 3 types | 4 | NHibernate.Type.SerializableType |
| EnumStringType | 5 types | 6 | NHibernate.Type.EnumStringType |
| EnumStringType<T> | 6 types | 7 | NHibernate.Type.EnumStringType<T> |
| ByteType | 4 types | 5 | NHibernate.Type.ByteType |
| BinaryBlobType | 5 types | 6 | NHibernate.Type.BinaryBlobType |
| TicksType | 4 types | 5 | NHibernate.Type.TicksType |
| GuidType | 4 types | 5 | NHibernate.Type.GuidType |
| SpecialOneToOneType | 3 types | 4 | NHibernate.Type.SpecialOneToOneType |
| GenericSetType<T> | 3 types | 4 | NHibernate.Type.GenericSetType<T> |
| GenericOrderedSetType<T> | 4 types | 5 | NHibernate.Type.GenericOrderedSetType<T> |
| UInt16Type | 4 types | 5 | NHibernate.Type.UInt16Type |
| AnsiStringType | 4 types | 5 | NHibernate.Type.AnsiStringType |
| DateTime2Type | 5 types | 6 | NHibernate.Type.DateTime2Type |
| CurrencyType | 5 types | 6 | NHibernate.Type.CurrencyType |
| UtcDateTimeType | 6 types | 7 | NHibernate.Type.UtcDateTimeType |
| TimeSpanType | 4 types | 5 | NHibernate.Type.TimeSpanType |
| SortedSetType | 3 types | 4 | NHibernate.Type.SortedSetType |
| CharType | 5 types | 6 | NHibernate.Type.CharType |
| GenericSortedSetType<T> | 4 types | 5 | NHibernate.Type.GenericSortedSetType<T> |
| EnumCharType<T> | 5 types | 6 | NHibernate.Type.EnumCharType<T> |
| GenericSortedDictionaryType<TKey,TValue> | 4 types | 5 | NHibernate.Type.GenericSortedDictionaryType<TKey,TValue> |
| OrderedSetType | 3 types | 4 | NHibernate.Type.OrderedSetType |
| UInt32Type | 4 types | 5 | NHibernate.Type.UInt32Type |
| Int16Type | 4 types | 5 | NHibernate.Type.Int16Type |
| DateType | 4 types | 5 | NHibernate.Type.DateType |
| Array | 3 types | 4 | NHibernate.Mapping.Array |
| PrimitiveArray | 4 types | 5 | NHibernate.Mapping.PrimitiveArray |
| PostgreSQL82Dialect | 3 types | 4 | NHibernate.Dialect.PostgreSQL82Dialect |
| Oracle10gDialect | 3 types | 4 | NHibernate.Dialect.Oracle10gDialect |
| MsSql2008Dialect | 3 types | 4 | NHibernate.Dialect.MsSql2008Dialect |
| OracleLiteDialect | 3 types | 4 | NHibernate.Dialect.OracleLiteDialect |
| InformixDialect1000 | 3 types | 4 | NHibernate.Dialect.InformixDialect1000 |
| AbstractEntityLoader | 3 types | 4 | NHibernate.Loader.Entity.AbstractEntityLoader |
| CascadeEntityLoader | 4 types | 5 | NHibernate.Loader.Entity.CascadeEntityLoader |
| CollectionElementLoader | 3 types | 4 | NHibernate.Loader.Entity.CollectionElementLoader |
| EntityLoader | 4 types | 5 | NHibernate.Loader.Entity.EntityLoader |
| CollectionLoader | 3 types | 4 | NHibernate.Loader.Collection.CollectionLoader |
| BasicCollectionLoader | 4 types | 5 | NHibernate.Loader.Collection.BasicCollectionLoader |
| OneToManyLoader | 4 types | 5 | NHibernate.Loader.Collection.OneToManyLoader |
| SubselectOneToManyLoader | 5 types | 6 | NHibernate.Loader.Collection.SubselectOneToManyLoader |
| SubselectCollectionLoader | 5 types | 6 | NHibernate.Loader.Collection.SubselectCollectionLoader |
| CriteriaLoader | 3 types | 4 | NHibernate.Loader.Criteria.CriteriaLoader |
| HqlBooleanOr | 3 types | 4 | NHibernate.Hql.Ast.HqlBooleanOr |
| HqlBooleanAnd | 3 types | 4 | NHibernate.Hql.Ast.HqlBooleanAnd |
| HqlEquality | 3 types | 4 | NHibernate.Hql.Ast.HqlEquality |
| HqlBooleanDot | 3 types | 4 | NHibernate.Hql.Ast.HqlBooleanDot |
| HqlStringConstant | 3 types | 4 | NHibernate.Hql.Ast.HqlStringConstant |
| HqlDoubleConstant | 3 types | 4 | NHibernate.Hql.Ast.HqlDoubleConstant |
| HqlFloatConstant | 3 types | 4 | NHibernate.Hql.Ast.HqlFloatConstant |
| HqlIntegerConstant | 3 types | 4 | NHibernate.Hql.Ast.HqlIntegerConstant |
| HqlDecimalConstant | 3 types | 4 | NHibernate.Hql.Ast.HqlDecimalConstant |
| HqlFalse | 3 types | 4 | NHibernate.Hql.Ast.HqlFalse |
| HqlTrue | 3 types | 4 | NHibernate.Hql.Ast.HqlTrue |
| HqlNull | 3 types | 4 | NHibernate.Hql.Ast.HqlNull |
| HqlDirectionAscending | 3 types | 4 | NHibernate.Hql.Ast.HqlDirectionAscending |
| HqlDirectionDescending | 3 types | 4 | NHibernate.Hql.Ast.HqlDirectionDescending |
| HqlGreaterThanOrEqual | 3 types | 4 | NHibernate.Hql.Ast.HqlGreaterThanOrEqual |
| HqlGreaterThan | 3 types | 4 | NHibernate.Hql.Ast.HqlGreaterThan |
Statistics
| Stat | baseClasses | Depth of inheritance |
|---|---|---|
| Sum: | 0 | 769 |
| Average: | 0 | 4.7764 |
| Minimum: | 0 | 4 |
| Maximum: | 0 | 7 |
| Standard deviation: | 0 | 0.86315 |
| Variance: | 0 | 0.74503 |
| Rule warning: Class with no descendant should be sealed if possible |
// <Name>Class with no descendant should be sealed if possible</Name>
warnif count > 0 from t in JustMyCode.Types where
t.IsClass &&
t.NbChildren ==0 &&
!t.IsSealed &&
!t.IsStatic
// && !t.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.
orderby t.NbLinesOfCode descending
select new { t, t.NbLinesOfCode }
warnif count > 0 from t in JustMyCode.Types where
t.IsClass &&
t.NbChildren ==0 &&
!t.IsSealed &&
!t.IsStatic
// && !t.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.
orderby t.NbLinesOfCode descending
select new { t, t.NbLinesOfCode }
1,144 types matched
The following list of types is truncated and contains only the first 100 types of the 1144 types matched. All matched types could be listed in the report by unchecking the option:
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched types.
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched types.
| types | # lines of code (LOC) | Full Name |
|---|---|---|
| types | # lines of code (LOC) | Full Name |
| HqlSqlWalker | 4 731 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker |
| HqlParser | 4 452 | NHibernate.Hql.Ast.ANTLR.HqlParser |
| SqlGenerator | 3 551 | NHibernate.Hql.Ast.ANTLR.SqlGenerator |
| HqlLexer | 1 505 | NHibernate.Hql.Ast.ANTLR.HqlLexer |
| Configuration | 974 | NHibernate.Cfg.Configuration |
| QueryTranslator | 627 | NHibernate.Hql.Classic.QueryTranslator |
| MultiQueryImpl | 412 | NHibernate.Impl.MultiQueryImpl |
| StatefulPersistenceContext | 376 | NHibernate.Engine.StatefulPersistenceContext |
| CollectionBinder | 364 | NHibernate.Cfg.XmlHbmBinding.CollectionBinder |
| CriteriaQueryTranslator | 336 | NHibernate.Loader.Criteria.CriteriaQueryTranslator |
| SingleTableEntityPersister | 336 | NHibernate.Persister.Entity.SingleTableEntityPersister |
| SqlString | 300 | NHibernate.SqlCommand.SqlString |
| StatelessSessionImpl | 296 | NHibernate.Impl.StatelessSessionImpl |
| StatisticsImpl | 272 | NHibernate.Stat.StatisticsImpl |
| EntityMetamodel | 254 | NHibernate.Tuple.Entity.EntityMetamodel |
| JoinedSubclassEntityPersister | 240 | NHibernate.Persister.Entity.JoinedSubclassEntityPersister |
| EventListeners | 235 | NHibernate.Event.EventListeners |
| CriteriaImpl | 233 | NHibernate.Impl.CriteriaImpl |
| MultiCriteriaImpl | 233 | NHibernate.Impl.MultiCriteriaImpl |
| DotNode | 214 | NHibernate.Hql.Ast.ANTLR.Tree.DotNode |
| Mappings | 212 | NHibernate.Cfg.Mappings |
| FromElementFactory | 192 | NHibernate.Hql.Ast.ANTLR.Tree.FromElementFactory |
| SelectClause | 188 | NHibernate.Hql.Ast.ANTLR.Tree.SelectClause |
| DefaultLoadEventListener | 186 | NHibernate.Event.Default.DefaultLoadEventListener |
| PropertiesBinder | 178 | NHibernate.Cfg.XmlHbmBinding.PropertiesBinder |
| BasicFormatter+FormatProcess | 173 | NHibernate.AdoNet.Util.BasicFormatter+FormatProcess |
| UnionSubclassEntityPersister | 172 | NHibernate.Persister.Entity.UnionSubclassEntityPersister |
| ResultSetMappingBinder | 171 | NHibernate.Cfg.XmlHbmBinding.ResultSetMappingBinder |
| DefaultFlushEntityEventListener | 169 | NHibernate.Event.Default.DefaultFlushEntityEventListener |
| CustomLoader | 168 | NHibernate.Loader.Custom.CustomLoader |
| QueryLoader | 159 | NHibernate.Hql.Ast.ANTLR.Loader.QueryLoader |
| SQLQueryReturnProcessor | 153 | NHibernate.Loader.Custom.Sql.SQLQueryReturnProcessor |
| FromElementType | 144 | NHibernate.Hql.Ast.ANTLR.Tree.FromElementType |
| QueryOver<TRoot,TSubType> | 143 | NHibernate.Criterion.QueryOver<TRoot,TSubType> |
| ActionQueue | 143 | NHibernate.Engine.ActionQueue |
| QueryTranslatorImpl | 137 | NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl |
| AdoTransaction | 129 | NHibernate.Transaction.AdoTransaction |
| QuerySelect | 128 | NHibernate.SqlCommand.QuerySelect |
| Example | 128 | NHibernate.Criterion.Example |
| SelectParser | 126 | NHibernate.Hql.Classic.SelectParser |
| FromParser | 123 | NHibernate.Hql.Classic.FromParser |
| ClassCompositeIdBinder | 123 | NHibernate.Cfg.XmlHbmBinding.ClassCompositeIdBinder |
| ProjectionList | 122 | NHibernate.Criterion.ProjectionList |
| OneToManyPersister | 121 | NHibernate.Persister.Collection.OneToManyPersister |
| CollectionLoadContext | 120 | NHibernate.Engine.Loading.CollectionLoadContext |
| HqlGeneratorExpressionTreeVisitor | 118 | NHibernate.Linq.Visitors.HqlGeneratorExpressionTreeVisitor |
| LiteralProcessor | 116 | NHibernate.Hql.Ast.ANTLR.Util.LiteralProcessor |
| IdentNode | 116 | NHibernate.Hql.Ast.ANTLR.Tree.IdentNode |
| RootClassBinder | 116 | NHibernate.Cfg.XmlHbmBinding.RootClassBinder |
| ConnectionManager | 116 | NHibernate.AdoNet.ConnectionManager |
| SqlUpdateBuilder | 115 | NHibernate.SqlCommand.SqlUpdateBuilder |
| FirebirdDialect | 113 | NHibernate.Dialect.FirebirdDialect |
| QueryKey | 112 | NHibernate.Cache.QueryKey |
| SchemaExport | 112 | NHibernate.Tool.hbm2ddl.SchemaExport |
| PersistentGenericMap<TKey,TValue> | 111 | NHibernate.Collection.Generic.PersistentGenericMap<TKey,TValue> |
| Component | 110 | NHibernate.Mapping.Component |
| Column | 108 | NHibernate.Mapping.Column |
| PersistentArrayHolder | 108 | NHibernate.Collection.PersistentArrayHolder |
| SqlQueryImpl | 107 | NHibernate.Impl.SqlQueryImpl |
| BasicCollectionPersister | 106 | NHibernate.Persister.Collection.BasicCollectionPersister |
| PocoEntityTuplizer | 105 | NHibernate.Tuple.Entity.PocoEntityTuplizer |
| ReadWriteCache | 104 | NHibernate.Cache.ReadWriteCache |
| FromClause | 101 | NHibernate.Hql.Ast.ANTLR.Tree.FromClause |
| JoinSequence | 99 | NHibernate.Engine.JoinSequence |
| ReflectionOptimizer | 97 | NHibernate.Bytecode.Lightweight.ReflectionOptimizer |
| MappingRootBinder | 94 | NHibernate.Cfg.XmlHbmBinding.MappingRootBinder |
| LinkedHashMap<TKey,TValue> | 92 | NHibernate.Util.LinkedHashMap<TKey,TValue> |
| HqlTreeBuilder | 90 | NHibernate.Hql.Ast.HqlTreeBuilder |
| HqlSqlWalkerTreeAdaptor | 90 | NHibernate.Hql.Ast.ANTLR.Tree.HqlSqlWalkerTreeAdaptor |
| CompositeCustomType | 89 | NHibernate.Type.CompositeCustomType |
| AnyType | 88 | NHibernate.Type.AnyType |
| DefaultDeleteEventListener | 88 | NHibernate.Event.Default.DefaultDeleteEventListener |
| SchemaUpdate | 88 | NHibernate.Tool.hbm2ddl.SchemaUpdate |
| SQLiteDialect | 86 | NHibernate.Dialect.SQLiteDialect |
| SQLQueryParser | 85 | NHibernate.Loader.Custom.Sql.SQLQueryParser |
| MultiTableUpdateExecutor | 85 | NHibernate.Hql.Ast.ANTLR.Exec.MultiTableUpdateExecutor |
| NDataReader | 82 | NHibernate.Driver.NDataReader |
| CollectionEntry | 80 | NHibernate.Engine.CollectionEntry |
| TypeNameParser | 77 | NHibernate.Util.TypeNameParser |
| RootClass | 76 | NHibernate.Mapping.RootClass |
| DetachedCriteria | 76 | NHibernate.Criterion.DetachedCriteria |
| IntoClause | 76 | NHibernate.Hql.Ast.ANTLR.Tree.IntoClause |
| EmitUtil | 75 | NHibernate.Bytecode.EmitUtil |
| ForeignKey | 74 | NHibernate.Mapping.ForeignKey |
| BytecodeProviderImpl+Generator | 74 | NHibernate.Bytecode.CodeDom.BytecodeProviderImpl+Generator |
| ExpressionKeyVisitor | 72 | NHibernate.Linq.Visitors.ExpressionKeyVisitor |
| QueryModelVisitor | 72 | NHibernate.Linq.Visitors.QueryModelVisitor |
| ConditionalProjection | 71 | NHibernate.Criterion.ConditionalProjection |
| BulkOperationCleanupAction | 70 | NHibernate.Action.BulkOperationCleanupAction |
| SqlSimpleSelectBuilder | 70 | NHibernate.SqlCommand.SqlSimpleSelectBuilder |
| IndexNode | 70 | NHibernate.Hql.Ast.ANTLR.Tree.IndexNode |
| BatchFetchQueue | 69 | NHibernate.Engine.BatchFetchQueue |
| SqlStringBuilder | 67 | NHibernate.SqlCommand.SqlStringBuilder |
| SelectFragment | 67 | NHibernate.SqlCommand.SelectFragment |
| OracleLiteDialect | 67 | NHibernate.Dialect.OracleLiteDialect |
| PersistentGenericSet<T> | 67 | NHibernate.Collection.Generic.PersistentGenericSet<T> |
| DatabaseMetadata | 67 | NHibernate.Tool.hbm2ddl.DatabaseMetadata |
| SubselectClauseExtractor | 66 | NHibernate.SqlCommand.SubselectClauseExtractor |
| SqlFunctionProjection | 66 | NHibernate.Criterion.SqlFunctionProjection |
| PreprocessingParser | 66 | NHibernate.Hql.Classic.PreprocessingParser |
Statistics
| Stat | # lines of code (LOC) |
|---|---|
| Sum: | 41 822 |
| Average: | 36.558 |
| Minimum: | 0 |
| Maximum: | 4 731 |
| Standard deviation: | 228.18 |
| Variance: | 52 064 |
| Rule warning: Overrides of Method() should call base.Method() |
// <Name>Overrides of Method() should call base.Method()</Name>
// Overrides of Method() should refine the behavior of base.Method().
// If base.Method() is not called, the base behavior is not refined but it is replaced.
// Violations of this rule are a sign of design flaw,
// especially if the design provides valid reasons
// that advocates that the base behavior must be replaced and not refined.
//
// Discussions on this topic are available here:
// http://stackoverflow.com/questions/1107022/should-i-call-the-base-class-implementation-when-overriding-a-method-in-c-sharp
// http://stackoverflow.com/questions/2945147/make-sure-base-method-gets-called-in-c-sharp
warnif count > 0
from t in Types // Take account of third-party types too
// Bother only classes with descendant
where t.IsClass && t.NbChildren > 0
from mBase in t.InstanceMethods
where mBase.IsVirtual &&
!mBase.IsThirdParty &&
!mBase.IsAbstract &&
!mBase.IsExplicitInterfaceImpl
from mOverride in mBase.OverridesDirectDerived
where !mOverride.IsUsing(mBase)
select new { mOverride, shouldCall = mBase, definedInBaseClass = mBase.ParentType }
// Overrides of Method() should refine the behavior of base.Method().
// If base.Method() is not called, the base behavior is not refined but it is replaced.
// Violations of this rule are a sign of design flaw,
// especially if the design provides valid reasons
// that advocates that the base behavior must be replaced and not refined.
//
// Discussions on this topic are available here:
// http://stackoverflow.com/questions/1107022/should-i-call-the-base-class-implementation-when-overriding-a-method-in-c-sharp
// http://stackoverflow.com/questions/2945147/make-sure-base-method-gets-called-in-c-sharp
warnif count > 0
from t in Types // Take account of third-party types too
// Bother only classes with descendant
where t.IsClass && t.NbChildren > 0
from mBase in t.InstanceMethods
where mBase.IsVirtual &&
!mBase.IsThirdParty &&
!mBase.IsAbstract &&
!mBase.IsExplicitInterfaceImpl
from mOverride in mBase.OverridesDirectDerived
where !mOverride.IsUsing(mBase)
select new { mOverride, shouldCall = mBase, definedInBaseClass = mBase.ParentType }
701 methods matched
The following list of methods is truncated and contains only the first 100 methods of the 701 methods matched. All matched methods could be listed in the report by unchecking the option:
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched methods.
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched methods.
| methods | shouldCall | definedInBaseClass | Full Name |
|---|---|---|---|
| methods | shouldCall | definedInBaseClass | Full Name |
| set_Item(Object,Object) | set_Item(Object,Object) | SequencedHashMap | NHibernate.Util.LRUMap.set_Item(Object,Object) |
| Add(Object,Object) | Add(Object,Object) | SequencedHashMap | NHibernate.Util.LRUMap.Add(Object,Object) |
| get_IsAssociationType() | get_IsAssociationType() | AbstractType | NHibernate.Type.CollectionType.get_IsAssociationType() |
| get_IsAssociationType() | get_IsAssociationType() | AbstractType | NHibernate.Type.EntityType.get_IsAssociationType() |
| get_IsAssociationType() | get_IsAssociationType() | AbstractType | NHibernate.Type.AnyType.get_IsAssociationType() |
| get_IsXMLElement() | get_IsXMLElement() | AbstractType | NHibernate.Type.EntityType.get_IsXMLElement() |
| get_IsXMLElement() | get_IsXMLElement() | AbstractType | NHibernate.Type.ComponentType.get_IsXMLElement() |
| get_IsCollectionType() | get_IsCollectionType() | AbstractType | NHibernate.Type.CollectionType.get_IsCollectionType() |
| get_IsCollectionType() | get_IsCollectionType() | AbstractType | NHibernate.Type.ComponentType.get_IsCollectionType() |
| get_IsComponentType() | get_IsComponentType() | AbstractType | NHibernate.Type.ComponentType.get_IsComponentType() |
| get_IsComponentType() | get_IsComponentType() | AbstractType | NHibernate.Type.AnyType.get_IsComponentType() |
| get_IsComponentType() | get_IsComponentType() | AbstractType | NHibernate.Type.CompositeCustomType.get_IsComponentType() |
| get_IsEntityType() | get_IsEntityType() | AbstractType | NHibernate.Type.EntityType.get_IsEntityType() |
| get_IsEntityType() | get_IsEntityType() | AbstractType | NHibernate.Type.ComponentType.get_IsEntityType() |
| Disassemble(Object,ISessionImplementor,Object) | Disassemble(Object,ISessionImplementor,Object) | AbstractType | NHibernate.Type.CollectionType.Disassemble(Object,ISessionImplementor ,Object) |
| Disassemble(Object,ISessionImplementor,Object) | Disassemble(Object,ISessionImplementor,Object) | AbstractType | NHibernate.Type.ComponentType.Disassemble(Object,ISessionImplementor ,Object) |
| Disassemble(Object,ISessionImplementor,Object) | Disassemble(Object,ISessionImplementor,Object) | AbstractType | NHibernate.Type.AnyType.Disassemble(Object,ISessionImplementor,Object) |
| Disassemble(Object,ISessionImplementor,Object) | Disassemble(Object,ISessionImplementor,Object) | AbstractType | NHibernate.Type.CustomType.Disassemble(Object,ISessionImplementor ,Object) |
| Disassemble(Object,ISessionImplementor,Object) | Disassemble(Object,ISessionImplementor,Object) | AbstractType | NHibernate.Type.CompositeCustomType.Disassemble(Object ,ISessionImplementor,Object) |
| Assemble(Object,ISessionImplementor,Object) | Assemble(Object,ISessionImplementor,Object) | AbstractType | NHibernate.Type.CollectionType.Assemble(Object,ISessionImplementor ,Object) |
| Assemble(Object,ISessionImplementor,Object) | Assemble(Object,ISessionImplementor,Object) | AbstractType | NHibernate.Type.ComponentType.Assemble(Object,ISessionImplementor ,Object) |
| Assemble(Object,ISessionImplementor,Object) | Assemble(Object,ISessionImplementor,Object) | AbstractType | NHibernate.Type.AnyType.Assemble(Object,ISessionImplementor,Object) |
| Assemble(Object,ISessionImplementor,Object) | Assemble(Object,ISessionImplementor,Object) | AbstractType | NHibernate.Type.CustomType.Assemble(Object,ISessionImplementor,Object) |
| Assemble(Object,ISessionImplementor,Object) | Assemble(Object,ISessionImplementor,Object) | AbstractType | NHibernate.Type.CompositeCustomType.Assemble(Object ,ISessionImplementor,Object) |
| IsDirty(Object,Object,ISessionImplementor) | IsDirty(Object,Object,ISessionImplementor) | AbstractType | NHibernate.Type.ComponentType.IsDirty(Object,Object ,ISessionImplementor) |
| Hydrate(IDataReader,String[],ISessionImplementor,Object) | Hydrate(IDataReader,String[],ISessionImplementor,Object) | AbstractType | NHibernate.Type.CollectionType.Hydrate(IDataReader,String[] ,ISessionImplementor,Object) |
| Hydrate(IDataReader,String[],ISessionImplementor,Object) | Hydrate(IDataReader,String[],ISessionImplementor,Object) | AbstractType | NHibernate.Type.EntityType.Hydrate(IDataReader,String[] ,ISessionImplementor,Object) |
| Hydrate(IDataReader,String[],ISessionImplementor,Object) | Hydrate(IDataReader,String[],ISessionImplementor,Object) | AbstractType | NHibernate.Type.ComponentType.Hydrate(IDataReader,String[] ,ISessionImplementor,Object) |
| Hydrate(IDataReader,String[],ISessionImplementor,Object) | Hydrate(IDataReader,String[],ISessionImplementor,Object) | AbstractType | NHibernate.Type.AnyType.Hydrate(IDataReader,String[] ,ISessionImplementor,Object) |
| ResolveIdentifier(Object,ISessionImplementor,Object) | ResolveIdentifier(Object,ISessionImplementor,Object) | AbstractType | NHibernate.Type.CollectionType.ResolveIdentifier(Object ,ISessionImplementor,Object) |
| ResolveIdentifier(Object,ISessionImplementor,Object) | ResolveIdentifier(Object,ISessionImplementor,Object) | AbstractType | NHibernate.Type.EntityType.ResolveIdentifier(Object ,ISessionImplementor,Object) |
| ResolveIdentifier(Object,ISessionImplementor,Object) | ResolveIdentifier(Object,ISessionImplementor,Object) | AbstractType | NHibernate.Type.ComponentType.ResolveIdentifier(Object ,ISessionImplementor,Object) |
| ResolveIdentifier(Object,ISessionImplementor,Object) | ResolveIdentifier(Object,ISessionImplementor,Object) | AbstractType | NHibernate.Type.AnyType.ResolveIdentifier(Object,ISessionImplementor ,Object) |
| SemiResolve(Object,ISessionImplementor,Object) | SemiResolve(Object,ISessionImplementor,Object) | AbstractType | NHibernate.Type.CollectionType.SemiResolve(Object,ISessionImplementor ,Object) |
| SemiResolve(Object,ISessionImplementor,Object) | SemiResolve(Object,ISessionImplementor,Object) | AbstractType | NHibernate.Type.ComponentType.SemiResolve(Object,ISessionImplementor ,Object) |
| SemiResolve(Object,ISessionImplementor,Object) | SemiResolve(Object,ISessionImplementor,Object) | AbstractType | NHibernate.Type.AnyType.SemiResolve(Object,ISessionImplementor,Object) |
| get_IsAnyType() | get_IsAnyType() | AbstractType | NHibernate.Type.AnyType.get_IsAnyType() |
| IsModified(Object,Object,Boolean[],ISessionImplementor) | IsModified(Object,Object,Boolean[],ISessionImplementor) | AbstractType | NHibernate.Type.CollectionType.IsModified(Object,Object,Boolean[] ,ISessionImplementor) |
| IsModified(Object,Object,Boolean[],ISessionImplementor) | IsModified(Object,Object,Boolean[],ISessionImplementor) | AbstractType | NHibernate.Type.ComponentType.IsModified(Object,Object,Boolean[] ,ISessionImplementor) |
| IsModified(Object,Object,Boolean[],ISessionImplementor) | IsModified(Object,Object,Boolean[],ISessionImplementor) | AbstractType | NHibernate.Type.AnyType.IsModified(Object,Object,Boolean[] ,ISessionImplementor) |
| Equals(Object) | Equals(Object) | AbstractType | NHibernate.Type.NullableType.Equals(Object) |
| GetHashCode() | GetHashCode() | AbstractType | NHibernate.Type.NullableType.GetHashCode() |
| GetHashCode() | GetHashCode() | AbstractType | NHibernate.Type.AnyType.GetHashCode() |
| GetHashCode() | GetHashCode() | AbstractType | NHibernate.Type.CustomType.GetHashCode() |
| GetHashCode() | GetHashCode() | AbstractType | NHibernate.Type.CompositeCustomType.GetHashCode() |
| Replace(Object,Object,ISessionImplementor,Object,IDictionary ,ForeignKeyDirection) | Replace(Object,Object,ISessionImplementor,Object,IDictionary,ForeignKeyDirection) | AbstractType | NHibernate.Type.ComponentType.Replace(Object,Object ,ISessionImplementor,Object,IDictionary,ForeignKeyDirection) |
| IsSame(Object,Object,EntityMode) | IsSame(Object,Object,EntityMode) | AbstractType | NHibernate.Type.EntityType.IsSame(Object,Object,EntityMode) |
| IsSame(Object,Object,EntityMode) | IsSame(Object,Object,EntityMode) | AbstractType | NHibernate.Type.ComponentType.IsSame(Object,Object,EntityMode) |
| IsSame(Object,Object,EntityMode) | IsSame(Object,Object,EntityMode) | AbstractType | NHibernate.Type.AnyType.IsSame(Object,Object,EntityMode) |
| IsEqual(Object,Object,EntityMode) | IsEqual(Object,Object,EntityMode) | AbstractType | NHibernate.Type.CollectionType.IsEqual(Object,Object,EntityMode) |
| IsEqual(Object,Object,EntityMode) | IsEqual(Object,Object,EntityMode) | AbstractType | NHibernate.Type.NullableType.IsEqual(Object,Object,EntityMode) |
| IsEqual(Object,Object,EntityMode) | IsEqual(Object,Object,EntityMode) | AbstractType | NHibernate.Type.ComponentType.IsEqual(Object,Object,EntityMode) |
| IsEqual(Object,Object,EntityMode) | IsEqual(Object,Object,EntityMode) | AbstractType | NHibernate.Type.CustomType.IsEqual(Object,Object,EntityMode) |
| IsEqual(Object,Object,EntityMode) | IsEqual(Object,Object,EntityMode) | AbstractType | NHibernate.Type.CompositeCustomType.IsEqual(Object,Object,EntityMode) |
| IsEqual(Object,Object,EntityMode,ISessionFactoryImplementor) | IsEqual(Object,Object,EntityMode,ISessionFactoryImplementor) | AbstractType | NHibernate.Type.EntityType.IsEqual(Object,Object,EntityMode ,ISessionFactoryImplementor) |
| IsEqual(Object,Object,EntityMode,ISessionFactoryImplementor) | IsEqual(Object,Object,EntityMode,ISessionFactoryImplementor) | AbstractType | NHibernate.Type.ComponentType.IsEqual(Object,Object,EntityMode ,ISessionFactoryImplementor) |
| GetHashCode(Object,EntityMode) | GetHashCode(Object,EntityMode) | AbstractType | NHibernate.Type.CollectionType.GetHashCode(Object,EntityMode) |
| GetHashCode(Object,EntityMode) | GetHashCode(Object,EntityMode) | AbstractType | NHibernate.Type.ComponentType.GetHashCode(Object,EntityMode) |
| GetHashCode(Object,EntityMode) | GetHashCode(Object,EntityMode) | AbstractType | NHibernate.Type.CustomType.GetHashCode(Object,EntityMode) |
| GetHashCode(Object,EntityMode,ISessionFactoryImplementor) | GetHashCode(Object,EntityMode,ISessionFactoryImplementor) | AbstractType | NHibernate.Type.EntityType.GetHashCode(Object,EntityMode ,ISessionFactoryImplementor) |
| GetHashCode(Object,EntityMode,ISessionFactoryImplementor) | GetHashCode(Object,EntityMode,ISessionFactoryImplementor) | AbstractType | NHibernate.Type.ComponentType.GetHashCode(Object,EntityMode ,ISessionFactoryImplementor) |
| Compare(Object,Object,Nullable<EntityMode>) | Compare(Object,Object,Nullable<EntityMode>) | AbstractType | NHibernate.Type.CollectionType.Compare(Object,Object,Nullable <EntityMode>) |
| Compare(Object,Object,Nullable<EntityMode>) | Compare(Object,Object,Nullable<EntityMode>) | AbstractType | NHibernate.Type.EntityType.Compare(Object,Object,Nullable<EntityMode>) |
| Compare(Object,Object,Nullable<EntityMode>) | Compare(Object,Object,Nullable<EntityMode>) | AbstractType | NHibernate.Type.ComponentType.Compare(Object,Object,Nullable <EntityMode>) |
| Compare(Object,Object,Nullable<EntityMode>) | Compare(Object,Object,Nullable<EntityMode>) | AbstractType | NHibernate.Type.AnyType.Compare(Object,Object,Nullable<EntityMode>) |
| GetSemiResolvedType(ISessionFactoryImplementor) | GetSemiResolvedType(ISessionFactoryImplementor) | AbstractType | NHibernate.Type.EntityType.GetSemiResolvedType (ISessionFactoryImplementor) |
| ToLoggableString(Object,ISessionFactoryImplementor) | ToLoggableString(Object,ISessionFactoryImplementor) | CollectionType | NHibernate.Type.ArrayType.ToLoggableString(Object ,ISessionFactoryImplementor) |
| get_IsArrayType() | get_IsArrayType() | CollectionType | NHibernate.Type.ArrayType.get_IsArrayType() |
| InstantiateResult(Object) | InstantiateResult(Object) | CollectionType | NHibernate.Type.ArrayType.InstantiateResult(Object) |
| ReplaceElements(Object,Object,Object,IDictionary,ISessionImplementor) | ReplaceElements(Object,Object,Object,IDictionary,ISessionImplementor) | CollectionType | NHibernate.Type.ArrayType.ReplaceElements(Object,Object,Object ,IDictionary,ISessionImplementor) |
| ReplaceElements(Object,Object,Object,IDictionary,ISessionImplementor) | ReplaceElements(Object,Object,Object,IDictionary,ISessionImplementor) | CollectionType | NHibernate.Type.MapType.ReplaceElements(Object,Object,Object ,IDictionary,ISessionImplementor) |
| ReplaceElements(Object,Object,Object,IDictionary,ISessionImplementor) | ReplaceElements(Object,Object,Object,IDictionary,ISessionImplementor) | CollectionType | NHibernate.Type.CustomCollectionType.ReplaceElements(Object,Object ,Object,IDictionary,ISessionImplementor) |
| Clear(Object) | Clear(Object) | CollectionType | NHibernate.Type.IdentifierBagType.Clear(Object) |
| Clear(Object) | Clear(Object) | CollectionType | NHibernate.Type.BagType.Clear(Object) |
| Clear(Object) | Clear(Object) | CollectionType | NHibernate.Type.ListType.Clear(Object) |
| Clear(Object) | Clear(Object) | CollectionType | NHibernate.Type.MapType.Clear(Object) |
| Clear(Object) | Clear(Object) | CollectionType | NHibernate.Type.SetType.Clear(Object) |
| Add(Object,Object) | Add(Object,Object) | CollectionType | NHibernate.Type.IdentifierBagType.Add(Object,Object) |
| Add(Object,Object) | Add(Object,Object) | CollectionType | NHibernate.Type.BagType.Add(Object,Object) |
| Add(Object,Object) | Add(Object,Object) | CollectionType | NHibernate.Type.ListType.Add(Object,Object) |
| Add(Object,Object) | Add(Object,Object) | CollectionType | NHibernate.Type.MapType.Add(Object,Object) |
| Add(Object,Object) | Add(Object,Object) | CollectionType | NHibernate.Type.SetType.Add(Object,Object) |
| Contains(Object,Object,ISessionImplementor) | Contains(Object,Object,ISessionImplementor) | CollectionType | NHibernate.Type.CustomCollectionType.Contains(Object,Object ,ISessionImplementor) |
| GetElementsIterator(Object) | GetElementsIterator(Object) | CollectionType | NHibernate.Type.ArrayType.GetElementsIterator(Object) |
| GetElementsIterator(Object) | GetElementsIterator(Object) | CollectionType | NHibernate.Type.MapType.GetElementsIterator(Object) |
| GetElementsIterator(Object) | GetElementsIterator(Object) | CollectionType | NHibernate.Type.CustomCollectionType.GetElementsIterator(Object) |
| HasHolder(EntityMode) | HasHolder(EntityMode) | CollectionType | NHibernate.Type.ArrayType.HasHolder(EntityMode) |
| InitializeImmediately(EntityMode) | InitializeImmediately(EntityMode) | CollectionType | NHibernate.Type.ArrayType.InitializeImmediately(EntityMode) |
| IndexOf(Object,Object) | IndexOf(Object,Object) | CollectionType | NHibernate.Type.ArrayType.IndexOf(Object,Object) |
| IndexOf(Object,Object) | IndexOf(Object,Object) | CollectionType | NHibernate.Type.ListType.IndexOf(Object,Object) |
| IndexOf(Object,Object) | IndexOf(Object,Object) | CollectionType | NHibernate.Type.MapType.IndexOf(Object,Object) |
| IndexOf(Object,Object) | IndexOf(Object,Object) | CollectionType | NHibernate.Type.CustomCollectionType.IndexOf(Object,Object) |
| Instantiate(ISessionImplementor,ICollectionPersister,Object) | Instantiate(ISessionImplementor,ICollectionPersister,Object) | IdentifierBagType | NHibernate.Type.GenericIdentifierBagType<T>.Instantiate (ISessionImplementor,ICollectionPersister,Object) |
| get_ReturnedClass() | get_ReturnedClass() | IdentifierBagType | NHibernate.Type.GenericIdentifierBagType<T>.get_ReturnedClass() |
| Wrap(ISessionImplementor,Object) | Wrap(ISessionImplementor,Object) | IdentifierBagType | NHibernate.Type.GenericIdentifierBagType<T>.Wrap(ISessionImplementor ,Object) |
| Instantiate(Int32) | Instantiate(Int32) | IdentifierBagType | NHibernate.Type.GenericIdentifierBagType<T>.Instantiate(Int32) |
| IsNull(Object,ISessionImplementor) | IsNull(Object,ISessionImplementor) | EntityType | NHibernate.Type.OneToOneType.IsNull(Object,ISessionImplementor) |
| get_PropertyName() | get_PropertyName() | EntityType | NHibernate.Type.OneToOneType.get_PropertyName() |
| ToString(Object) | ToString(Object) | PrimitiveType | NHibernate.Type.TimestampType.ToString(Object) |
| ToString(Object) | ToString(Object) | PrimitiveType | NHibernate.Type.DateTimeOffsetType.ToString(Object) |
Statistics
| Stat | shouldCall | definedInBaseClass |
|---|---|---|
| Sum: | 0 | 0 |
| Average: | 0 | 0 |
| Minimum: | 0 | 0 |
| Maximum: | 0 | 0 |
| Standard deviation: | 0 | 0 |
| Variance: | 0 | 0 |
| Rule warning: A stateless class or structure might be turned into a static type |
// <Name>A stateless class or structure might be turned into a static type</Name>
// This rule indicates stateless types that might
// eventually be turned into static classes.
warnif count > 0 from t in JustMyCode.Types where
!t.IsStatic &&
!t.IsGeneric &&
t.InstanceFields.Count() == 0 &&
// Don't match:
// --> types that implement some interfaces.
t.NbInterfacesImplemented == 0 &&
// --> or classes that have sub-classes children.
t.NbChildren == 0 &&
// --> or classes that have a base class
((t.IsClass && t.DepthOfDeriveFrom("System.Object".AllowNoMatch()) == 1) ||
t.IsStructure)
select t
// This rule indicates stateless types that might
// eventually be turned into static classes.
warnif count > 0 from t in JustMyCode.Types where
!t.IsStatic &&
!t.IsGeneric &&
t.InstanceFields.Count() == 0 &&
// Don't match:
// --> types that implement some interfaces.
t.NbInterfacesImplemented == 0 &&
// --> or classes that have sub-classes children.
t.NbChildren == 0 &&
// --> or classes that have a base class
((t.IsClass && t.DepthOfDeriveFrom("System.Object".AllowNoMatch()) == 1) ||
t.IsStructure)
select t
45 types matched
| types | Full Name |
|---|---|
| types | Full Name |
| CollectionHelper | NHibernate.Util.CollectionHelper |
| ObjectUtils | NHibernate.Util.ObjectUtils |
| ObjectUtils+NullClass | NHibernate.Util.ObjectUtils+NullClass |
| CollectionPrinter | NHibernate.Util.CollectionPrinter |
| ADOExceptionReporter | NHibernate.Util.ADOExceptionReporter |
| SerializationHelper | NHibernate.Util.SerializationHelper |
| TypeFactory | NHibernate.Type.TypeFactory |
| PropertyAccessorFactory | NHibernate.Properties.PropertyAccessorFactory |
| MessageHelper | NHibernate.Impl.MessageHelper |
| Transformers | NHibernate.Transform.Transformers |
| Template | NHibernate.SqlCommand.Template |
| ConnectionProviderFactory | NHibernate.Connection.ConnectionProviderFactory |
| PropertyFactory | NHibernate.Tuple.PropertyFactory |
| PersisterFactory | NHibernate.Persister.PersisterFactory |
| CollectionPropertyNames | NHibernate.Persister.Collection.CollectionPropertyNames |
| RestrictionExtensions+RestrictionBetweenBuilder | NHibernate.Criterion.RestrictionExtensions+RestrictionBetweenBuilder |
| Subqueries | NHibernate.Criterion.Subqueries |
| Projections | NHibernate.Criterion.Projections |
| NameGenerator | NHibernate.Hql.NameGenerator |
| QuerySplitter | NHibernate.Hql.QuerySplitter |
| CollectionSubqueryFactory | NHibernate.Hql.CollectionSubqueryFactory |
| ParserHelper | NHibernate.Hql.Classic.ParserHelper |
| ASTPrinter | NHibernate.Hql.Ast.ANTLR.Util.ASTPrinter |
| ColumnHelper | NHibernate.Hql.Ast.ANTLR.Util.ColumnHelper |
| NHibernateProxyHelper | NHibernate.Proxy.NHibernateProxyHelper |
| Timestamper | NHibernate.Cache.Timestamper |
| IdentifierGeneratorFactory | NHibernate.Id.IdentifierGeneratorFactory |
| OptimizerFactory | NHibernate.Id.Enhanced.OptimizerFactory |
| XmlSchemas | NHibernate.Cfg.XmlSchemas |
| ClassExtractor | NHibernate.Cfg.ClassExtractor |
| SettingsFactory | NHibernate.Cfg.SettingsFactory |
| HbmConstants | NHibernate.Cfg.HbmConstants |
| FilterDefinitionFactory | NHibernate.Cfg.XmlHbmBinding.FilterDefinitionFactory |
| AuxiliaryDatabaseObjectFactory | NHibernate.Cfg.XmlHbmBinding.AuxiliaryDatabaseObjectFactory |
| EmitUtil | NHibernate.Bytecode.EmitUtil |
| AggregatingGroupJoinRewriter | NHibernate.Linq.GroupJoin.AggregatingGroupJoinRewriter |
| LinqToHqlGeneratorsRegistryFactory | NHibernate.Linq.Functions.LinqToHqlGeneratorsRegistryFactory |
| AggregatingGroupByRewriter | NHibernate.Linq.GroupBy.AggregatingGroupByRewriter |
| NonAggregatingGroupByRewriter | NHibernate.Linq.GroupBy.NonAggregatingGroupByRewriter |
| Versioning | NHibernate.Engine.Versioning |
| JoinHelper | NHibernate.Engine.JoinHelper |
| UnsavedValueFactory | NHibernate.Engine.UnsavedValueFactory |
| Isolater | NHibernate.Engine.Transaction.Isolater |
| ParameterParser | NHibernate.Engine.Query.ParameterParser |
| Expectations | NHibernate.AdoNet.Expectations |
Statistics
| Stat |
|---|
| Sum: |
| Average: |
| Minimum: |
| Maximum: |
| Standard deviation: |
| Variance: |
| Rule warning: Non-static classes should be instantiated or turned to static |
// <Name>Non-static classes should be instantiated or turned to static</Name>
// Notice that classes only instantiated through reflection, like plug-in root classes
// are matched by this rules.
warnif count > 0
from t in JustMyCode.Types
where t.IsClass &&
//!t.IsPublic && // if you are developping a framework,
// you might not want to match public classes
!t.IsStatic &&
!t.IsAttributeClass && // Attributes class are never seen as instantiated
!t.DeriveFrom("System.MarshalByRefObject".AllowNoMatch()) // Types instantiated through remoting infrstructure
// find the first constructor of t called
let ctorCalled = t.Constructors.FirstOrDefault(ctor => ctor.NbMethodsCallingMe > 0)
// match t if none of its constructors is called.
where ctorCalled == null
select new { t, t.Visibility }
// Notice that classes only instantiated through reflection, like plug-in root classes
// are matched by this rules.
warnif count > 0
from t in JustMyCode.Types
where t.IsClass &&
//!t.IsPublic && // if you are developping a framework,
// you might not want to match public classes
!t.IsStatic &&
!t.IsAttributeClass && // Attributes class are never seen as instantiated
!t.DeriveFrom("System.MarshalByRefObject".AllowNoMatch()) // Types instantiated through remoting infrstructure
// find the first constructor of t called
let ctorCalled = t.Constructors.FirstOrDefault(ctor => ctor.NbMethodsCallingMe > 0)
// match t if none of its constructors is called.
where ctorCalled == null
select new { t, t.Visibility }
158 types matched
The following list of types is truncated and contains only the first 100 types of the 158 types matched. All matched types could be listed in the report by unchecking the option:
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched types.
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched types.
| types | Visibility | Full Name |
|---|---|---|
| types | Visibility | Full Name |
| Log4NetLoggerFactory | Public | NHibernate.Log4NetLoggerFactory |
| LinkedHashMap<TKey,TValue>+BackwardEnumerator<T> | Protected | NHibernate.Util.LinkedHashMap<TKey,TValue>+BackwardEnumerator<T> |
| CollectionHelper | Public | NHibernate.Util.CollectionHelper |
| ObjectUtils | Public | NHibernate.Util.ObjectUtils |
| CollectionPrinter | Public | NHibernate.Util.CollectionPrinter |
| ADOExceptionReporter | Public | NHibernate.Util.ADOExceptionReporter |
| SerializationHelper | Public | NHibernate.Util.SerializationHelper |
| DefaultCollectionTypeFactory | Public | NHibernate.Type.DefaultCollectionTypeFactory |
| EnumType<T> | Public | NHibernate.Type.EnumType<T> |
| EnumStringType<T> | Public | NHibernate.Type.EnumStringType<T> |
| EnumCharType<T> | Public | NHibernate.Type.EnumCharType<T> |
| PropertyAccessorFactory | Public | NHibernate.Properties.PropertyAccessorFactory |
| IndexPropertyAccessor+IndexSetter | Public | NHibernate.Properties.IndexPropertyAccessor+IndexSetter |
| IndexPropertyAccessor+IndexGetter | Public | NHibernate.Properties.IndexPropertyAccessor+IndexGetter |
| IndexBackref | Public | NHibernate.Mapping.IndexBackref |
| Backref | Public | NHibernate.Mapping.Backref |
| ConstraintViolationException | Public | NHibernate.Exceptions.ConstraintViolationException |
| DataException | Public | NHibernate.Exceptions.DataException |
| LockAcquisitionException | Public | NHibernate.Exceptions.LockAcquisitionException |
| SQLGrammarException | Public | NHibernate.Exceptions.SQLGrammarException |
| ADOConnectionException | Public | NHibernate.Exceptions.ADOConnectionException |
| ValidationFailure | Public | NHibernate.Classic.ValidationFailure |
| OracleLiteDataClientDriver | Public | NHibernate.Driver.OracleLiteDataClientDriver |
| OleDbDriver | Public | NHibernate.Driver.OleDbDriver |
| MySqlDataDriver | Public | NHibernate.Driver.MySqlDataDriver |
| ASAClientDriver | Public | NHibernate.Driver.ASAClientDriver |
| OracleDataClientDriver | Public | NHibernate.Driver.OracleDataClientDriver |
| FirebirdDriver | Public | NHibernate.Driver.FirebirdDriver |
| NpgsqlDriver | Public | NHibernate.Driver.NpgsqlDriver |
| CsharpSqliteDriver | Public | NHibernate.Driver.CsharpSqliteDriver |
| IngresDriver | Public | NHibernate.Driver.IngresDriver |
| SQLite20Driver | Public | NHibernate.Driver.SQLite20Driver |
| FirebirdClientDriver | Public | NHibernate.Driver.FirebirdClientDriver |
| OdbcDriver | Public | NHibernate.Driver.OdbcDriver |
| SqlServerCeDriver | Public | NHibernate.Driver.SqlServerCeDriver |
| IfxDriver | Public | NHibernate.Driver.IfxDriver |
| ASA10ClientDriver | Public | NHibernate.Driver.ASA10ClientDriver |
| SQLiteDriver | Public | NHibernate.Driver.SQLiteDriver |
| DB2400Driver | Public | NHibernate.Driver.DB2400Driver |
| SqlClientDriver | Public | NHibernate.Driver.SqlClientDriver |
| OracleClientDriver | Public | NHibernate.Driver.OracleClientDriver |
| DB2Driver | Public | NHibernate.Driver.DB2Driver |
| MessageHelper | Public | NHibernate.Impl.MessageHelper |
| Transformers | Public | NHibernate.Transform.Transformers |
| Template | Public | NHibernate.SqlCommand.Template |
| WhereBuilder | Public | NHibernate.SqlCommand.WhereBuilder |
| ThreadLocalSessionContext | Public | NHibernate.Context.ThreadLocalSessionContext |
| AdoNetWithDistrubtedTransactionFactory | Public | NHibernate.Transaction.AdoNetWithDistrubtedTransactionFactory |
| ConnectionProviderFactory | Public | NHibernate.Connection.ConnectionProviderFactory |
| DictionaryProxy | Public | NHibernate.DebugHelpers.DictionaryProxy |
| DictionaryProxy<K,V> | Public | NHibernate.DebugHelpers.DictionaryProxy<K,V> |
| CollectionProxy | Public | NHibernate.DebugHelpers.CollectionProxy |
| CollectionProxy<T> | Public | NHibernate.DebugHelpers.CollectionProxy<T> |
| PropertyFactory | Public | NHibernate.Tuple.PropertyFactory |
| DB2400Dialect | Public | NHibernate.Dialect.DB2400Dialect |
| PostgreSQL82Dialect | Public | NHibernate.Dialect.PostgreSQL82Dialect |
| Oracle10gDialect | Public | NHibernate.Dialect.Oracle10gDialect |
| MySQL5Dialect | Public | NHibernate.Dialect.MySQL5Dialect |
| SybaseASA10Dialect | Public | NHibernate.Dialect.SybaseASA10Dialect |
| FirebirdDialect | Public | NHibernate.Dialect.FirebirdDialect |
| MsSql2008Dialect | Public | NHibernate.Dialect.MsSql2008Dialect |
| SQLiteDialect | Public | NHibernate.Dialect.SQLiteDialect |
| OracleLiteDialect | Public | NHibernate.Dialect.OracleLiteDialect |
| SybaseSQLAnywhere11Dialect | Public | NHibernate.Dialect.SybaseSQLAnywhere11Dialect |
| IngresDialect | Public | NHibernate.Dialect.IngresDialect |
| MsSql7Dialect | Public | NHibernate.Dialect.MsSql7Dialect |
| InformixDialect1000 | Public | NHibernate.Dialect.InformixDialect1000 |
| MsSqlCe40Dialect | Public | NHibernate.Dialect.MsSqlCe40Dialect |
| CharIndexFunction | Public | NHibernate.Dialect.Function.CharIndexFunction |
| ClassicCountFunction | Public | NHibernate.Dialect.Function.ClassicCountFunction |
| ClassicAvgFunction | Public | NHibernate.Dialect.Function.ClassicAvgFunction |
| ClassicSumFunction | Public | NHibernate.Dialect.Function.ClassicSumFunction |
| UpdateLockingStrategy | Public | NHibernate.Dialect.Lock.UpdateLockingStrategy |
| PersisterFactory | Public | NHibernate.Persister.PersisterFactory |
| CollectionPropertyNames | Public | NHibernate.Persister.Collection.CollectionPropertyNames |
| RestrictionExtensions+RestrictionBetweenBuilder | Public | NHibernate.Criterion.RestrictionExtensions+RestrictionBetweenBuilder |
| Subqueries | Public | NHibernate.Criterion.Subqueries |
| Expression | Public | NHibernate.Criterion.Expression |
| Projections | Public | NHibernate.Criterion.Projections |
| QueryOverSubqueryPropertyBuilder<TRoot,TSubType> | Public | NHibernate.Criterion.Lambda.QueryOverSubqueryPropertyBuilder<TRoot ,TSubType> |
| IQueryOverSubqueryPropertyBuilder<TRoot,TSubType> | Public | NHibernate.Criterion.Lambda.IQueryOverSubqueryPropertyBuilder<TRoot ,TSubType> |
| NameGenerator | Public | NHibernate.Hql.NameGenerator |
| QuerySplitter | Public | NHibernate.Hql.QuerySplitter |
| CollectionSubqueryFactory | Public | NHibernate.Hql.CollectionSubqueryFactory |
| ClassicQueryTranslatorFactory | Public | NHibernate.Hql.Classic.ClassicQueryTranslatorFactory |
| ParserHelper | Public | NHibernate.Hql.Classic.ParserHelper |
| HqlAs | Public | NHibernate.Hql.Ast.HqlAs |
| DetailedSemanticException | Public | NHibernate.Hql.Ast.ANTLR.DetailedSemanticException |
| ColumnHelper | Public | NHibernate.Hql.Ast.ANTLR.Util.ColumnHelper |
| NHibernateProxyHelper | Public | NHibernate.Proxy.NHibernateProxyHelper |
| HashtableCacheProvider | Public | NHibernate.Cache.HashtableCacheProvider |
| Timestamper | Public | NHibernate.Cache.Timestamper |
| CacheException | Public | NHibernate.Cache.CacheException |
| StandardQueryCacheFactory | Public | NHibernate.Cache.StandardQueryCacheFactory |
| IdentifierGeneratorFactory | Public | NHibernate.Id.IdentifierGeneratorFactory |
| SequenceHiLoGenerator | Public | NHibernate.Id.SequenceHiLoGenerator |
| TriggerIdentityGenerator | Public | NHibernate.Id.TriggerIdentityGenerator |
| NativeGuidGenerator | Public | NHibernate.Id.NativeGuidGenerator |
| Assigned | Public | NHibernate.Id.Assigned |
| SequenceIdentityGenerator | Public | NHibernate.Id.SequenceIdentityGenerator |
Statistics
| Stat | Visibility |
|---|---|
| Sum: | 0 |
| Average: | 0 |
| Minimum: | 0 |
| Maximum: | 0 |
| Standard deviation: | 0 |
| Variance: | 0 |
| Rule warning: Methods should be declared static if possible |
// <Name>Methods should be declared static if possible</Name>
warnif count > 0
// When an instance method can be safely declared as static you should declare it as static.
// Since it doesn't use any instance data and method of its type and base-types,
// you should consider if such a method could be moved to a static utility class
// or if it is strongly related enough to its current declaring type to stay in it.
//
// Turning an instance method into a static method is a micro performance optimization
// since a static method is a bit cheaper to invoke than an instance method.
from t in JustMyCode.Types.Where(t =>
!t.IsStatic && !t.IsInterface &&
!t.IsEnumeration && !t.IsDelegate &&
!t.IsGeneratedByCompiler)
let methodsThatCanBeMadeStatic =
from m in t.InstanceMethods
// An instance method can be turned to static if it is not virtual,
// not using the this reference and also, not using
// any of its class or base classes instance fields or instance methods.
where !m.IsAbstract && !m.IsVirtual &&
!m.AccessThis && !m.IsExplicitInterfaceImpl &&
// Optimization: Using FirstOrDefault() avoid do check all members,
// as soon as one member is found
// we know the method m cannot be made static.
m.MembersUsed.FirstOrDefault(
mUsed => !mUsed.IsStatic &&
(mUsed.ParentType == t ||
t.DeriveFrom(mUsed.ParentType))
) == null
select m
from m in methodsThatCanBeMadeStatic
let staticFieldsUsed = m.ParentType.StaticFields.UsedBy(m).Where(f => !f.IsGeneratedByCompiler)
select new { m, staticFieldsUsed }
warnif count > 0
// When an instance method can be safely declared as static you should declare it as static.
// Since it doesn't use any instance data and method of its type and base-types,
// you should consider if such a method could be moved to a static utility class
// or if it is strongly related enough to its current declaring type to stay in it.
//
// Turning an instance method into a static method is a micro performance optimization
// since a static method is a bit cheaper to invoke than an instance method.
from t in JustMyCode.Types.Where(t =>
!t.IsStatic && !t.IsInterface &&
!t.IsEnumeration && !t.IsDelegate &&
!t.IsGeneratedByCompiler)
let methodsThatCanBeMadeStatic =
from m in t.InstanceMethods
// An instance method can be turned to static if it is not virtual,
// not using the this reference and also, not using
// any of its class or base classes instance fields or instance methods.
where !m.IsAbstract && !m.IsVirtual &&
!m.AccessThis && !m.IsExplicitInterfaceImpl &&
// Optimization: Using FirstOrDefault() avoid do check all members,
// as soon as one member is found
// we know the method m cannot be made static.
m.MembersUsed.FirstOrDefault(
mUsed => !mUsed.IsStatic &&
(mUsed.ParentType == t ||
t.DeriveFrom(mUsed.ParentType))
) == null
select m
from m in methodsThatCanBeMadeStatic
let staticFieldsUsed = m.ParentType.StaticFields.UsedBy(m).Where(f => !f.IsGeneratedByCompiler)
select new { m, staticFieldsUsed }
129 methods matched
The following list of methods is truncated and contains only the first 100 methods of the 129 methods matched. All matched methods could be listed in the report by unchecking the option:
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched methods.
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched methods.
| methods | staticFieldsUsed | Full Name |
|---|---|---|
| methods | staticFieldsUsed | Full Name |
| RemoveEntry(SequencedHashMap+Entry) | 0 field | NHibernate.Util.SequencedHashMap.RemoveEntry(SequencedHashMap+Entry) |
| ProcessRemovedLRU(Object,Object) | 0 field | NHibernate.Util.LRUMap.ProcessRemovedLRU(Object,Object) |
| Equals(ForeignKeyDirection+ForeignKeyFromParentClass) | 0 field | NHibernate.Type.ForeignKeyDirection+ForeignKeyFromParentClass.Equals (ForeignKeyDirection+ForeignKeyFromParentClass) |
| Equals(ForeignKeyDirection+ForeignKeyToParentClass) | 0 field | NHibernate.Type.ForeignKeyDirection+ForeignKeyToParentClass.Equals (ForeignKeyDirection+ForeignKeyToParentClass) |
| StringToObject(String) | 0 field | NHibernate.Type.TimestampType.StringToObject(String) |
| GetReferencedColumns(ISessionFactoryImplementor) | 0 field | NHibernate.Type.AnyType.GetReferencedColumns (ISessionFactoryImplementor) |
| get_ReferenceToPrimaryKey() | 0 field | NHibernate.Type.AnyType.get_ReferenceToPrimaryKey() |
| ResolveAny(String,Object,ISessionImplementor) | 0 field | NHibernate.Type.AnyType.ResolveAny(String,Object,ISessionImplementor) |
| get_Comparator() | 0 field | NHibernate.Type.SByteType.get_Comparator() |
| StringToObject(String) | 0 field | NHibernate.Type.TimeAsTimeSpanType.StringToObject(String) |
| FromXMLString(String,IMapping) | 0 field | NHibernate.Type.ClassMetaType.FromXMLString(String,IMapping) |
| ToXMLString(Object,ISessionFactoryImplementor) | 0 field | NHibernate.Type.ClassMetaType.ToXMLString(Object ,ISessionFactoryImplementor) |
| ToBytes(Object) | 0 field | NHibernate.Type.SerializableType.ToBytes(Object) |
| FromBytes(Byte[]) | 0 field | NHibernate.Type.SerializableType.FromBytes(Byte[]) |
| StringToObject(String) | 0 field | NHibernate.Type.TicksType.StringToObject(String) |
| get_CollectionTypeFactory() | 0 field | NHibernate.Type.TypeFactory.get_CollectionTypeFactory() |
| FromXMLString(String,IMapping) | 0 field | NHibernate.Type.MetaType.FromXMLString(String,IMapping) |
| ToXMLString(Object,ISessionFactoryImplementor) | 0 field | NHibernate.Type.MetaType.ToXMLString(Object,ISessionFactoryImplementor ) |
| StringToObject(String) | 0 field | NHibernate.Type.TimeSpanType.StringToObject(String) |
| Alternate(Char) | 0 field | NHibernate.Type.EnumCharType<T>.Alternate(Char) |
| CheckColumnDuplication(ISet<String>,IEnumerable<ISelectable>) | 0 field | NHibernate.Mapping.PersistentClass.CheckColumnDuplication(ISet<String> ,IEnumerable<ISelectable>) |
| get_Formula() | 0 field | NHibernate.Mapping.Collection.get_Formula() |
| get_IsUnique() | 0 field | NHibernate.Mapping.Collection.get_IsUnique() |
| SetTypeUsingReflection(String,String) | 0 field | NHibernate.Mapping.DependantValue.SetTypeUsingReflection(String,String ) |
| get_Formula() | 0 field | NHibernate.Mapping.OneToMany.get_Formula() |
| get_IsUnique() | 0 field | NHibernate.Mapping.OneToMany.get_IsUnique() |
| ExtractUsingTemplate(String,String,String) | 0 field | NHibernate.Exceptions.TemplatedViolatedConstraintNameExtracter .ExtractUsingTemplate(String,String,String) |
| AffectedEntity(ISet<String>,String[]) | 0 field | NHibernate.Action.BulkOperationCleanupAction.AffectedEntity(ISet <String>,String[]) |
| GetTransformedResults(IList,HolderInstantiator) | 0 field | NHibernate.Impl.MultiQueryImpl.GetTransformedResults(IList ,HolderInstantiator) |
| ThrowNotSupportedIfSqlQuery(IQuery) | 0 field | NHibernate.Impl.MultiQueryImpl.ThrowNotSupportedIfSqlQuery(IQuery) |
| AddCondition(SqlStringBuilder,String) | 0 field | NHibernate.SqlCommand.JoinFragment.AddCondition(SqlStringBuilder ,String) |
| AddCondition(SqlStringBuilder,SqlString) | 0 field | NHibernate.SqlCommand.JoinFragment.AddCondition(SqlStringBuilder ,SqlString) |
| ToWhereString(String,String[],String) | 0 field | NHibernate.SqlCommand.SqlBaseBuilder.ToWhereString(String,String[] ,String) |
| ToWhereString(String,String) | 0 field | NHibernate.SqlCommand.SqlBaseBuilder.ToWhereString(String,String) |
| get_CommandType() | 0 field | NHibernate.SqlCommand.SqlCommandInfo.get_CommandType() |
| Wrap(ISession) | 0 field | NHibernate.Context.ThreadLocalSessionContext.Wrap(ISession) |
| NeedsWrapping(ISession) | 0 field | NHibernate.Context.ThreadLocalSessionContext.NeedsWrapping(ISession) |
| CloseIfRequired() | 0 field | NHibernate.Transaction.AdoTransaction.CloseIfRequired() |
| get_ElementCountInMemory() | 0 field | NHibernate.Stat.SecondLevelCacheStatistics.get_ElementCountInMemory() |
| get_ElementCountOnDisk() | 0 field | NHibernate.Stat.SecondLevelCacheStatistics.get_ElementCountOnDisk() |
| get_SizeInMemory() | 0 field | NHibernate.Stat.SecondLevelCacheStatistics.get_SizeInMemory() |
| get_Entries() | 0 field | NHibernate.Stat.SecondLevelCacheStatistics.get_Entries() |
| BuildComponentTuplizer(String,Component) | 1 field | NHibernate.Tuple.Component.ComponentEntityModeToTuplizerMapping .BuildComponentTuplizer(String,Component) |
| BuildPropertyAccessor(Property) | 0 field | NHibernate.Tuple.Component.DynamicMapComponentTuplizer .BuildPropertyAccessor(Property) |
| BuildPropertyAccessor(Property) | 0 field | NHibernate.Tuple.Entity.DynamicMapEntityTuplizer.BuildPropertyAccessor (Property) |
| ExtractColumnOrAliasNames(SqlString) | 0 field | NHibernate.Dialect.Oracle8iDialect.ExtractColumnOrAliasNames(SqlString ) |
| NeedsLockHint(LockMode) | 0 field | NHibernate.Dialect.MsSql2000Dialect.NeedsLockHint(LockMode) |
| GetAfterSelectInsertPoint(SqlString) | 0 field | NHibernate.Dialect.MsSql2005Dialect.GetAfterSelectInsertPoint (SqlString) |
| RegisterReverseNHibernateTypeMappings() | 0 field | NHibernate.Dialect.SybaseSQLAnywhere10Dialect .RegisterReverseNHibernateTypeMappings() |
| get_ForReadOnlyString() | 0 field | NHibernate.Dialect.SybaseSQLAnywhere10Dialect.get_ForReadOnlyString() |
| get_ForUpdateByLockString() | 0 field | NHibernate.Dialect.SybaseSQLAnywhere10Dialect .get_ForUpdateByLockString() |
| GetFirstLimitParameterCount(Dialect,Boolean,Boolean,Boolean) | 0 field | NHibernate.Loader.Loader.GetFirstLimitParameterCount(Dialect,Boolean ,Boolean,Boolean) |
| SetMaxRows(IDbCommand,RowSelection) | 0 field | NHibernate.Loader.Loader.SetMaxRows(IDbCommand,RowSelection) |
| GetJoinType(Boolean,Int32) | 0 field | NHibernate.Loader.JoinWalker.GetJoinType(Boolean,Int32) |
| MergeOrderings(SqlString,SqlString) | 0 field | NHibernate.Loader.JoinWalker.MergeOrderings(SqlString,SqlString) |
| OrderBy(IList<OuterJoinableAssociation>) | 0 field | NHibernate.Loader.JoinWalker.OrderBy(IList<OuterJoinableAssociation>) |
| ProcessScalarReturn(NativeSQLQueryScalarReturn) | 0 field | NHibernate.Loader.Custom.Sql.SQLQueryReturnProcessor .ProcessScalarReturn(NativeSQLQueryScalarReturn) |
| Filter(IDictionary<String,String[]>) | 0 field | NHibernate.Loader.Custom.Sql.SQLQueryReturnProcessor.Filter (IDictionary<String,String[]>) |
| HasNonIdentifierPropertyNamedId(EntityType,IMapping) | 0 field | NHibernate.Persister.Entity.AbstractPropertyMapping .HasNonIdentifierPropertyNamedId(EntityType,IMapping) |
| get_DiscriminatorFormula() | 0 field | NHibernate.Persister.Entity.UnionSubclassEntityPersister .get_DiscriminatorFormula() |
| And(Object) | 0 field | NHibernate.Criterion.RestrictionExtensions+RestrictionBetweenBuilder .And(Object) |
| GetQueryableCollection(String,String,ISessionFactoryImplementor) | 0 field | NHibernate.Criterion.AbstractEmptinessExpression .GetQueryableCollection(String,String,ISessionFactoryImplementor) |
| As<S>() | 0 field | NHibernate.Criterion.QueryOver<TRoot>.As<S>() |
| InitializeCyclicDFAs() | 0 field | NHibernate.Hql.Ast.ANTLR.HqlParser.InitializeCyclicDFAs() |
| InitializeCyclicDFAs() | 0 field | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.InitializeCyclicDFAs() |
| HasPhysicalDiscriminatorColumn(IQueryable) | 0 field | NHibernate.Hql.Ast.ANTLR.SessionFactoryHelperExtensions .HasPhysicalDiscriminatorColumn(IQueryable) |
| get_IsStrictJPAQLComplianceEnabled() | 0 field | NHibernate.Hql.Ast.ANTLR.SessionFactoryHelperExtensions .get_IsStrictJPAQLComplianceEnabled() |
| ShowAsString(IASTNode,String) | 0 field | NHibernate.Hql.Ast.ANTLR.Util.ASTPrinter.ShowAsString(IASTNode,String) |
| DetermineIntegerRepresentation(String,Int32) | 1 field | NHibernate.Hql.Ast.ANTLR.Util.LiteralProcessor .DetermineIntegerRepresentation(String,Int32) |
| SetSQLValue(DotNode,String,String) | 1 field | NHibernate.Hql.Ast.ANTLR.Util.LiteralProcessor.SetSQLValue(DotNode ,String,String) |
| AreSame(String,String) | 0 field | NHibernate.Hql.Ast.ANTLR.Tree.DotNode.AreSame(String,String) |
| GenerateIdSubselect(IQueryable) | 0 field | NHibernate.Hql.Ast.ANTLR.Exec.AbstractStatementExecutor .GenerateIdSubselect(IQueryable) |
| IsUnlockable(ISoftLock,ReadWriteCache+ILockable) | 0 field | NHibernate.Cache.ReadWriteCache.IsUnlockable(ISoftLock ,ReadWriteCache+ILockable) |
| get_Count() | 1 field | NHibernate.Id.CounterGenerator.get_Count() |
| DetermineGeneratedIdentifier(ISessionImplementor,Object) | 0 field | NHibernate.Id.IdentityGenerator+InsertSelectDelegate .DetermineGeneratedIdentifier(ISessionImplementor,Object) |
| GenerateComb() | 0 field | NHibernate.Id.GuidCombGenerator.GenerateComb() |
| GetListenerClassFor(ListenerType) | 1 field | NHibernate.Event.EventListeners.GetListenerClassFor(ListenerType) |
| Reassociate(AbstractEvent,Object,Object,IEntityPersister) | 1 field | NHibernate.Event.Default.AbstractReassociateEventListener.Reassociate (AbstractEvent,Object,Object,IEntityPersister) |
| MarkInterceptorDirty(Object,IEntityPersister,IEventSource) | 0 field | NHibernate.Event.Default.AbstractSaveEventListener .MarkInterceptorDirty(Object,IEntityPersister,IEventSource) |
| CascadeOnUpdate(SaveOrUpdateEvent,IEntityPersister,Object) | 0 field | NHibernate.Event.Default.DefaultSaveOrUpdateEventListener .CascadeOnUpdate(SaveOrUpdateEvent,IEntityPersister,Object) |
| InitializeCollectionFromCache(Object,ICollectionPersister ,IPersistentCollection,ISessionImplementor) | 1 field | NHibernate.Event.Default.DefaultInitializeCollectionEventListener .InitializeCollectionFromCache(Object,ICollectionPersister ,IPersistentCollection,ISessionImplementor) |
| IncludeProperty(Object[],Int32) | 0 field | NHibernate.Event.Default.AbstractVisitor.IncludeProperty(Object[] ,Int32) |
| CreateProxyIfNecessary(LoadEvent,IEntityPersister,EntityKey,LoadType ,IPersistenceContext) | 1 field | NHibernate.Event.Default.DefaultLoadEventListener .CreateProxyIfNecessary(LoadEvent,IEntityPersister,EntityKey,LoadType ,IPersistenceContext) |
| AssembleCacheEntry(CacheEntry,Object,IEntityPersister,LoadEvent) | 1 field | NHibernate.Event.Default.DefaultLoadEventListener.AssembleCacheEntry (CacheEntry,Object,IEntityPersister,LoadEvent) |
| FlushCollections(IEventSource) | 1 field | NHibernate.Event.Default.AbstractFlushingEventListener .FlushCollections(IEventSource) |
| FlushEntities(FlushEvent) | 1 field | NHibernate.Event.Default.AbstractFlushingEventListener.FlushEntities (FlushEvent) |
| PrepareCollectionFlushes(ISessionImplementor) | 1 field | NHibernate.Event.Default.AbstractFlushingEventListener .PrepareCollectionFlushes(ISessionImplementor) |
| FlushIsReallyNeeded(AutoFlushEvent,IEventSource) | 0 field | NHibernate.Event.Default.DefaultAutoFlushEventListener .FlushIsReallyNeeded(AutoFlushEvent,IEventSource) |
| FlushMightBeNeeded(ISessionImplementor) | 0 field | NHibernate.Event.Default.DefaultAutoFlushEventListener .FlushMightBeNeeded(ISessionImplementor) |
| CascadeOnLock(LockEvent,IEntityPersister,Object) | 0 field | NHibernate.Event.Default.DefaultLockEventListener.CascadeOnLock (LockEvent,IEntityPersister,Object) |
| MarkInterceptorDirty(Object,Object) | 0 field | NHibernate.Event.Default.DefaultMergeEventListener .MarkInterceptorDirty(Object,Object) |
| CreateDeletedState(IEntityPersister,Object[],IEventSource) | 0 field | NHibernate.Event.Default.DefaultDeleteEventListener.CreateDeletedState (IEntityPersister,Object[],IEventSource) |
| CascadeAfterReplicate(Object,IEntityPersister,ReplicationMode ,IEventSource) | 0 field | NHibernate.Event.Default.DefaultReplicateEventListener .CascadeAfterReplicate(Object,IEntityPersister,ReplicationMode ,IEventSource) |
| CheckNaturalId(IEntityPersister,EntityEntry,Object[],Object[] ,EntityMode,ISessionImplementor) | 0 field | NHibernate.Event.Default.DefaultFlushEntityEventListener .CheckNaturalId(IEntityPersister,EntityEntry,Object[],Object[] ,EntityMode,ISessionImplementor) |
| WrapCollections(IEventSource,IEntityPersister,IType[],Object[]) | 0 field | NHibernate.Event.Default.DefaultFlushEntityEventListener .WrapCollections(IEventSource,IEntityPersister,IType[],Object[]) |
| IsVersionIncrementRequired(FlushEntityEvent,EntityEntry ,IEntityPersister,Int32[]) | 0 field | NHibernate.Event.Default.DefaultFlushEntityEventListener .IsVersionIncrementRequired(FlushEntityEvent,EntityEntry ,IEntityPersister,Int32[]) |
| IsCollectionDirtyCheckNecessary(IEntityPersister,Status) | 0 field | NHibernate.Event.Default.DefaultFlushEntityEventListener .IsCollectionDirtyCheckNecessary(IEntityPersister,Status) |
| GetDatabaseSnapshot(ISessionImplementor,IEntityPersister,Object) | 0 field | NHibernate.Event.Default.DefaultFlushEntityEventListener .GetDatabaseSnapshot(ISessionImplementor,IEntityPersister,Object) |
| CreateConfigReaderSettings() | 1 field | NHibernate.Cfg.XmlSchemas.CreateConfigReaderSettings() |
| CreateMappingReaderSettings() | 1 field | NHibernate.Cfg.XmlSchemas.CreateMappingReaderSettings() |
Statistics
| Stat | staticFieldsUsed |
|---|---|
| Sum: | 0 |
| Average: | 0 |
| Minimum: | 0 |
| Maximum: | 0 |
| Standard deviation: | 0 |
| Variance: | 0 |
| Rule warning: Constructor should not call a virtual methods |
// <Name>Constructor should not call a virtual methods</Name>
// Returns constructor of a non-sealed type calling virtual methods.
// In such a situation, if a derived class overrides the method,
// then the override method will be called before the derived constructor.
// This makes the class fragile to derive from.
//
// Violations reported can be solved by re-designing object initialisation
// or by marking the parent class as sealed, if possible.
warnif count > 0
from t in Application.Types where
t.IsClass &&
!t.IsGeneratedByCompiler &&
!t.IsSealed
from ctor in t.Constructors
let virtualMethodsCalled = from mCalled in ctor.MethodsCalled
where mCalled.IsVirtual &&
(mCalled.ParentType == t ||
t.DeriveFrom(mCalled.ParentType))
select mCalled
where virtualMethodsCalled.Count() > 0
select new { ctor ,
virtualMethodsCalled,
// If there is no derived type, it might be
// an opportunity to mark t as sealed.
t.DerivedTypes }
// Returns constructor of a non-sealed type calling virtual methods.
// In such a situation, if a derived class overrides the method,
// then the override method will be called before the derived constructor.
// This makes the class fragile to derive from.
//
// Violations reported can be solved by re-designing object initialisation
// or by marking the parent class as sealed, if possible.
warnif count > 0
from t in Application.Types where
t.IsClass &&
!t.IsGeneratedByCompiler &&
!t.IsSealed
from ctor in t.Constructors
let virtualMethodsCalled = from mCalled in ctor.MethodsCalled
where mCalled.IsVirtual &&
(mCalled.ParentType == t ||
t.DeriveFrom(mCalled.ParentType))
select mCalled
where virtualMethodsCalled.Count() > 0
select new { ctor ,
virtualMethodsCalled,
// If there is no derived type, it might be
// an opportunity to mark t as sealed.
t.DerivedTypes }
51 methods matched
| methods | virtualMethodsCalled | DerivedTypes | Full Name |
|---|---|---|---|
| methods | virtualMethodsCalled | DerivedTypes | Full Name |
| .ctor(Exception) | 1 method | 47 types | NHibernate.HibernateException..ctor(Exception) |
| .ctor(String,String) | 1 method | 0 type | NHibernate.Util.AssemblyQualifiedTypeName..ctor(String,String) |
| .ctor(Object) | 1 method | 0 type | NHibernate.Util.WeakRefWrapper..ctor(Object) |
| .ctor(PersistentClass) | 1 method | 3 types | NHibernate.Mapping.Subclass..ctor(PersistentClass) |
| .ctor(Component) | 1 method | 0 type | NHibernate.Mapping.Component..ctor(Component) |
| .ctor(IDbConnection,SessionFactoryImpl) | 2 methods | 0 type | NHibernate.Impl.StatelessSessionImpl..ctor(IDbConnection ,SessionFactoryImpl) |
| .ctor() | 1 method | 0 type | NHibernate.Stat.StatisticsImpl..ctor() |
| .ctor(Component) | 3 methods | 2 types | NHibernate.Tuple.Component.AbstractComponentTuplizer..ctor(Component) |
| .ctor(EntityMetamodel,PersistentClass) | 3 methods | 2 types | NHibernate.Tuple.Entity.AbstractEntityTuplizer..ctor(EntityMetamodel ,PersistentClass) |
| .ctor(EntityMetamodel,PersistentClass) | 2 methods | 0 type | NHibernate.Tuple.Entity.PocoEntityTuplizer..ctor(EntityMetamodel ,PersistentClass) |
| .ctor(EntityMetamodel,PersistentClass) | 2 methods | 0 type | NHibernate.Tuple.Entity.DynamicMapEntityTuplizer..ctor(EntityMetamodel ,PersistentClass) |
| .ctor() | 8 methods | 3 types | NHibernate.Dialect.Oracle8iDialect..ctor() |
| .ctor() | 1 method | 1 type | NHibernate.Dialect.MySQLDialect..ctor() |
| .ctor(DataRow,IDataBaseSchema,Boolean) | 1 method | 7 types | NHibernate.Dialect.Schema.AbstractTableMetadata..ctor(DataRow ,IDataBaseSchema,Boolean) |
| .ctor(IDictionary<String,String[]>,ILoadable,String) | 3 methods | 1 type | NHibernate.Loader.DefaultEntityAliases..ctor(IDictionary<String ,String[]>,ILoadable,String) |
| .ctor(IOuterJoinLoadable,ISessionFactoryImplementor,IDictionary<String ,IFilter>) | 1 method | 3 types | NHibernate.Loader.AbstractEntityJoinWalker..ctor(IOuterJoinLoadable ,ISessionFactoryImplementor,IDictionary<String,IFilter>) |
| .ctor(IOuterJoinLoadable,CascadingAction,ISessionFactoryImplementor) | 2 methods | 0 type | NHibernate.Loader.Entity.CascadeEntityLoader..ctor(IOuterJoinLoadable ,CascadingAction,ISessionFactoryImplementor) |
| .ctor(IOuterJoinLoadable,String[],Int32,LockMode ,ISessionFactoryImplementor,IDictionary<String,IFilter>) | 1 method | 0 type | NHibernate.Loader.Entity.EntityJoinWalker..ctor(IOuterJoinLoadable ,String[],Int32,LockMode,ISessionFactoryImplementor,IDictionary<String ,IFilter>) |
| .ctor(IOuterJoinLoadable,CascadingAction,ISessionFactoryImplementor) | 1 method | 0 type | NHibernate.Loader.Entity.CascadeEntityJoinWalker..ctor (IOuterJoinLoadable,CascadingAction,ISessionFactoryImplementor) |
| .ctor(IQueryableCollection,ISessionFactoryImplementor,IDictionary <String,IFilter>) | 2 methods | 0 type | NHibernate.Loader.Entity.CollectionElementLoader..ctor (IQueryableCollection,ISessionFactoryImplementor,IDictionary<String ,IFilter>) |
| .ctor(IOuterJoinLoadable,String[],IType,Int32,LockMode ,ISessionFactoryImplementor,IDictionary<String,IFilter>) | 2 methods | 0 type | NHibernate.Loader.Entity.EntityLoader..ctor(IOuterJoinLoadable ,String[],IType,Int32,LockMode,ISessionFactoryImplementor,IDictionary <String,IFilter>) |
| .ctor(IQueryableCollection,Int32,SqlString,ISessionFactoryImplementor ,IDictionary<String,IFilter>) | 1 method | 0 type | NHibernate.Loader.Collection.OneToManyJoinWalker..ctor (IQueryableCollection,Int32,SqlString,ISessionFactoryImplementor ,IDictionary<String,IFilter>) |
| .ctor(IQueryableCollection,Int32,SqlString,ISessionFactoryImplementor ,IDictionary<String,IFilter>) | 2 methods | 1 type | NHibernate.Loader.Collection.BasicCollectionLoader..ctor (IQueryableCollection,Int32,SqlString,ISessionFactoryImplementor ,IDictionary<String,IFilter>) |
| .ctor(IQueryableCollection,Int32,SqlString,ISessionFactoryImplementor ,IDictionary<String,IFilter>) | 1 method | 0 type | NHibernate.Loader.Collection.BasicCollectionJoinWalker..ctor (IQueryableCollection,Int32,SqlString,ISessionFactoryImplementor ,IDictionary<String,IFilter>) |
| .ctor(IQueryableCollection,Int32,SqlString,ISessionFactoryImplementor ,IDictionary<String,IFilter>) | 2 methods | 1 type | NHibernate.Loader.Collection.OneToManyLoader..ctor (IQueryableCollection,Int32,SqlString,ISessionFactoryImplementor ,IDictionary<String,IFilter>) |
| .ctor(IOuterJoinLoadable,ISessionFactoryImplementor,CriteriaImpl ,String,IDictionary<String,IFilter>) | 1 method | 0 type | NHibernate.Loader.Criteria.CriteriaLoader..ctor(IOuterJoinLoadable ,ISessionFactoryImplementor,CriteriaImpl,String,IDictionary<String ,IFilter>) |
| .ctor(IOuterJoinLoadable,CriteriaQueryTranslator ,ISessionFactoryImplementor,ICriteria,String,IDictionary<String ,IFilter>) | 1 method | 0 type | NHibernate.Loader.Criteria.CriteriaJoinWalker..ctor(IOuterJoinLoadable ,CriteriaQueryTranslator,ISessionFactoryImplementor,ICriteria,String ,IDictionary<String,IFilter>) |
| .ctor(PersistentClass,ICacheConcurrencyStrategy ,ISessionFactoryImplementor) | 1 method | 3 types | NHibernate.Persister.Entity.AbstractEntityPersister..ctor (PersistentClass,ICacheConcurrencyStrategy,ISessionFactoryImplementor) |
| .ctor(PersistentClass,ICacheConcurrencyStrategy ,ISessionFactoryImplementor,IMapping) | 6 methods | 0 type | NHibernate.Persister.Entity.UnionSubclassEntityPersister..ctor (PersistentClass,ICacheConcurrencyStrategy,ISessionFactoryImplementor ,IMapping) |
| .ctor(PersistentClass,ICacheConcurrencyStrategy ,ISessionFactoryImplementor,IMapping) | 3 methods | 0 type | NHibernate.Persister.Entity.JoinedSubclassEntityPersister..ctor (PersistentClass,ICacheConcurrencyStrategy,ISessionFactoryImplementor ,IMapping) |
| .ctor(PersistentClass,ICacheConcurrencyStrategy ,ISessionFactoryImplementor,IMapping) | 4 methods | 0 type | NHibernate.Persister.Entity.SingleTableEntityPersister..ctor (PersistentClass,ICacheConcurrencyStrategy,ISessionFactoryImplementor ,IMapping) |
| .ctor(Collection,ICacheConcurrencyStrategy,Configuration ,ISessionFactoryImplementor) | 6 methods | 2 types | NHibernate.Persister.Collection.AbstractCollectionPersister..ctor (Collection,ICacheConcurrencyStrategy,Configuration ,ISessionFactoryImplementor) |
| .ctor(QueryTranslatorImpl,ISessionFactoryImplementor,SelectClause) | 1 method | 0 type | NHibernate.Hql.Ast.ANTLR.Loader.QueryLoader..ctor(QueryTranslatorImpl ,ISessionFactoryImplementor,SelectClause) |
| .ctor(ISessionImplementor,ICollection) | 1 method | 1 type | NHibernate.Collection.PersistentIdentifierBag..ctor (ISessionImplementor,ICollection) |
| .ctor(ISessionImplementor,IList) | 1 method | 1 type | NHibernate.Collection.PersistentList..ctor(ISessionImplementor,IList) |
| .ctor(ISessionImplementor,ISet) | 1 method | 1 type | NHibernate.Collection.PersistentSet..ctor(ISessionImplementor,ISet) |
| .ctor(ISessionImplementor,IDictionary) | 1 method | 1 type | NHibernate.Collection.PersistentMap..ctor(ISessionImplementor ,IDictionary) |
| .ctor(ISessionImplementor,ICollection) | 1 method | 1 type | NHibernate.Collection.PersistentBag..ctor(ISessionImplementor ,ICollection) |
| .ctor(String,String,String,String,String) | 1 method | 0 type | NHibernate.Cfg.ClassExtractor+ClassEntry..ctor(String,String,String ,String,String) |
| .ctor() | 1 method | 0 type | NHibernate.Cfg.Loquacious.TypeDefConfigurationProperties<T>..ctor() |
| .ctor() | 1 method | 0 type | NHibernate.Cfg.Loquacious.EntityCacheConfigurationProperties<TEntity>. .ctor() |
| .ctor() | 1 method | 0 type | NHibernate.Cfg.Loquacious.EntityCollectionCacheConfigurationProperties ..ctor() |
| .ctor(Type,IGetter[],ISetter[]) | 1 method | 0 type | NHibernate.Bytecode.Lightweight.ReflectionOptimizer..ctor(Type ,IGetter[],ISetter[]) |
| .ctor(Expression) | 1 method | 0 type | NHibernate.Linq.NhLinqExpression..ctor(Expression) |
| .ctor() | 1 method | 0 type | NHibernate.Linq.Functions.DefaultLinqToHqlGeneratorsRegistry..ctor() |
| .ctor(Expression,NhExpressionType) | 1 method | 8 types | NHibernate.Linq.Expressions.NhAggregatedExpression..ctor(Expression ,NhExpressionType) |
| .ctor(Expression) | 1 method | 0 type | NHibernate.Linq.Expressions.NhAverageExpression..ctor(Expression) |
| .ctor(Expression) | 1 method | 0 type | NHibernate.Linq.Expressions.NhStarExpression..ctor(Expression) |
| .ctor(String,Boolean,IDictionary<String,IFilter>) | 1 method | 0 type | NHibernate.Engine.Query.QueryPlanCache+HQLQueryPlanKey..ctor(String ,Boolean,IDictionary<String,IFilter>) |
| .ctor(String,String,Boolean,IDictionary<String,IFilter>) | 1 method | 0 type | NHibernate.Engine.Query.QueryPlanCache+FilterQueryPlanKey..ctor(String ,String,Boolean,IDictionary<String,IFilter>) |
| .ctor(String,INativeSQLQueryReturn[],ICollection<String>) | 1 method | 0 type | NHibernate.Engine.Query.Sql.NativeSQLQuerySpecification..ctor(String ,INativeSQLQueryReturn[],ICollection<String>) |
Statistics
| Stat | virtualMethodsCalled | DerivedTypes |
|---|---|---|
| Sum: | 0 | 0 |
| Average: | 0 | 0 |
| Minimum: | 0 | 0 |
| Maximum: | 0 | 0 |
| Standard deviation: | 0 | 0 |
| Variance: | 0 | 0 |
| Rule warning: Avoid the Singleton pattern |
//<Name>Avoid the Singleton pattern</Name>
warnif count > 0
from t in Application.Types
where !t.IsStatic && !t.IsAbstract && (t.IsClass || t.IsStructure)
// All ctors of a singleton are private
where t.Constructors.Where(ctor => !ctor.IsPrivate).Count() == 0
// A singleton contains one static field of its parent type, to reference the unique instance
let staticFieldInstances = t.StaticFields.WithFieldType(t)
where staticFieldInstances.Count() == 1
select new { t, staticFieldInstance = staticFieldInstances.First() }
// The Singleton pattern consists in syntactically enforcing that a class
// has just one unique instance.
// At first glance, this pattern looks appealing and it is widely used.
// However, we discourage you from using singleton classes because experience
// shows that singletons often result in less testable and less maintainable code.
// More details available in these discussions:
// http://codebetter.com/patricksmacchia/2011/05/04/back-to-basics-usage-of-static-members/
// http://adamschepis.com/blog/2011/05/02/im-adam-and-im-a-recovering-singleton-addict/
warnif count > 0
from t in Application.Types
where !t.IsStatic && !t.IsAbstract && (t.IsClass || t.IsStructure)
// All ctors of a singleton are private
where t.Constructors.Where(ctor => !ctor.IsPrivate).Count() == 0
// A singleton contains one static field of its parent type, to reference the unique instance
let staticFieldInstances = t.StaticFields.WithFieldType(t)
where staticFieldInstances.Count() == 1
select new { t, staticFieldInstance = staticFieldInstances.First() }
// The Singleton pattern consists in syntactically enforcing that a class
// has just one unique instance.
// At first glance, this pattern looks appealing and it is widely used.
// However, we discourage you from using singleton classes because experience
// shows that singletons often result in less testable and less maintainable code.
// More details available in these discussions:
// http://codebetter.com/patricksmacchia/2011/05/04/back-to-basics-usage-of-static-members/
// http://adamschepis.com/blog/2011/05/02/im-adam-and-im-a-recovering-singleton-addict/
2 types matched
| types | staticFieldInstance | Full Name |
|---|---|---|
| types | staticFieldInstance | Full Name |
| LoggerProvider | instance | NHibernate.LoggerProvider |
| TypeFactory | Instance | NHibernate.Type.TypeFactory |
Statistics
| Stat | staticFieldInstance |
|---|---|
| Sum: | 0 |
| Average: | 0 |
| Minimum: | 0 |
| Maximum: | 0 |
| Standard deviation: | 0 |
| Variance: | 0 |
| Rule warning: Don't assign static fields from instance methods |
// <Name>Don't assign static fields from instance methods</Name>
// Assigning static fields from instance methods leads to
// poorly maintainable and non thread-safe code.
// It is advised to assign static fields inline or from class constructor.
warnif count > 0
from f in Application.Fields where
f.IsStatic &&
!f.IsLiteral &&
!f.IsInitOnly &&
!f.IsGeneratedByCompiler &&
// Contract API define such a insideContractEvaluation static field
f.Name != "insideContractEvaluation"
let assignedBy = f.MethodsAssigningMe.Where(m => !m.IsStatic)
where assignedBy .Count() > 0
select new { f, assignedBy }
// Assigning static fields from instance methods leads to
// poorly maintainable and non thread-safe code.
// It is advised to assign static fields inline or from class constructor.
warnif count > 0
from f in Application.Fields where
f.IsStatic &&
!f.IsLiteral &&
!f.IsInitOnly &&
!f.IsGeneratedByCompiler &&
// Contract API define such a insideContractEvaluation static field
f.Name != "insideContractEvaluation"
let assignedBy = f.MethodsAssigningMe.Where(m => !m.IsStatic)
where assignedBy .Count() > 0
select new { f, assignedBy }
6 fields matched
| fields | assignedBy | Full Name |
|---|---|---|
| fields | assignedBy | Full Name |
| formulaUniqueInteger | 1 method | NHibernate.Mapping.Formula.formulaUniqueInteger |
| tableCounter | 1 method | NHibernate.Mapping.Table.tableCounter |
| _Sequence | 1 method | NHibernate.Action.DelayedPostInsertIdentifier._Sequence |
| _session | 1 method | NHibernate.Context.ThreadStaticSessionContext._session |
| counter | 1 method | NHibernate.Id.CounterGenerator.counter |
| openCommandCount | 2 methods | NHibernate.AdoNet.AbstractBatcher.openCommandCount |
Statistics
| Stat | assignedBy |
|---|---|
| Sum: | 0 |
| Average: | 0 |
| Minimum: | 0 |
| Maximum: | 0 |
| Standard deviation: | 0 |
| Variance: | 0 |
| Rule warning: Avoid empty interfaces |
// <Name>Avoid empty interfaces</Name>
warnif count > 0 from t in JustMyCode.Types where
t.IsInterface &&
t.NbMethods == 0
select new { t, t.TypesThatImplementMe }
// Interfaces define members that provide a behavior
// or usage contract. The functionality described by
// the interface can be adopted by any type,
// regardless of where the type appears in the
// inheritance hierarchy. A type implements an
// interface by providing implementations for the
// interface's members. An empty interface does not
// define any members, and as such, does not define
// a contract that can be implemented.
// If your design includes empty interfaces that
// types are expected to implement, you are probably
// using an interface as a marker, or a way of
// identifying a group of types. If this identification
// will occur at runtime, the correct way to accomplish
// this is to use a custom attribute. Use the presence
// or absence of the attribute, or the attribute's
// properties, to identify the target types. If the
// identification must occurs at compile time, then using
// an empty interface is acceptable.
warnif count > 0 from t in JustMyCode.Types where
t.IsInterface &&
t.NbMethods == 0
select new { t, t.TypesThatImplementMe }
// Interfaces define members that provide a behavior
// or usage contract. The functionality described by
// the interface can be adopted by any type,
// regardless of where the type appears in the
// inheritance hierarchy. A type implements an
// interface by providing implementations for the
// interface's members. An empty interface does not
// define any members, and as such, does not define
// a contract that can be implemented.
// If your design includes empty interfaces that
// types are expected to implement, you are probably
// using an interface as a marker, or a way of
// identifying a group of types. If this identification
// will occur at runtime, the correct way to accomplish
// this is to use a custom attribute. Use the presence
// or absence of the attribute, or the attribute's
// properties, to identify the target types. If the
// identification must occurs at compile time, then using
// an empty interface is acceptable.
5 types matched
| types | TypesThatImplementMe | Full Name |
|---|---|---|
| types | TypesThatImplementMe | Full Name |
| IDiscriminatorType | 28 types | NHibernate.Type.IDiscriminatorType |
| IReturn | 7 types | NHibernate.Loader.Custom.IReturn |
| ISoftLock | 1 type | NHibernate.Cache.Access.ISoftLock |
| INhFetchRequest<TQueried,TFetch> | 1 type | NHibernate.Linq.INhFetchRequest<TQueried,TFetch> |
| INativeSQLQueryReturn | 5 types | NHibernate.Engine.Query.Sql.INativeSQLQueryReturn |
Statistics
| Stat | TypesThatImplementMe |
|---|---|
| Sum: | 0 |
| Average: | 0 |
| Minimum: | 0 |
| Maximum: | 0 |
| Standard deviation: | 0 |
| Variance: | 0 |
| Design |
|
|
| Rule warning: Avoid custom delegates |
// <Name>Avoid custom delegates</Name>
// Prefer using one of the standard generic delegate type in
// Predicate<T> Func<T0,T1,..,TResult> Action<T0,T1,..>
// instead of creating your own delegate type.
// Not only the code using these custom delegates will become clearer,
// but you'll be relieved from the maintenance of these delegate types.
//
// Notice that delegate that are consumed by DllImport extern methods
// must not be converted, else this could provoke marshalling issues.
warnif count > 0
from t in Application.Types where t.IsDelegate
let invokeMethod = (from m in t.Methods where m.SimpleName == "Invoke" select m).Single()
let signature1 = invokeMethod.Name.Substring(invokeMethod.SimpleName.Length, invokeMethod.Name.Length - invokeMethod.SimpleName.Length)
// 'ref' and 'out' parameters canot be supported
where !signature1.Contains("&")
let signature2 = signature1.Replace("(","<").Replace(")",">")
let signature3 = signature2 == "<>" ? "" : signature2
let resultTypeName = invokeMethod.ReturnType == null ? "????" :
invokeMethod.ReturnType.FullName == "System.Void" ? "" :
invokeMethod.ReturnType.Name
let replaceWith = resultTypeName == "Boolean" ?
"Predicate" + signature3 : resultTypeName == "" ?
"Action" + signature3 :
"Func" + signature3.Replace(">", "," + resultTypeName + ">")
select new { t, replaceWith }
// Prefer using one of the standard generic delegate type in
// Predicate<T> Func<T0,T1,..,TResult> Action<T0,T1,..>
// instead of creating your own delegate type.
// Not only the code using these custom delegates will become clearer,
// but you'll be relieved from the maintenance of these delegate types.
//
// Notice that delegate that are consumed by DllImport extern methods
// must not be converted, else this could provoke marshalling issues.
warnif count > 0
from t in Application.Types where t.IsDelegate
let invokeMethod = (from m in t.Methods where m.SimpleName == "Invoke" select m).Single()
let signature1 = invokeMethod.Name.Substring(invokeMethod.SimpleName.Length, invokeMethod.Name.Length - invokeMethod.SimpleName.Length)
// 'ref' and 'out' parameters canot be supported
where !signature1.Contains("&")
let signature2 = signature1.Replace("(","<").Replace(")",">")
let signature3 = signature2 == "<>" ? "" : signature2
let resultTypeName = invokeMethod.ReturnType == null ? "????" :
invokeMethod.ReturnType.FullName == "System.Void" ? "" :
invokeMethod.ReturnType.Name
let replaceWith = resultTypeName == "Boolean" ?
"Predicate" + signature3 : resultTypeName == "" ?
"Action" + signature3 :
"Func" + signature3.Replace(">", "," + resultTypeName + ">")
select new { t, replaceWith }
21 types matched
| types | replaceWith | Full Name |
|---|---|---|
| types | replaceWith | Full Name |
| TypeFactory+GetNullableTypeWithLength | Func<Int32,NullableType> | NHibernate.Type.TypeFactory+GetNullableTypeWithLength |
| TypeFactory+GetNullableTypeWithPrecision | Func<Byte,Byte,NullableType> | NHibernate.Type.TypeFactory+GetNullableTypeWithPrecision |
| TypeFactory+NullableTypeCreatorDelegate | Func<SqlType,NullableType> | NHibernate.Type.TypeFactory+NullableTypeCreatorDelegate |
| BeforeTransactionCompletionProcessDelegate | Action | NHibernate.Action.BeforeTransactionCompletionProcessDelegate |
| AfterTransactionCompletionProcessDelegate | Action<Boolean> | NHibernate.Action.AfterTransactionCompletionProcessDelegate |
| DelayedEnumerator<T>+GetResult | Func | NHibernate.Impl.DelayedEnumerator<T>+GetResult |
| FutureValue<T>+GetResult | Func | NHibernate.Impl.FutureValue<T>+GetResult |
| SqlTypeFactory+TypeWithLenCreateDelegate | Func<Int32,SqlType> | NHibernate.SqlTypes.SqlTypeFactory+TypeWithLenCreateDelegate |
| FilterPredicate | Predicate<IASTNode> | NHibernate.Hql.Ast.ANTLR.Util.FilterPredicate |
| SecondPassCommand | Action<IDictionary<String,PersistentClass>> | NHibernate.Cfg.SecondPassCommand |
| SetterCallback | Action<Object,Int32,Object> | NHibernate.Bytecode.Lightweight.SetterCallback |
| GetterCallback | Func<Object,Int32,Object> | NHibernate.Bytecode.Lightweight.GetterCallback |
| GetPropertyValuesInvoker | Func<Object,GetterCallback,Array> | NHibernate.Bytecode.Lightweight.GetPropertyValuesInvoker |
| SetPropertyValuesInvoker | Action<Object,Object[],SetterCallback> | NHibernate.Bytecode.Lightweight.SetPropertyValuesInvoker |
| CreateInstanceInvoker | Func | NHibernate.Bytecode.Lightweight.CreateInstanceInvoker |
| QueryParameters+GetNamedParameterLocations | Func<String,Array> | NHibernate.Engine.QueryParameters+GetNamedParameterLocations |
| SqlClientSqlCommandSet+PropSetter<T> | Action<T> | NHibernate.AdoNet.SqlClientSqlCommandSet+PropSetter<T> |
| SqlClientSqlCommandSet+PropGetter<T> | Func | NHibernate.AdoNet.SqlClientSqlCommandSet+PropGetter<T> |
| SqlClientSqlCommandSet+AppendCommand | Action<SqlCommand> | NHibernate.AdoNet.SqlClientSqlCommandSet+AppendCommand |
| SqlClientSqlCommandSet+ExecuteNonQueryCommand | Func | NHibernate.AdoNet.SqlClientSqlCommandSet+ExecuteNonQueryCommand |
| SqlClientSqlCommandSet+DisposeCommand | Action | NHibernate.AdoNet.SqlClientSqlCommandSet+DisposeCommand |
Statistics
| Stat | replaceWith |
|---|---|
| Sum: | 0 |
| Average: | 0 |
| Minimum: | 0 |
| Maximum: | 0 |
| Standard deviation: | 0 |
| Variance: | 0 |
| Rule warning: Types with disposable instance fields must be disposable |
// <Name>Types with disposable instance fields must be disposable</Name>
warnif count > 0
let iDisposable = ThirdParty.Types.WithFullName("System.IDisposable").FirstOrDefault()
where iDisposable != null // iDisposable can be null if the code base doesn't use at all System.IDisposable
from t in Application.Types where
!t.Implement(iDisposable) &&
!t.IsGeneratedByCompiler
let instanceFieldsDisposable =
t.InstanceFields.Where(f => f.FieldType != null &&
f.FieldType.Implement(iDisposable))
where instanceFieldsDisposable.Count() > 0
select new { t, instanceFieldsDisposable }
warnif count > 0
let iDisposable = ThirdParty.Types.WithFullName("System.IDisposable").FirstOrDefault()
where iDisposable != null // iDisposable can be null if the code base doesn't use at all System.IDisposable
from t in Application.Types where
!t.Implement(iDisposable) &&
!t.IsGeneratedByCompiler
let instanceFieldsDisposable =
t.InstanceFields.Where(f => f.FieldType != null &&
f.FieldType.Implement(iDisposable))
where instanceFieldsDisposable.Count() > 0
select new { t, instanceFieldsDisposable }
57 types matched
| types | instanceFieldsDisposable | Full Name |
|---|---|---|
| types | instanceFieldsDisposable | Full Name |
| XmlAccessor | 1 field | NHibernate.Properties.XmlAccessor |
| XmlAccessor+XmlGetter | 1 field | NHibernate.Properties.XmlAccessor+XmlGetter |
| FutureBatch<TQueryApproach,TMultiApproach> | 1 field | NHibernate.Impl.FutureBatch<TQueryApproach,TMultiApproach> |
| MultiCriteriaImpl | 2 fields | NHibernate.Impl.MultiCriteriaImpl |
| AbstractSessionImpl | 2 fields | NHibernate.Impl.AbstractSessionImpl |
| Printer | 1 field | NHibernate.Impl.Printer |
| SqlInsertBuilder | 1 field | NHibernate.SqlCommand.SqlInsertBuilder |
| ThreadLocalSessionContext | 1 field | NHibernate.Context.ThreadLocalSessionContext |
| MapBasedSessionContext | 1 field | NHibernate.Context.MapBasedSessionContext |
| ManagedWebSessionContext | 1 field | NHibernate.Context.ManagedWebSessionContext |
| StatisticsImpl | 1 field | NHibernate.Stat.StatisticsImpl |
| EntityMetamodel | 1 field | NHibernate.Tuple.Entity.EntityMetamodel |
| AbstractDataBaseSchema | 1 field | NHibernate.Dialect.Schema.AbstractDataBaseSchema |
| Loader | 1 field | NHibernate.Loader.Loader |
| JoinWalker | 1 field | NHibernate.Loader.JoinWalker |
| CriteriaQueryTranslator | 1 field | NHibernate.Loader.Criteria.CriteriaQueryTranslator |
| CustomLoader+MetaData | 1 field | NHibernate.Loader.Custom.CustomLoader+MetaData |
| SQLQueryReturnProcessor | 1 field | NHibernate.Loader.Custom.Sql.SQLQueryReturnProcessor |
| AbstractEntityPersister | 1 field | NHibernate.Persister.Entity.AbstractEntityPersister |
| AbstractCollectionPersister | 1 field | NHibernate.Persister.Collection.AbstractCollectionPersister |
| SessionFactoryHelper | 1 field | NHibernate.Hql.Util.SessionFactoryHelper |
| PolymorphicQuerySourceDetector | 1 field | NHibernate.Hql.Ast.ANTLR.PolymorphicQuerySourceDetector |
| SessionFactoryHelperExtensions | 1 field | NHibernate.Hql.Ast.ANTLR.SessionFactoryHelperExtensions |
| QueryTranslatorImpl | 1 field | NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl |
| HqlParseEngine | 1 field | NHibernate.Hql.Ast.ANTLR.HqlParseEngine |
| HqlParseEngine+ConstantConverter | 1 field | NHibernate.Hql.Ast.ANTLR.HqlParseEngine+ConstantConverter |
| HqlSqlTranslator | 1 field | NHibernate.Hql.Ast.ANTLR.HqlSqlTranslator |
| HqlSqlGenerator | 1 field | NHibernate.Hql.Ast.ANTLR.HqlSqlGenerator |
| SqlGenerator | 1 field | NHibernate.Hql.Ast.ANTLR.SqlGenerator |
| AstPolymorphicProcessor | 1 field | NHibernate.Hql.Ast.ANTLR.AstPolymorphicProcessor |
| JavaConstantNode | 1 field | NHibernate.Hql.Ast.ANTLR.Tree.JavaConstantNode |
| AssignmentSpecification | 1 field | NHibernate.Hql.Ast.ANTLR.Tree.AssignmentSpecification |
| QueryKey | 1 field | NHibernate.Cache.QueryKey |
| SelectGenerator+SelectGeneratorDelegate | 1 field | NHibernate.Id.SelectGenerator+SelectGeneratorDelegate |
| IdentityGenerator+InsertSelectDelegate | 1 field | NHibernate.Id.IdentityGenerator+InsertSelectDelegate |
| IdentityGenerator+BasicDelegate | 1 field | NHibernate.Id.IdentityGenerator+BasicDelegate |
| OutputParamReturningDelegate | 1 field | NHibernate.Id.Insert.OutputParamReturningDelegate |
| AbstractEvent | 1 field | NHibernate.Event.AbstractEvent |
| AbstractVisitor | 1 field | NHibernate.Event.Default.AbstractVisitor |
| Settings | 1 field | NHibernate.Cfg.Settings |
| NhQueryProvider | 1 field | NHibernate.Linq.NhQueryProvider |
| AddLeftJoinsReWriter | 1 field | NHibernate.Linq.Visitors.AddLeftJoinsReWriter |
| VisitorParameters | 1 field | NHibernate.Linq.Visitors.VisitorParameters |
| LeftJoinDetector | 1 field | NHibernate.Linq.Visitors.LeftJoinDetector |
| CollectionKey | 1 field | NHibernate.Engine.CollectionKey |
| JoinSequence | 1 field | NHibernate.Engine.JoinSequence |
| Cascade | 1 field | NHibernate.Engine.Cascade |
| EntityKey | 1 field | NHibernate.Engine.EntityKey |
| LoadingCollectionEntry | 1 field | NHibernate.Engine.Loading.LoadingCollectionEntry |
| CollectionLoadContext | 1 field | NHibernate.Engine.Loading.CollectionLoadContext |
| QueryPlanCache | 1 field | NHibernate.Engine.Query.QueryPlanCache |
| ConnectionManager | 3 fields | NHibernate.AdoNet.ConnectionManager |
| BasicFormatter+FormatProcess | 1 field | NHibernate.AdoNet.Util.BasicFormatter+FormatProcess |
| ManagedProviderConnectionHelper | 2 fields | NHibernate.Tool.hbm2ddl.ManagedProviderConnectionHelper |
| SuppliedConnectionProviderConnectionHelper | 2 fields | NHibernate.Tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper |
| SuppliedConnectionHelper | 1 field | NHibernate.Tool.hbm2ddl.SuppliedConnectionHelper |
| ScriptSplitter | 1 field | NHibernate.Tool.hbm2ddl.ScriptSplitter |
Statistics
| Stat | instanceFieldsDisposable |
|---|---|
| Sum: | 0 |
| Average: | 0 |
| Minimum: | 0 |
| Maximum: | 0 |
| Standard deviation: | 0 |
| Variance: | 0 |
| Rule warning: Classes that are candidate to be turned into structures |
// <Name>Classes that are candidate to be turned into structures</Name>
warnif count > 0 from t in JustMyCode.Types where
t.IsClass &&
!t.IsGeneratedByCompiler &&
!t.IsStatic &&
t.SizeOfInst > 0 &&
t.SizeOfInst <= 16 && // Structure instance must not be too big,
// else it degrades performance.
t.NbChildren == 0 && // Must not have children
// Must have no base class
t.DepthOfDeriveFrom("System.Object".AllowNoMatch()) == 1
select new { t, t.SizeOfInst, t.InstanceFields } // Must derive directly from System.Object
// && t.IsSealed <-- You might want to add this condition
// to restreint the set.
// && t.IsImmutable <-- Structures should be immutable type.
// && t.!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.
warnif count > 0 from t in JustMyCode.Types where
t.IsClass &&
!t.IsGeneratedByCompiler &&
!t.IsStatic &&
t.SizeOfInst > 0 &&
t.SizeOfInst <= 16 && // Structure instance must not be too big,
// else it degrades performance.
t.NbChildren == 0 && // Must not have children
// Must have no base class
t.DepthOfDeriveFrom("System.Object".AllowNoMatch()) == 1
select new { t, t.SizeOfInst, t.InstanceFields } // Must derive directly from System.Object
// && t.IsSealed <-- You might want to add this condition
// to restreint the set.
// && t.IsImmutable <-- Structures should be immutable type.
// && t.!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.
317 types matched
The following list of types is truncated and contains only the first 100 types of the 317 types matched. All matched types could be listed in the report by unchecking the option:
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched types.
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched types.
| types | Size of instance | InstanceFields | Full Name |
|---|---|---|---|
| types | Size of instance | InstanceFields | Full Name |
| LoggerProvider | 4 | 1 field | NHibernate.LoggerProvider |
| Log4NetLogger | 4 | 1 field | NHibernate.Log4NetLogger |
| LockMode | 12 | 3 fields | NHibernate.LockMode |
| LinkedHashMap<TKey,TValue> | 16 | 3 fields | NHibernate.Util.LinkedHashMap<TKey,TValue> |
| LinkedHashMap<TKey,TValue>+Entry | 16 | 4 fields | NHibernate.Util.LinkedHashMap<TKey,TValue>+Entry |
| LinkedHashMap<TKey,TValue>+KeyCollection | 4 | 1 field | NHibernate.Util.LinkedHashMap<TKey,TValue>+KeyCollection |
| LinkedHashMap<TKey,TValue>+ValuesCollection | 4 | 1 field | NHibernate.Util.LinkedHashMap<TKey,TValue>+ValuesCollection |
| LinkedHashMap<TKey,TValue>+BackwardEnumerator<T> | 16 | 3 fields | NHibernate.Util.LinkedHashMap<TKey,TValue>+BackwardEnumerator<T> |
| AssemblyQualifiedTypeName | 12 | 3 fields | NHibernate.Util.AssemblyQualifiedTypeName |
| SequencedHashMap+Entry | 16 | 4 fields | NHibernate.Util.SequencedHashMap+Entry |
| SequencedHashMap+KeyCollection | 4 | 1 field | NHibernate.Util.SequencedHashMap+KeyCollection |
| SequencedHashMap+ValuesCollection | 4 | 1 field | NHibernate.Util.SequencedHashMap+ValuesCollection |
| ThreadSafeDictionary<TKey,TValue> | 8 | 2 fields | NHibernate.Util.ThreadSafeDictionary<TKey,TValue> |
| TypeNameParser | 8 | 2 fields | NHibernate.Util.TypeNameParser |
| NullableDictionary<TKey,TValue> | 9 | 3 fields | NHibernate.Util.NullableDictionary<TKey,TValue> |
| UnmodifiableDictionary<TKey,TValue> | 4 | 1 field | NHibernate.Util.UnmodifiableDictionary<TKey,TValue> |
| JoinedEnumerable | 9 | 3 fields | NHibernate.Util.JoinedEnumerable |
| JoinedEnumerable<T> | 4 | 1 field | NHibernate.Util.JoinedEnumerable<T> |
| JoinedEnumerable<T>+JoinedEnumerator | 9 | 3 fields | NHibernate.Util.JoinedEnumerable<T>+JoinedEnumerator |
| SoftLimitMRUCache | 16 | 4 fields | NHibernate.Util.SoftLimitMRUCache |
| FilterHelper | 8 | 2 fields | NHibernate.Util.FilterHelper |
| IdentityMap | 4 | 1 field | NHibernate.Util.IdentityMap |
| WeakRefWrapper | 8 | 2 fields | NHibernate.Util.WeakRefWrapper |
| WeakEnumerator | 12 | 3 fields | NHibernate.Util.WeakEnumerator |
| WeakHashtable | 4 | 1 field | NHibernate.Util.WeakHashtable |
| SafetyEnumerable<T> | 4 | 1 field | NHibernate.Util.SafetyEnumerable<T> |
| StringTokenizer | 9 | 3 fields | NHibernate.Util.StringTokenizer |
| StringTokenizer+StringTokenizerEnumerator | 12 | 3 fields | NHibernate.Util.StringTokenizer+StringTokenizerEnumerator |
| SingletonEnumerable<T> | 4 | 1 field | NHibernate.Util.SingletonEnumerable<T> |
| SingletonEnumerable<T>+SingletonEnumerator | 5 | 2 fields | NHibernate.Util.SingletonEnumerable<T>+SingletonEnumerator |
| SimpleMRUCache | 12 | 3 fields | NHibernate.Util.SimpleMRUCache |
| AnyType+ObjectTypeCacheEntry | 8 | 2 fields | NHibernate.Type.AnyType+ObjectTypeCacheEntry |
| FieldAccessor | 4 | 1 field | NHibernate.Properties.FieldAccessor |
| FieldAccessor+FieldGetter | 12 | 3 fields | NHibernate.Properties.FieldAccessor+FieldGetter |
| FieldAccessor+FieldSetter | 12 | 3 fields | NHibernate.Properties.FieldAccessor+FieldSetter |
| XmlAccessor | 12 | 3 fields | NHibernate.Properties.XmlAccessor |
| ChainedPropertyAccessor | 4 | 1 field | NHibernate.Properties.ChainedPropertyAccessor |
| NoSetterAccessor | 4 | 1 field | NHibernate.Properties.NoSetterAccessor |
| IndexPropertyAccessor | 8 | 2 fields | NHibernate.Properties.IndexPropertyAccessor |
| IndexPropertyAccessor+IndexGetter | 4 | 1 field | NHibernate.Properties.IndexPropertyAccessor+IndexGetter |
| EmbeddedPropertyAccessor+EmbeddedGetter | 4 | 1 field | NHibernate.Properties.EmbeddedPropertyAccessor+EmbeddedGetter |
| EmbeddedPropertyAccessor+EmbeddedSetter | 4 | 1 field | NHibernate.Properties.EmbeddedPropertyAccessor+EmbeddedSetter |
| BackrefPropertyAccessor | 8 | 2 fields | NHibernate.Properties.BackrefPropertyAccessor |
| BackrefPropertyAccessor+BackrefGetter | 4 | 1 field | NHibernate.Properties.BackrefPropertyAccessor+BackrefGetter |
| MapAccessor+MapSetter | 4 | 1 field | NHibernate.Properties.MapAccessor+MapSetter |
| MapAccessor+MapGetter | 4 | 1 field | NHibernate.Properties.MapAccessor+MapGetter |
| BasicPropertyAccessor+BasicGetter | 12 | 3 fields | NHibernate.Properties.BasicPropertyAccessor+BasicGetter |
| BasicPropertyAccessor+BasicSetter | 12 | 3 fields | NHibernate.Properties.BasicPropertyAccessor+BasicSetter |
| Formula | 8 | 2 fields | NHibernate.Mapping.Formula |
| TypeDef | 8 | 2 fields | NHibernate.Mapping.TypeDef |
| OneToMany | 14 | 5 fields | NHibernate.Mapping.OneToMany |
| MetaAttribute | 8 | 2 fields | NHibernate.Mapping.MetaAttribute |
| Table+ForeignKeyKey | 12 | 3 fields | NHibernate.Mapping.Table+ForeignKeyKey |
| Index | 12 | 3 fields | NHibernate.Mapping.Index |
| DynamicFilterParameterSpecification | 12 | 3 fields | NHibernate.Param.DynamicFilterParameterSpecification |
| ParameterTranslationsImpl | 8 | 2 fields | NHibernate.Param.ParameterTranslationsImpl |
| ParameterTranslationsImpl+NamedParamTempHolder | 12 | 3 fields | NHibernate.Param.ParameterTranslationsImpl+NamedParamTempHolder |
| ParameterInfo | 12 | 3 fields | NHibernate.Param.ParameterInfo |
| CollectionFilterKeyParameterSpecification | 12 | 3 fields | NHibernate.Param.CollectionFilterKeyParameterSpecification |
| AggregatedIndexCollectionSelectorParameterSpecifications | 4 | 1 field | NHibernate.Param .AggregatedIndexCollectionSelectorParameterSpecifications |
| VersionTypeSeedParameterSpecification | 4 | 1 field | NHibernate.Param.VersionTypeSeedParameterSpecification |
| ReflectionDriveConnectionCommandProvider | 8 | 2 fields | NHibernate.Driver.ReflectionDriveConnectionCommandProvider |
| DbProviderFactoryDriveConnectionCommandProvider | 4 | 1 field | NHibernate.Driver.DbProviderFactoryDriveConnectionCommandProvider |
| NHybridDataReader | 10 | 4 fields | NHibernate.Driver.NHybridDataReader |
| DelayedPostInsertIdentifier | 8 | 1 field | NHibernate.Action.DelayedPostInsertIdentifier |
| BulkOperationCleanupAction | 16 | 4 fields | NHibernate.Action.BulkOperationCleanupAction |
| MultipleQueriesCacheAssembler | 4 | 1 field | NHibernate.Impl.MultipleQueriesCacheAssembler |
| SessionIdLoggingContext | 5 | 1 field | NHibernate.Impl.SessionIdLoggingContext |
| CriteriaImpl+CriterionEntry | 8 | 2 fields | NHibernate.Impl.CriteriaImpl+CriterionEntry |
| CriteriaImpl+OrderEntry | 8 | 2 fields | NHibernate.Impl.CriteriaImpl+OrderEntry |
| FilterImpl | 8 | 2 fields | NHibernate.Impl.FilterImpl |
| DelayedEnumerator<T> | 8 | 2 fields | NHibernate.Impl.DelayedEnumerator<T> |
| ExpandedQueryExpression | 16 | 4 fields | NHibernate.Impl.ExpandedQueryExpression |
| ParameterExpander | 8 | 2 fields | NHibernate.Impl.ParameterExpander |
| ParameterDetector | 12 | 3 fields | NHibernate.Impl.ParameterDetector |
| FutureValue<T> | 8 | 2 fields | NHibernate.Impl.FutureValue<T> |
| Printer | 4 | 1 field | NHibernate.Impl.Printer |
| AliasToBeanConstructorResultTransformer | 4 | 1 field | NHibernate.Transform.AliasToBeanConstructorResultTransformer |
| DistinctRootEntityResultTransformer+Identity | 4 | 1 field | NHibernate.Transform.DistinctRootEntityResultTransformer+Identity |
| AliasToBeanResultTransformer | 16 | 4 fields | NHibernate.Transform.AliasToBeanResultTransformer |
| InFragment | 8 | 2 fields | NHibernate.SqlCommand.InFragment |
| Parameter | 5 | 1 field | NHibernate.SqlCommand.Parameter |
| Alias | 8 | 2 fields | NHibernate.SqlCommand.Alias |
| DisjunctionFragment | 4 | 1 field | NHibernate.SqlCommand.DisjunctionFragment |
| SqlString | 5 | 2 fields | NHibernate.SqlCommand.SqlString |
| ForUpdateFragment | 9 | 3 fields | NHibernate.SqlCommand.ForUpdateFragment |
| InsertSelect | 16 | 4 fields | NHibernate.SqlCommand.InsertSelect |
| SqlStringBuilder | 8 | 2 fields | NHibernate.SqlCommand.SqlStringBuilder |
| SqlStringBuilder+AddingSqlStringVisitor | 4 | 1 field | NHibernate.SqlCommand.SqlStringBuilder+AddingSqlStringVisitor |
| SqlCommandInfo | 8 | 2 fields | NHibernate.SqlCommand.SqlCommandInfo |
| ConditionalFragment | 16 | 4 fields | NHibernate.SqlCommand.ConditionalFragment |
| ThreadLocalSessionContext | 4 | 1 field | NHibernate.Context.ThreadLocalSessionContext |
| ManagedWebSessionContext | 4 | 1 field | NHibernate.Context.ManagedWebSessionContext |
| WcfStateExtension | 4 | 1 field | NHibernate.Context.WcfStateExtension |
| AdoNetWithDistributedTransactionFactory+DistributedTransactionContext | 10 | 4 fields | NHibernate.Transaction .AdoNetWithDistributedTransactionFactory+DistributedTransactionContext |
| AdoNetTransactionFactory | 4 | 1 field | NHibernate.Transaction.AdoNetTransactionFactory |
| SessionStatisticsImpl | 4 | 1 field | NHibernate.Stat.SessionStatisticsImpl |
| DictionaryProxy | 4 | 1 field | NHibernate.DebugHelpers.DictionaryProxy |
| DictionaryProxy<K,V> | 4 | 1 field | NHibernate.DebugHelpers.DictionaryProxy<K,V> |
| CollectionProxy | 4 | 1 field | NHibernate.DebugHelpers.CollectionProxy |
Statistics
| Stat | Size of instance | InstanceFields |
|---|---|---|
| Sum: | 2 601 | 0 |
| Average: | 8.205 | 0 |
| Minimum: | 1 | 0 |
| Maximum: | 16 | 0 |
| Standard deviation: | 3.9435 | 0 |
| Variance: | 15.551 | 0 |
| Rule warning: Avoid namespaces with few types |
// <Name>Avoid namespaces with few types</Name>
warnif count > 0 from n in JustMyCode.Namespaces
let types = n.ChildTypes.Where(t => !t.IsGeneratedByCompiler)
where
types.Count() < 5
orderby types.Count() ascending
select new { n, types }
// 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
warnif count > 0 from n in JustMyCode.Namespaces
let types = n.ChildTypes.Where(t => !t.IsGeneratedByCompiler)
where
types.Count() < 5
orderby types.Count() ascending
select new { n, types }
// 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
18 namespaces matched
| namespaces | types | Full Name |
|---|---|---|
| namespaces | types | Full Name |
| 0 type | ||
| NHibernate.Persister | 1 type | NHibernate.Persister |
| NHibernate.Hql.Util | 1 type | NHibernate.Hql.Util |
| NHibernate.Hql.Ast.ANTLR.Loader | 1 type | NHibernate.Hql.Ast.ANTLR.Loader |
| NHibernate.Proxy.Poco | 1 type | NHibernate.Proxy.Poco |
| NHibernate.Cache.Access | 1 type | NHibernate.Cache.Access |
| NHibernate.Metadata | 2 types | NHibernate.Metadata |
| NHibernate.Bytecode.CodeDom | 2 types | NHibernate.Bytecode.CodeDom |
| NHibernate.Engine.Transaction | 2 types | NHibernate.Engine.Transaction |
| NHibernate.Dialect.Lock | 3 types | NHibernate.Dialect.Lock |
| NHibernate.Proxy.Map | 3 types | NHibernate.Proxy.Map |
| NHibernate.Linq.ResultOperators | 3 types | NHibernate.Linq.ResultOperators |
| NHibernate.Engine.Loading | 3 types | NHibernate.Engine.Loading |
| NHibernate.ByteCode.LinFu | 3 types | NHibernate.ByteCode.LinFu |
| NHibernate.Classic | 4 types | NHibernate.Classic |
| NHibernate.DebugHelpers | 4 types | NHibernate.DebugHelpers |
| NHibernate.Linq.ReWriters | 4 types | NHibernate.Linq.ReWriters |
| NHibernate.ByteCode.Castle | 4 types | NHibernate.ByteCode.Castle |
Statistics
| Stat | types |
|---|---|
| Sum: | 0 |
| Average: | 0 |
| Minimum: | 0 |
| Maximum: | 0 |
| Standard deviation: | 0 |
| Variance: | 0 |
| Rule warning: Nested types should not be visible |
// <Name>Nested types should not be visible</Name>
warnif count > 0 from t in JustMyCode.Types where
t.IsNested &&
!t.IsGeneratedByCompiler &&
!t.IsPrivate
select new { t, t.NbLinesOfCode, t.Visibility }
// A nested type is a type declared within the
// scope of another type. Nested types are useful
// for encapsulating private implementation details
// of the containing type. Used for this purpose,
// nested types should not be externally visible.
// Do not use externally visible nested types for
// logical grouping or to avoid name collisions;
// instead, use namespaces.
warnif count > 0 from t in JustMyCode.Types where
t.IsNested &&
!t.IsGeneratedByCompiler &&
!t.IsPrivate
select new { t, t.NbLinesOfCode, t.Visibility }
// A nested type is a type declared within the
// scope of another type. Nested types are useful
// for encapsulating private implementation details
// of the containing type. Used for this purpose,
// nested types should not be externally visible.
// Do not use externally visible nested types for
// logical grouping or to avoid name collisions;
// instead, use namespaces.
102 types matched
The following list of types is truncated and contains only the first 100 types of the 102 types matched. All matched types could be listed in the report by unchecking the option:
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched types.
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched types.
| types | # lines of code (LOC) | Visibility | Full Name |
|---|---|---|---|
| types | # lines of code (LOC) | Visibility | Full Name |
| LinkedHashMap<TKey,TValue>+Entry | 18 | Protected | NHibernate.Util.LinkedHashMap<TKey,TValue>+Entry |
| LinkedHashMap<TKey,TValue>+BackwardEnumerator<T> | 12 | Protected | NHibernate.Util.LinkedHashMap<TKey,TValue>+BackwardEnumerator<T> |
| CollectionHelper+EmptyEnumerableClass<T> | 2 | Public | NHibernate.Util.CollectionHelper+EmptyEnumerableClass<T> |
| CollectionHelper+EmptyMapClass<TKey,TValue> | 18 | Public | NHibernate.Util.CollectionHelper+EmptyMapClass<TKey,TValue> |
| AnyType+ObjectTypeCacheEntry | 3 | Public | NHibernate.Type.AnyType+ObjectTypeCacheEntry |
| PersistentEnumType+IEnumConverter | N/A | Public | NHibernate.Type.PersistentEnumType+IEnumConverter |
| FieldAccessor+FieldGetter | 12 | Public | NHibernate.Properties.FieldAccessor+FieldGetter |
| FieldAccessor+FieldSetter | 15 | Public | NHibernate.Properties.FieldAccessor+FieldSetter |
| XmlAccessor+XmlGetter | 7 | Public | NHibernate.Properties.XmlAccessor+XmlGetter |
| XmlAccessor+AttributeGetter | 5 | Public | NHibernate.Properties.XmlAccessor+AttributeGetter |
| XmlAccessor+XmlSetter | 4 | Public | NHibernate.Properties.XmlAccessor+XmlSetter |
| XmlAccessor+AttributeSetter | 11 | Public | NHibernate.Properties.XmlAccessor+AttributeSetter |
| XmlAccessor+ElementAttributeGetter | 11 | Public | NHibernate.Properties.XmlAccessor+ElementAttributeGetter |
| XmlAccessor+ElementAttributeSetter | 17 | Public | NHibernate.Properties.XmlAccessor+ElementAttributeSetter |
| XmlAccessor+ElementGetter | 5 | Public | NHibernate.Properties.XmlAccessor+ElementGetter |
| XmlAccessor+ElementSetter | 11 | Public | NHibernate.Properties.XmlAccessor+ElementSetter |
| XmlAccessor+TextGetter | 3 | Public | NHibernate.Properties.XmlAccessor+TextGetter |
| XmlAccessor+TextSetter | 6 | Public | NHibernate.Properties.XmlAccessor+TextSetter |
| IndexPropertyAccessor+IndexSetter | 2 | Public | NHibernate.Properties.IndexPropertyAccessor+IndexSetter |
| IndexPropertyAccessor+IndexGetter | 9 | Public | NHibernate.Properties.IndexPropertyAccessor+IndexGetter |
| EmbeddedPropertyAccessor+EmbeddedGetter | 8 | Public | NHibernate.Properties.EmbeddedPropertyAccessor+EmbeddedGetter |
| EmbeddedPropertyAccessor+EmbeddedSetter | 5 | Public | NHibernate.Properties.EmbeddedPropertyAccessor+EmbeddedSetter |
| MapAccessor+MapSetter | 5 | Public | NHibernate.Properties.MapAccessor+MapSetter |
| MapAccessor+MapGetter | 7 | Public | NHibernate.Properties.MapAccessor+MapGetter |
| BasicPropertyAccessor+BasicGetter | 16 | Public | NHibernate.Properties.BasicPropertyAccessor+BasicGetter |
| BasicPropertyAccessor+BasicSetter | 19 | Public | NHibernate.Properties.BasicPropertyAccessor+BasicSetter |
| Table+ForeignKeyKey | 14 | Internal | NHibernate.Mapping.Table+ForeignKeyKey |
| CriteriaImpl+Subcriteria | 79 | Public | NHibernate.Impl.CriteriaImpl+Subcriteria |
| CriteriaImpl+CriterionEntry | 6 | Public | NHibernate.Impl.CriteriaImpl+CriterionEntry |
| CriteriaImpl+OrderEntry | 6 | Public | NHibernate.Impl.CriteriaImpl+OrderEntry |
| DistinctRootEntityResultTransformer+Identity | 5 | Internal | NHibernate.Transform.DistinctRootEntityResultTransformer+Identity |
| AdoNetWithDistributedTransactionFactory+DistributedTransactionContext | 33 | Public | NHibernate.Transaction .AdoNetWithDistributedTransactionFactory+DistributedTransactionContext |
| Dialect+QuotedAndParenthesisStringTokenizer | 4 | Public | NHibernate.Dialect.Dialect+QuotedAndParenthesisStringTokenizer |
| Dialect+QuotedAndParenthesisStringTokenizer+TokenizerState | N/A | Public | NHibernate.Dialect .Dialect+QuotedAndParenthesisStringTokenizer+TokenizerState |
| Dialect+CountQueryFunctionInfo | 2 | Protected | NHibernate.Dialect.Dialect+CountQueryFunctionInfo |
| Dialect+AvgQueryFunctionInfo | 9 | Protected | NHibernate.Dialect.Dialect+AvgQueryFunctionInfo |
| Dialect+SumQueryFunctionInfo | 14 | Protected | NHibernate.Dialect.Dialect+SumQueryFunctionInfo |
| Dialect+NoOpViolatedConstraintNameExtracter | 1 | Public | NHibernate.Dialect.Dialect+NoOpViolatedConstraintNameExtracter |
| MsSql2000Dialect+CountBigQueryFunction | 2 | Protected | NHibernate.Dialect.MsSql2000Dialect+CountBigQueryFunction |
| JoinWalker+AssociationKey | 9 | Protected | NHibernate.Loader.JoinWalker+AssociationKey |
| CustomLoader+ResultRowProcessor | 19 | Public | NHibernate.Loader.Custom.CustomLoader+ResultRowProcessor |
| CustomLoader+IResultColumnProcessor | N/A | Public | NHibernate.Loader.Custom.CustomLoader+IResultColumnProcessor |
| CustomLoader+NonScalarResultColumnProcessor | 3 | Public | NHibernate.Loader.Custom.CustomLoader+NonScalarResultColumnProcessor |
| CustomLoader+ScalarResultColumnProcessor | 16 | Public | NHibernate.Loader.Custom.CustomLoader+ScalarResultColumnProcessor |
| CustomLoader+MetaData | 6 | Public | NHibernate.Loader.Custom.CustomLoader+MetaData |
| SQLQueryParser+IParserContext | N/A | Public | NHibernate.Loader.Custom.Sql.SQLQueryParser+IParserContext |
| SQLQueryParser+ParameterSubstitutionRecognizer | 19 | Public | NHibernate.Loader.Custom.Sql .SQLQueryParser+ParameterSubstitutionRecognizer |
| SQLQueryReturnProcessor+ResultAliasContext | 13 | Public | NHibernate.Loader.Custom.Sql .SQLQueryReturnProcessor+ResultAliasContext |
| AbstractEntityPersister+IInclusionChecker | N/A | ProtectedOrInternal | NHibernate.Persister.Entity.AbstractEntityPersister+IInclusionChecker |
| AbstractCollectionPersister+GeneratedIdentifierBinder | 13 | Protected | NHibernate.Persister.Collection .AbstractCollectionPersister+GeneratedIdentifierBinder |
| Example+IPropertySelector | N/A | Public | NHibernate.Criterion.Example+IPropertySelector |
| RestrictionExtensions+RestrictionBetweenBuilder | 1 | Public | NHibernate.Criterion.RestrictionExtensions+RestrictionBetweenBuilder |
| QueryOverRestrictionBuilderBase<TReturn,TRoot,TSubType >+LambdaBetweenBuilder | 9 | Public | NHibernate.Criterion.Lambda.QueryOverRestrictionBuilderBase<TReturn ,TRoot,TSubType>+LambdaBetweenBuilder |
| LambdaRestrictionBuilder+LambdaBetweenBuilder | 7 | Public | NHibernate.Criterion.Lambda .LambdaRestrictionBuilder+LambdaBetweenBuilder |
| PathExpressionParser+CollectionElement | 1 | Public | NHibernate.Hql.Classic.PathExpressionParser+CollectionElement |
| ReadWriteCache+ILockable | N/A | Public | NHibernate.Cache.ReadWriteCache+ILockable |
| SequenceIdentityGenerator+SequenceIdentityDelegate | 5 | Public | NHibernate.Id.SequenceIdentityGenerator+SequenceIdentityDelegate |
| SelectGenerator+SelectGeneratorDelegate | 15 | Public | NHibernate.Id.SelectGenerator+SelectGeneratorDelegate |
| IdentityGenerator+InsertSelectDelegate | 11 | Public | NHibernate.Id.IdentityGenerator+InsertSelectDelegate |
| IdentityGenerator+BasicDelegate | 8 | Public | NHibernate.Id.IdentityGenerator+BasicDelegate |
| OptimizerFactory+OptimizerSupport | 6 | Public | NHibernate.Id.Enhanced.OptimizerFactory+OptimizerSupport |
| OptimizerFactory+HiLoOptimizer | 20 | Public | NHibernate.Id.Enhanced.OptimizerFactory+HiLoOptimizer |
| OptimizerFactory+NoopOptimizer | 9 | Public | NHibernate.Id.Enhanced.OptimizerFactory+NoopOptimizer |
| OptimizerFactory+PooledOptimizer | 18 | Public | NHibernate.Id.Enhanced.OptimizerFactory+PooledOptimizer |
| AbstractPersistentCollection+IDelayedOperation | N/A | Protected | NHibernate.Collection.AbstractPersistentCollection+IDelayedOperation |
| PersistentList+ClearDelayedOperation | 5 | Protected | NHibernate.Collection.PersistentList+ClearDelayedOperation |
| PersistentList+SimpleAddDelayedOperation | 6 | Protected | NHibernate.Collection.PersistentList+SimpleAddDelayedOperation |
| PersistentList+AddDelayedOperation | 7 | Protected | NHibernate.Collection.PersistentList+AddDelayedOperation |
| PersistentList+SetDelayedOperation | 8 | Protected | NHibernate.Collection.PersistentList+SetDelayedOperation |
| PersistentList+RemoveDelayedOperation | 7 | Protected | NHibernate.Collection.PersistentList+RemoveDelayedOperation |
| PersistentList+SimpleRemoveDelayedOperation | 6 | Protected | NHibernate.Collection.PersistentList+SimpleRemoveDelayedOperation |
| PersistentSet+ClearDelayedOperation | 5 | Protected | NHibernate.Collection.PersistentSet+ClearDelayedOperation |
| PersistentSet+SimpleAddDelayedOperation | 6 | Protected | NHibernate.Collection.PersistentSet+SimpleAddDelayedOperation |
| PersistentSet+SimpleRemoveDelayedOperation | 6 | Protected | NHibernate.Collection.PersistentSet+SimpleRemoveDelayedOperation |
| PersistentMap+ClearDelayedOperation | 5 | Protected | NHibernate.Collection.PersistentMap+ClearDelayedOperation |
| PersistentMap+PutDelayedOperation | 8 | Protected | NHibernate.Collection.PersistentMap+PutDelayedOperation |
| PersistentMap+RemoveDelayedOperation | 7 | Protected | NHibernate.Collection.PersistentMap+RemoveDelayedOperation |
| PersistentBag+ClearDelayedOperation | 5 | Protected | NHibernate.Collection.PersistentBag+ClearDelayedOperation |
| PersistentBag+SimpleAddDelayedOperation | 6 | Protected | NHibernate.Collection.PersistentBag+SimpleAddDelayedOperation |
| Mappings+ColumnNames | 2 | Public | NHibernate.Cfg.Mappings+ColumnNames |
| Mappings+TableDescription | 3 | Public | NHibernate.Cfg.Mappings+TableDescription |
| Mappings+PropertyReference | 0 | Public | NHibernate.Cfg.Mappings+PropertyReference |
| ClassExtractor+ClassEntry | 19 | Public | NHibernate.Cfg.ClassExtractor+ClassEntry |
| MappingsQueueEntry+RequiredEntityName | 19 | Public | NHibernate.Cfg.MappingsQueueEntry+RequiredEntityName |
| BytecodeProviderImpl+Generator | 74 | Public | NHibernate.Bytecode.CodeDom.BytecodeProviderImpl+Generator |
| GroupJoinAggregateDetectionVisitor+StackFlag | 2 | Internal | NHibernate.Linq.GroupJoin.GroupJoinAggregateDetectionVisitor+StackFlag |
| GroupJoinAggregateDetectionVisitor+StackFlag+StackFlagDisposable | 5 | Internal | NHibernate.Linq.GroupJoin .GroupJoinAggregateDetectionVisitor+StackFlag+StackFlagDisposable |
| LeftJoinDetector+Results | 4 | Public | NHibernate.Linq.Visitors.LeftJoinDetector+Results |
| IdentifierValue+UndefinedClass | 3 | Public | NHibernate.Engine.IdentifierValue+UndefinedClass |
| Versioning+OptimisticLock | N/A | Public | NHibernate.Engine.Versioning+OptimisticLock |
| ForeignKeys+Nullifier | 47 | Public | NHibernate.Engine.ForeignKeys+Nullifier |
| TransactionHelper+Work | 6 | Public | NHibernate.Engine.TransactionHelper+Work |
| JoinSequence+ISelector | N/A | Public | NHibernate.Engine.JoinSequence+ISelector |
| CascadeStyle+MultipleCascadeStyle | 21 | Public | NHibernate.Engine.CascadeStyle+MultipleCascadeStyle |
| TypedValue+ParameterListComparer | 30 | Public | NHibernate.Engine.TypedValue+ParameterListComparer |
| TypedValue+DefaultComparer | 8 | Public | NHibernate.Engine.TypedValue+DefaultComparer |
| ParameterParser+IRecognizer | N/A | Public | NHibernate.Engine.Query.ParameterParser+IRecognizer |
| ParamLocationRecognizer+NamedParameterDescription | 6 | Public | NHibernate.Engine.Query .ParamLocationRecognizer+NamedParameterDescription |
| CallableParser+Detail | 0 | Public | NHibernate.Engine.Query.CallableParser+Detail |
| ConnectionManager+Callback | N/A | Public | NHibernate.AdoNet.ConnectionManager+Callback |
Statistics
| Stat | # lines of code (LOC) | Visibility |
|---|---|---|
| Sum: | 965 | 0 |
| Average: | 10.722 | 0 |
| Minimum: | 0 | 0 |
| Maximum: | 79 | 0 |
| Standard deviation: | 12.453 | 0 |
| Variance: | 155.09 | 0 |
| Rule warning: Declare types in namespaces |
// <Name>Declare types in namespaces</Name>
warnif count > 0 from n in Application.Namespaces where
n.Name == ""
select new { n, n.ChildTypes, n.NbLinesOfCode }
// 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.
warnif count > 0 from n in Application.Namespaces where
n.Name == ""
select new { n, n.ChildTypes, n.NbLinesOfCode }
// 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.
1 namespaces matched
| namespace | ChildTypes | # lines of code (LOC) | Full Name |
|---|---|---|---|
| namespace | ChildTypes | # lines of code (LOC) | Full Name |
| 1 type | 0 |
Statistics
| Stat | ChildTypes | # lines of code (LOC) |
|---|---|---|
| Sum: | 0 | 0 |
| Average: | 0 | 0 |
| Minimum: | 0 | 0 |
| Maximum: | 0 | 0 |
| Standard deviation: | 0 | 0 |
| Variance: | 0 | 0 |
| Rule warning: Instances size shouldn't be too big |
// <Name>Instances size shouldn't be too big</Name>
warnif count > 0 from t in JustMyCode.Types where
t.SizeOfInst > 64
orderby t.SizeOfInst descending
select new { t, t.SizeOfInst, t.InstanceFields }
// 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).
// Notice that a class with a large SizeOfInst value
// doesn't necessarily have a lot of instance fields.
// It might derive from a class with a large SizeOfInst value.
// See the definition of the SizeOfInst metric here
// http://www.ndepend.com/Metrics.aspx#SizeOfInst
warnif count > 0 from t in JustMyCode.Types where
t.SizeOfInst > 64
orderby t.SizeOfInst descending
select new { t, t.SizeOfInst, t.InstanceFields }
// 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).
// Notice that a class with a large SizeOfInst value
// doesn't necessarily have a lot of instance fields.
// It might derive from a class with a large SizeOfInst value.
// See the definition of the SizeOfInst metric here
// http://www.ndepend.com/Metrics.aspx#SizeOfInst
73 types matched
| types | Size of instance | InstanceFields | Full Name |
|---|---|---|---|
| types | Size of instance | InstanceFields | Full Name |
| SingleTableEntityPersister | 458 | 34 fields | NHibernate.Persister.Entity.SingleTableEntityPersister |
| JoinedSubclassEntityPersister | 427 | 24 fields | NHibernate.Persister.Entity.JoinedSubclassEntityPersister |
| UnionSubclassEntityPersister | 371 | 10 fields | NHibernate.Persister.Entity.UnionSubclassEntityPersister |
| AbstractEntityPersister | 331 | 85 fields | NHibernate.Persister.Entity.AbstractEntityPersister |
| OneToManyPersister | 294 | 3 fields | NHibernate.Persister.Collection.OneToManyPersister |
| AbstractCollectionPersister | 291 | 87 fields | NHibernate.Persister.Collection.AbstractCollectionPersister |
| BasicCollectionPersister | 291 | 0 field | NHibernate.Persister.Collection.BasicCollectionPersister |
| StatisticsImpl | 261 | 37 fields | NHibernate.Stat.StatisticsImpl |
| QueryTranslator | 188 | 45 fields | NHibernate.Hql.Classic.QueryTranslator |
| RootClass | 177 | 17 fields | NHibernate.Mapping.RootClass |
| Array | 170 | 2 fields | NHibernate.Mapping.Array |
| PrimitiveArray | 170 | 0 field | NHibernate.Mapping.PrimitiveArray |
| List | 162 | 1 field | NHibernate.Mapping.List |
| IndexedCollection | 158 | 2 fields | NHibernate.Mapping.IndexedCollection |
| Map | 158 | 0 field | NHibernate.Mapping.Map |
| IdentifierCollection | 154 | 1 field | NHibernate.Mapping.IdentifierCollection |
| IdentifierBag | 154 | 0 field | NHibernate.Mapping.IdentifierBag |
| JoinedSubclass | 150 | 2 fields | NHibernate.Mapping.JoinedSubclass |
| Collection | 150 | 48 fields | NHibernate.Mapping.Collection |
| Bag | 150 | 0 field | NHibernate.Mapping.Bag |
| Set | 150 | 0 field | NHibernate.Mapping.Set |
| UnionSubclass | 146 | 1 field | NHibernate.Mapping.UnionSubclass |
| EventListeners | 144 | 36 fields | NHibernate.Event.EventListeners |
| Subclass | 142 | 3 fields | NHibernate.Mapping.Subclass |
| SingleTableSubclass | 142 | 0 field | NHibernate.Mapping.SingleTableSubclass |
| EntityMetamodel | 140 | 50 fields | NHibernate.Tuple.Entity.EntityMetamodel |
| PersistentClass | 130 | 38 fields | NHibernate.Mapping.PersistentClass |
| Configuration | 125 | 32 fields | NHibernate.Cfg.Configuration |
| SessionFactoryImpl | 114 | 30 fields | NHibernate.Impl.SessionFactoryImpl |
| HqlSqlWalker | 108 | 29 fields | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker |
| Settings | 108 | 45 fields | NHibernate.Cfg.Settings |
| Mappings | 106 | 28 fields | NHibernate.Cfg.Mappings |
| ImpliedFromElement | 104 | 2 fields | NHibernate.Hql.Ast.ANTLR.Tree.ImpliedFromElement |
| FromElement | 102 | 23 fields | NHibernate.Hql.Ast.ANTLR.Tree.FromElement |
| CriteriaImpl | 101 | 25 fields | NHibernate.Impl.CriteriaImpl |
| QueryLoader | 101 | 21 fields | NHibernate.Hql.Ast.ANTLR.Loader.QueryLoader |
| SessionImpl | 100 | 19 fields | NHibernate.Impl.SessionImpl |
| QueryParameters | 100 | 29 fields | NHibernate.Engine.QueryParameters |
| SqlQueryImpl | 91 | 4 fields | NHibernate.Impl.SqlQueryImpl |
| CollectionFilterImpl | 89 | 1 field | NHibernate.Impl.CollectionFilterImpl |
| ExpressionQueryImpl | 89 | 2 fields | NHibernate.Impl.ExpressionQueryImpl |
| SubselectOneToManyLoader | 88 | 5 fields | NHibernate.Loader.Collection.SubselectOneToManyLoader |
| SubselectCollectionLoader | 88 | 5 fields | NHibernate.Loader.Collection.SubselectCollectionLoader |
| CriteriaJoinWalker | 88 | 5 fields | NHibernate.Loader.Criteria.CriteriaJoinWalker |
| QueryImpl | 85 | 1 field | NHibernate.Impl.QueryImpl |
| Component | 81 | 13 fields | NHibernate.Mapping.Component |
| AbstractQueryImpl | 81 | 22 fields | NHibernate.Impl.AbstractQueryImpl |
| CollectionElementLoader | 80 | 4 fields | NHibernate.Loader.Entity.CollectionElementLoader |
| CriteriaLoader | 80 | 4 fields | NHibernate.Loader.Criteria.CriteriaLoader |
| DotNode | 78 | 8 fields | NHibernate.Hql.Ast.ANTLR.Tree.DotNode |
| EntityLoader | 77 | 1 field | NHibernate.Loader.Entity.EntityLoader |
| AbstractEntityLoader | 76 | 3 fields | NHibernate.Loader.Entity.AbstractEntityLoader |
| CascadeEntityLoader | 76 | 0 field | NHibernate.Loader.Entity.CascadeEntityLoader |
| FromClause | 76 | 9 fields | NHibernate.Hql.Ast.ANTLR.Tree.FromClause |
| DetachedNamedQuery | 72 | 9 fields | NHibernate.Impl.DetachedNamedQuery |
| EntityJoinWalker | 72 | 1 field | NHibernate.Loader.Entity.EntityJoinWalker |
| CascadeEntityJoinWalker | 72 | 1 field | NHibernate.Loader.Entity.CascadeEntityJoinWalker |
| CriteriaQueryTranslator | 72 | 18 fields | NHibernate.Loader.Criteria.CriteriaQueryTranslator |
| ClassExtractor+<GetRootClassesEntries>d__0 | 72 | 18 fields | NHibernate.Cfg.ClassExtractor+<GetRootClassesEntries>d__0 |
| OneToOne | 70 | 5 fields | NHibernate.Mapping.OneToOne |
| StatefulPersistenceContext | 70 | 19 fields | NHibernate.Engine.StatefulPersistenceContext |
| OracleDataClientBatchingBatcher | 70 | 7 fields | NHibernate.AdoNet.OracleDataClientBatchingBatcher |
| DenormalizedTable | 68 | 1 field | NHibernate.Mapping.DenormalizedTable |
| QueryStatistics | 68 | 8 fields | NHibernate.Stat.QueryStatistics |
| AbstractEntityJoinWalker | 68 | 2 fields | NHibernate.Loader.AbstractEntityJoinWalker |
| CollectionLoader | 68 | 1 field | NHibernate.Loader.Collection.CollectionLoader |
| BasicCollectionLoader | 68 | 0 field | NHibernate.Loader.Collection.BasicCollectionLoader |
| OneToManyLoader | 68 | 0 field | NHibernate.Loader.Collection.OneToManyLoader |
| PathExpressionParser | 68 | 20 fields | NHibernate.Hql.Classic.PathExpressionParser |
| FromPathExpressionParser | 68 | 0 field | NHibernate.Hql.Classic.FromPathExpressionParser |
| SelectPathExpressionParser | 68 | 0 field | NHibernate.Hql.Classic.SelectPathExpressionParser |
| MultiQueryImpl | 66 | 18 fields | NHibernate.Impl.MultiQueryImpl |
| SelectClause | 66 | 8 fields | NHibernate.Hql.Ast.ANTLR.Tree.SelectClause |
Statistics
| Stat | Size of instance | InstanceFields |
|---|---|---|
| Sum: | 9 465 | 0 |
| Average: | 129.66 | 0 |
| Minimum: | 66 | 0 |
| Maximum: | 458 | 0 |
| Standard deviation: | 84.283 | 0 |
| Variance: | 7 103 | 0 |
| Rule warning: Attribute classes should be sealed |
// <Name>Attribute classes should be sealed</Name>
warnif count > 0 from t in Application.Types where
t.IsAttributeClass &&
!t.IsSealed &&
!t.IsAbstract &&
t.IsPublic
select new { t, t.NbLinesOfCode }
// The .NET Framework class library provides methods
// for retrieving custom attributes. By default,
// these methods search the attribute inheritance
// hierarchy; for example System.Attribute.GetCustomAttribute
// searches for the specified attribute type, or any
// attribute type that extends the specified attribute
// type. Sealing the attribute eliminates the search
// through the inheritance hierarchy, and can improve
// performance.
warnif count > 0 from t in Application.Types where
t.IsAttributeClass &&
!t.IsSealed &&
!t.IsAbstract &&
t.IsPublic
select new { t, t.NbLinesOfCode }
// The .NET Framework class library provides methods
// for retrieving custom attributes. By default,
// these methods search the attribute inheritance
// hierarchy; for example System.Attribute.GetCustomAttribute
// searches for the specified attribute type, or any
// attribute type that extends the specified attribute
// type. Sealing the attribute eliminates the search
// through the inheritance hierarchy, and can improve
// performance.
1 types matched
| type | # lines of code (LOC) | Full Name |
|---|---|---|
| type | # lines of code (LOC) | Full Name |
| LinqExtensionMethodAttribute | 3 | NHibernate.Linq.LinqExtensionMethodAttribute |
Statistics
| Stat | # lines of code (LOC) |
|---|---|
| Sum: | 3 |
| Average: | 3 |
| Minimum: | 3 |
| Maximum: | 3 |
| Standard deviation: | 0 |
| Variance: | 0 |
| Rule warning: Don't use obsolete types, methods or fields |
// <Name>Don't use obsolete types, methods or fields</Name>
warnif count > 0
let obsoleteTypes = Types.Where(t => t.IsObsolete)
let obsoleteMethods = Methods.Where(m => m.IsObsolete).ToHashSet()
let obsoleteFields = Fields.Where(f => f.IsObsolete)
from m in JustMyCode.Methods.UsingAny(obsoleteTypes).Union(
JustMyCode.Methods.UsingAny(obsoleteMethods)).Union(
JustMyCode.Methods.UsingAny(obsoleteFields))
let obsoleteTypesUsed = obsoleteTypes.UsedBy(m)
// Optimization: MethodsCalled + Intersect() is faster than using obsoleteMethods.UsedBy()
let obsoleteMethodsUsed = m.MethodsCalled.Intersect(obsoleteMethods)
let obsoleteFieldsUsed = obsoleteFields.UsedBy(m)
select new { m, obsoleteTypesUsed, obsoleteMethodsUsed, obsoleteFieldsUsed }
warnif count > 0
let obsoleteTypes = Types.Where(t => t.IsObsolete)
let obsoleteMethods = Methods.Where(m => m.IsObsolete).ToHashSet()
let obsoleteFields = Fields.Where(f => f.IsObsolete)
from m in JustMyCode.Methods.UsingAny(obsoleteTypes).Union(
JustMyCode.Methods.UsingAny(obsoleteMethods)).Union(
JustMyCode.Methods.UsingAny(obsoleteFields))
let obsoleteTypesUsed = obsoleteTypes.UsedBy(m)
// Optimization: MethodsCalled + Intersect() is faster than using obsoleteMethods.UsedBy()
let obsoleteMethodsUsed = m.MethodsCalled.Intersect(obsoleteMethods)
let obsoleteFieldsUsed = obsoleteFields.UsedBy(m)
select new { m, obsoleteTypesUsed, obsoleteMethodsUsed, obsoleteFieldsUsed }
1 methods matched
| method | obsoleteTypesUsed | obsoleteMethodsUsed | obsoleteFieldsUsed | Full Name |
|---|---|---|---|---|
| method | obsoleteTypesUsed | obsoleteMethodsUsed | obsoleteFieldsUsed | Full Name |
| CreateDynamicMethod(Type,Type[]) | 0 type | 1 method | 0 field | NHibernate.Bytecode.Lightweight.ReflectionOptimizer .CreateDynamicMethod(Type,Type[]) |
Statistics
| Stat | obsoleteTypesUsed | obsoleteMethodsUsed | obsoleteFieldsUsed |
|---|---|---|---|
| Sum: | 0 | 0 | 0 |
| Average: | 0 | 0 | 0 |
| Minimum: | 0 | 0 | 0 |
| Maximum: | 0 | 0 | 0 |
| Standard deviation: | 0 | 0 | 0 |
| Variance: | 0 | 0 | 0 |
| Rule warning: Don't forget to implement methods that throw NotImplementedException |
// <Name>Don't forget to implement methods that throw NotImplementedException</Name>
warnif count > 0
from m in Application.Methods
where m.CreateA("System.NotImplementedException".AllowNoMatch())
select m
warnif count > 0
from m in Application.Methods
where m.CreateA("System.NotImplementedException".AllowNoMatch())
select m
48 methods matched
| methods | Full Name |
|---|---|
| methods | Full Name |
| Add(Object) | NHibernate.Util.CollectionHelper+EmptyListClass.Add(Object) |
| Clear() | NHibernate.Util.CollectionHelper+EmptyListClass.Clear() |
| Insert(Int32,Object) | NHibernate.Util.CollectionHelper+EmptyListClass.Insert(Int32,Object) |
| Remove(Object) | NHibernate.Util.CollectionHelper+EmptyListClass.Remove(Object) |
| RemoveAt(Int32) | NHibernate.Util.CollectionHelper+EmptyListClass.RemoveAt(Int32) |
| CopyTo(KeyValuePair<TKey,TValue>[],Int32) | NHibernate.Util.NullableDictionary<TKey,TValue>.CopyTo(KeyValuePair <TKey,TValue>[],Int32) |
| Remove(KeyValuePair<TKey,TValue>) | NHibernate.Util.NullableDictionary<TKey,TValue>.Remove(KeyValuePair <TKey,TValue>) |
| get_Keys() | NHibernate.Util.WeakHashtable.get_Keys() |
| get_Values() | NHibernate.Util.WeakHashtable.get_Values() |
| CopyTo(Array,Int32) | NHibernate.Util.WeakHashtable.CopyTo(Array,Int32) |
| Clear(Object) | NHibernate.Type.CollectionType.Clear(Object) |
| Add(Object,Object) | NHibernate.Type.CollectionType.Add(Object,Object) |
| get_DefaultValue() | NHibernate.Type.DateTimeOffsetType.get_DefaultValue() |
| GetGetter(Type,String) | NHibernate.Properties.IndexPropertyAccessor.GetGetter(Type,String) |
| GetSetter(Type,String) | NHibernate.Properties.IndexPropertyAccessor.GetSetter(Type,String) |
| set_IsForceDiscriminator(Boolean) | NHibernate.Mapping.PersistentClass.set_IsForceDiscriminator(Boolean) |
| get_RecordsAffected() | NHibernate.Driver.NDataReader.get_RecordsAffected() |
| GetData(Int32) | NHibernate.Driver.NDataReader.GetData(Int32) |
| OnBeforePrepare(IDbCommand) | NHibernate.Driver.OracleClientDriver.OnBeforePrepare(IDbCommand) |
| List(IQueryExpression,QueryParameters) | NHibernate.Impl.StatelessSessionImpl.List(IQueryExpression ,QueryParameters) |
| List(IQueryExpression,QueryParameters,IList) | NHibernate.Impl.StatelessSessionImpl.List(IQueryExpression ,QueryParameters,IList) |
| ExecuteUpdate() | NHibernate.Impl.ExpressionQueryImpl.ExecuteUpdate() |
| Enumerable() | NHibernate.Impl.ExpressionQueryImpl.Enumerable() |
| Enumerable<T>() | NHibernate.Impl.ExpressionQueryImpl.Enumerable<T>() |
| List(IList) | NHibernate.Impl.ExpressionQueryImpl.List(IList) |
| List<T>() | NHibernate.Impl.ExpressionQueryImpl.List<T>() |
| GetConstraintName(DataRow) | NHibernate.Dialect.Schema.SQLiteTableMetaData.GetConstraintName (DataRow) |
| Dehydrate(Object,Object[],Object,Boolean[],Boolean[][],Int32 ,IDbCommand,ISessionImplementor,Int32) | NHibernate.Persister.Entity.AbstractEntityPersister.Dehydrate(Object ,Object[],Object,Boolean[],Boolean[][],Int32,IDbCommand ,ISessionImplementor,Int32) |
| HasAncestor(Int32) | NHibernate.Hql.Ast.ANTLR.Tree.ASTNode.HasAncestor(Int32) |
| GetAncestor(Int32) | NHibernate.Hql.Ast.ANTLR.Tree.ASTNode.GetAncestor(Int32) |
| GetAncestors() | NHibernate.Hql.Ast.ANTLR.Tree.ASTNode.GetAncestors() |
| GetParent(Object) | NHibernate.Hql.Ast.ANTLR.Tree.ASTTreeAdaptor.GetParent(Object) |
| ReplaceChildren(Object,Int32,Int32,Object) | NHibernate.Hql.Ast.ANTLR.Tree.ASTTreeAdaptor.ReplaceChildren(Object ,Int32,Int32,Object) |
| GetTokenStartIndex(Object) | NHibernate.Hql.Ast.ANTLR.Tree.ASTTreeAdaptor.GetTokenStartIndex(Object ) |
| GetTokenStopIndex(Object) | NHibernate.Hql.Ast.ANTLR.Tree.ASTTreeAdaptor.GetTokenStopIndex(Object) |
| DupNode(Object) | NHibernate.Hql.Ast.ANTLR.Tree.HqlSqlWalkerTreeAdaptor.DupNode(Object) |
| Resolve(ParameterExpression,Expression,ClauseGenerationContext) | NHibernate.Linq.CacheableExpressionNode.Resolve(ParameterExpression ,Expression,ClauseGenerationContext) |
| ExecuteInMemory(IStreamedData) | NHibernate.Linq.CacheableResultOperator.ExecuteInMemory(IStreamedData) |
| Clone(CloneContext) | NHibernate.Linq.CacheableResultOperator.Clone(CloneContext) |
| ExecuteInMemory(IStreamedData) | NHibernate.Linq.ResultOperators.ClientSideTransformOperator .ExecuteInMemory(IStreamedData) |
| Clone(CloneContext) | NHibernate.Linq.ResultOperators.ClientSideTransformOperator.Clone (CloneContext) |
| FlattenSubQuery(SubQueryExpression,FromClauseBase,QueryModel) | NHibernate.Linq.GroupBy.AggregatingGroupByRewriter.FlattenSubQuery (SubQueryExpression,FromClauseBase,QueryModel) |
| FlattenSubQuery(SubQueryExpression,MainFromClause,QueryModel) | NHibernate.Linq.GroupBy.NonAggregatingGroupByRewriter.FlattenSubQuery (SubQueryExpression,MainFromClause,QueryModel) |
| VisitMemberExpression(MemberExpression) | NHibernate.Linq.GroupBy.GroupBySelectClauseRewriter .VisitMemberExpression(MemberExpression) |
| Resolve(ParameterExpression,Expression,ClauseGenerationContext) | NHibernate.Linq.Expressions.AggregateExpressionNode.Resolve (ParameterExpression,Expression,ClauseGenerationContext) |
| VisitGroupJoinClause(GroupJoinClause,QueryModel,Int32) | NHibernate.Linq.Visitors.QueryModelVisitor.VisitGroupJoinClause (GroupJoinClause,QueryModel,Int32) |
| GetOwnerId(String,String,Object,IDictionary) | NHibernate.Engine.StatefulPersistenceContext.GetOwnerId(String,String ,Object,IDictionary) |
| GetIndexInOwner(String,String,Object,IDictionary) | NHibernate.Engine.StatefulPersistenceContext.GetIndexInOwner(String ,String,Object,IDictionary) |
Statistics
| Stat |
|---|
| Sum: |
| Average: |
| Minimum: |
| Maximum: |
| Standard deviation: |
| Variance: |
| Architecture and Layering |
|
|
| Rule warning: Avoid namespaces mutually dependent |
// <Name>Avoid namespaces mutually dependent</Name>
warnif count > 0
// Foreach pair of namespace mutually dependent, this rule lists pairs.
// The pair { first, second } is formatted to show that first namespace shouldn't use the second namespace.
// The first/second order is inferred from the number of types used by each other.
// The first namespace is using less types of the second.
// It means that the first namespace is certainly at a lower level in the architecture, than the second.
//
// To explore the coupling between two namespaces mutually dependent:
// 1) export the first namespace to the vertical header of the dependency matrix
// 2) export the second namespace to the horizontal header of the dependency matrix
// 3) double-click the black cell
// 4) in the matrix command bar, click the button: Remove empty Row(s) en Column(s)
// At this point, the dependency matrix shows types involved into the coupling.
//
// Following this rule is useful to avoid namespaces dependency cycles.
// More on this in our white books relative to partitionning code.
// http://www.ndepend.com/WhiteBooks.aspx
// Optimization: restreint application assemblies set
// If some namespaces are mutually dependent
// - They must be declared in the same assembly
// - The parent assembly must ContainsNamespaceDependencyCycle
from assembly in Application.Assemblies.Where(a => a.ContainsNamespaceDependencyCycle != null && a.ContainsNamespaceDependencyCycle.Value)
// hashset is used to avoid reporting both A <-> B and B <-> A
let hashset = new HashSet<INamespace>()
// Optimization: restreint namespaces set
// If a namespace doesn't have a Level value, it must be in a dependency cycle
// or it must be using directly or indirectly a dependency cycle.
let namespacesSuspect = assembly.ChildNamespaces.Where(n => n.Level == null)
from nA in namespacesSuspect
// Select namespaces mutually dependent with nA
let unused = hashset.Add(nA) // Populate hashset
let namespacesMutuallyDependentWith_nA = nA.NamespacesUsed.Using(nA)
.Except(hashset) // <-- avoid reporting both A <-> B and B <-> A
where namespacesMutuallyDependentWith_nA.Count() > 0
from nB in namespacesMutuallyDependentWith_nA
// nA and nB are mutually dependent
// Select first the one that shouldn't use the other.
// The first namespace is inferred from the fact that it is using less types of the second.
let typesOfBUsedByA = nB.ChildTypes.UsedBy(nA)
let typesOfAUsedByB = nA.ChildTypes.UsedBy(nB)
let first = (typesOfBUsedByA.Count() > typesOfAUsedByB.Count()) ? nB : nA
let second = (first == nA) ? nB : nA
let typesOfFirstUsedBySecond = (first == nA) ? typesOfAUsedByB : typesOfBUsedByA
let typesOfSecondUsedByFirst = (first == nA) ? typesOfBUsedByA : typesOfAUsedByB
select new { first, shouldntUse = second, typesOfFirstUsedBySecond, typesOfSecondUsedByFirst }
warnif count > 0
// Foreach pair of namespace mutually dependent, this rule lists pairs.
// The pair { first, second } is formatted to show that first namespace shouldn't use the second namespace.
// The first/second order is inferred from the number of types used by each other.
// The first namespace is using less types of the second.
// It means that the first namespace is certainly at a lower level in the architecture, than the second.
//
// To explore the coupling between two namespaces mutually dependent:
// 1) export the first namespace to the vertical header of the dependency matrix
// 2) export the second namespace to the horizontal header of the dependency matrix
// 3) double-click the black cell
// 4) in the matrix command bar, click the button: Remove empty Row(s) en Column(s)
// At this point, the dependency matrix shows types involved into the coupling.
//
// Following this rule is useful to avoid namespaces dependency cycles.
// More on this in our white books relative to partitionning code.
// http://www.ndepend.com/WhiteBooks.aspx
// Optimization: restreint application assemblies set
// If some namespaces are mutually dependent
// - They must be declared in the same assembly
// - The parent assembly must ContainsNamespaceDependencyCycle
from assembly in Application.Assemblies.Where(a => a.ContainsNamespaceDependencyCycle != null && a.ContainsNamespaceDependencyCycle.Value)
// hashset is used to avoid reporting both A <-> B and B <-> A
let hashset = new HashSet<INamespace>()
// Optimization: restreint namespaces set
// If a namespace doesn't have a Level value, it must be in a dependency cycle
// or it must be using directly or indirectly a dependency cycle.
let namespacesSuspect = assembly.ChildNamespaces.Where(n => n.Level == null)
from nA in namespacesSuspect
// Select namespaces mutually dependent with nA
let unused = hashset.Add(nA) // Populate hashset
let namespacesMutuallyDependentWith_nA = nA.NamespacesUsed.Using(nA)
.Except(hashset) // <-- avoid reporting both A <-> B and B <-> A
where namespacesMutuallyDependentWith_nA.Count() > 0
from nB in namespacesMutuallyDependentWith_nA
// nA and nB are mutually dependent
// Select first the one that shouldn't use the other.
// The first namespace is inferred from the fact that it is using less types of the second.
let typesOfBUsedByA = nB.ChildTypes.UsedBy(nA)
let typesOfAUsedByB = nA.ChildTypes.UsedBy(nB)
let first = (typesOfBUsedByA.Count() > typesOfAUsedByB.Count()) ? nB : nA
let second = (first == nA) ? nB : nA
let typesOfFirstUsedBySecond = (first == nA) ? typesOfAUsedByB : typesOfBUsedByA
let typesOfSecondUsedByFirst = (first == nA) ? typesOfBUsedByA : typesOfAUsedByB
select new { first, shouldntUse = second, typesOfFirstUsedBySecond, typesOfSecondUsedByFirst }
137 namespaces matched
The following list of namespaces is truncated and contains only the first 100 namespaces of the 137 namespaces matched. All matched namespaces could be listed in the report by unchecking the option:
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched namespaces.
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched namespaces.
| namespaces | shouldntUse | typesOfFirstUsedBySecond | typesOfSecondUsedByFirst | Full Name |
|---|---|---|---|---|
| namespaces | shouldntUse | typesOfFirstUsedBySecond | typesOfSecondUsedByFirst | Full Name |
| NHibernate | NHibernate.Hql.Ast.ANTLR.Tree | 9 types | 1 type | NHibernate |
| NHibernate | NHibernate.Engine | 25 types | 4 types | NHibernate |
| NHibernate | NHibernate.Engine.Query | 7 types | 1 type | NHibernate |
| NHibernate | NHibernate.Impl | 39 types | 3 types | NHibernate |
| NHibernate.Type | NHibernate | 51 types | 12 types | NHibernate.Type |
| NHibernate | NHibernate.Proxy | 2 types | 2 types | NHibernate |
| NHibernate | NHibernate.Collection | 7 types | 1 type | NHibernate |
| NHibernate.Intercept | NHibernate | 2 types | 1 type | NHibernate.Intercept |
| NHibernate | NHibernate.Transform | 5 types | 1 type | NHibernate |
| NHibernate | NHibernate.Transaction | 6 types | 1 type | NHibernate |
| NHibernate | NHibernate.SqlCommand | 6 types | 2 types | NHibernate |
| NHibernate | NHibernate.Util | 8 types | 1 type | NHibernate |
| NHibernate.Metadata | NHibernate | 2 types | 1 type | NHibernate.Metadata |
| NHibernate | NHibernate.Stat | 3 types | 2 types | NHibernate |
| NHibernate | NHibernate.Criterion | 16 types | 5 types | NHibernate |
| NHibernate.Criterion.Lambda | NHibernate | 7 types | 5 types | NHibernate.Criterion.Lambda |
| NHibernate.Util | NHibernate.SqlCommand | 5 types | 3 types | NHibernate.Util |
| NHibernate.Util | NHibernate.Dialect | 3 types | 1 type | NHibernate.Util |
| NHibernate.Util | NHibernate.Dialect.Function | 1 type | 1 type | NHibernate.Util |
| NHibernate.Util | NHibernate.Impl | 8 types | 1 type | NHibernate.Util |
| NHibernate.Util | NHibernate.Engine | 8 types | 2 types | NHibernate.Util |
| NHibernate.Util | NHibernate.Type | 7 types | 2 types | NHibernate.Util |
| NHibernate.Util | NHibernate.SqlTypes | 1 type | 1 type | NHibernate.Util |
| NHibernate.Properties | NHibernate.Util | 3 types | 1 type | NHibernate.Properties |
| NHibernate.UserTypes | NHibernate.Type | 6 types | 1 type | NHibernate.UserTypes |
| NHibernate.Engine | NHibernate.Type | 13 types | 11 types | NHibernate.Engine |
| NHibernate.Type | NHibernate.Persister.Entity | 11 types | 3 types | NHibernate.Type |
| NHibernate.Collection | NHibernate.Type | 7 types | 3 types | NHibernate.Collection |
| NHibernate.Type | NHibernate.Persister.Collection | 6 types | 2 types | NHibernate.Type |
| NHibernate.Type | NHibernate.Engine.Loading | 3 types | 1 type | NHibernate.Type |
| NHibernate.Proxy | NHibernate.Type | 3 types | 1 type | NHibernate.Proxy |
| NHibernate.Collection.Generic | NHibernate.Type | 5 types | 2 types | NHibernate.Collection.Generic |
| NHibernate.Type | NHibernate.Dialect | 3 types | 1 type | NHibernate.Type |
| NHibernate.Bytecode | NHibernate.Type | 3 types | 2 types | NHibernate.Bytecode |
| NHibernate.Type | NHibernate.SqlCommand | 3 types | 1 type | NHibernate.Type |
| NHibernate.Type | NHibernate.Impl | 7 types | 1 type | NHibernate.Type |
| NHibernate.Tuple | NHibernate.Type | 4 types | 3 types | NHibernate.Tuple |
| NHibernate.Type | NHibernate.Properties | 2 types | 1 type | NHibernate.Type |
| NHibernate.Type | NHibernate.Cfg | 1 type | 1 type | NHibernate.Type |
| NHibernate.Engine | NHibernate.Properties | 4 types | 2 types | NHibernate.Engine |
| NHibernate.Properties | NHibernate.Mapping | 6 types | 1 type | NHibernate.Properties |
| NHibernate.Properties | NHibernate.Bytecode | 2 types | 2 types | NHibernate.Properties |
| NHibernate.Mapping | NHibernate.Dialect | 1 type | 1 type | NHibernate.Mapping |
| NHibernate.Mapping | NHibernate.Cfg | 20 types | 1 type | NHibernate.Mapping |
| NHibernate.Mapping | NHibernate.Tuple.Component | 3 types | 1 type | NHibernate.Mapping |
| NHibernate.Exceptions | NHibernate.Engine | 2 types | 1 type | NHibernate.Exceptions |
| NHibernate.Exceptions | NHibernate.Dialect | 6 types | 1 type | NHibernate.Exceptions |
| NHibernate.Exceptions | NHibernate.Cfg | 2 types | 1 type | NHibernate.Exceptions |
| NHibernate.Intercept | NHibernate.Engine | 3 types | 2 types | NHibernate.Intercept |
| NHibernate.Intercept | NHibernate.Proxy | 2 types | 2 types | NHibernate.Intercept |
| NHibernate.Intercept | NHibernate.Persister.Entity | 4 types | 1 type | NHibernate.Intercept |
| NHibernate.Driver | NHibernate.Cfg | 1 type | 1 type | NHibernate.Driver |
| NHibernate.AdoNet | NHibernate.Driver | 3 types | 2 types | NHibernate.AdoNet |
| NHibernate.Action | NHibernate.Engine | 12 types | 8 types | NHibernate.Action |
| NHibernate.Persister.Entity | NHibernate.Impl | 4 types | 3 types | NHibernate.Persister.Entity |
| NHibernate.Engine | NHibernate.Impl | 19 types | 5 types | NHibernate.Engine |
| NHibernate.Impl | NHibernate.Persister.Collection | 3 types | 1 type | NHibernate.Impl |
| NHibernate.Cache | NHibernate.Impl | 10 types | 2 types | NHibernate.Cache |
| NHibernate.Criterion | NHibernate.Impl | 15 types | 3 types | NHibernate.Criterion |
| NHibernate.Impl | NHibernate.Loader.Criteria | 4 types | 2 types | NHibernate.Impl |
| NHibernate.Cfg | NHibernate.Impl | 3 types | 1 type | NHibernate.Cfg |
| NHibernate.Impl | NHibernate.Loader | 1 type | 1 type | NHibernate.Impl |
| NHibernate.Impl | NHibernate.Transaction | 2 types | 2 types | NHibernate.Impl |
| NHibernate.Impl | NHibernate.Collection | 1 type | 1 type | NHibernate.Impl |
| NHibernate.Hql.Ast.ANTLR.Util | NHibernate.Impl | 2 types | 1 type | NHibernate.Hql.Ast.ANTLR.Util |
| NHibernate.SqlCommand | NHibernate.Engine | 6 types | 2 types | NHibernate.SqlCommand |
| NHibernate.SqlCommand | NHibernate.Dialect | 11 types | 1 type | NHibernate.SqlCommand |
| NHibernate.SqlCommand | NHibernate.Dialect.Function | 2 types | 1 type | NHibernate.SqlCommand |
| NHibernate.Engine | NHibernate.Context | 2 types | 1 type | NHibernate.Engine |
| NHibernate.Transaction | NHibernate.Engine | 2 types | 2 types | NHibernate.Transaction |
| NHibernate.Engine.Transaction | NHibernate.Transaction | 2 types | 1 type | NHibernate.Engine.Transaction |
| NHibernate.Transaction | NHibernate.AdoNet | 1 type | 1 type | NHibernate.Transaction |
| NHibernate.Transaction | NHibernate.Cfg | 2 types | 1 type | NHibernate.Transaction |
| NHibernate.Engine | NHibernate.Stat | 5 types | 2 types | NHibernate.Engine |
| NHibernate.Connection | NHibernate.Cfg | 2 types | 1 type | NHibernate.Connection |
| NHibernate.Dialect.Function | NHibernate.Dialect | 15 types | 1 type | NHibernate.Dialect.Function |
| NHibernate.Dialect | NHibernate.Cfg | 2 types | 1 type | NHibernate.Dialect |
| NHibernate.Id | NHibernate.Dialect | 5 types | 1 type | NHibernate.Id |
| NHibernate.Dialect.Lock | NHibernate.Dialect | 2 types | 1 type | NHibernate.Dialect.Lock |
| NHibernate.Dialect | NHibernate.Persister.Entity | 1 type | 1 type | NHibernate.Dialect |
| NHibernate.Engine | NHibernate.Dialect | 2 types | 1 type | NHibernate.Engine |
| NHibernate.Engine | NHibernate.Dialect.Function | 2 types | 1 type | NHibernate.Engine |
| NHibernate.Persister.Entity | NHibernate.Dialect.Lock | 2 types | 1 type | NHibernate.Persister.Entity |
| NHibernate.Loader | NHibernate.Collection | 1 type | 1 type | NHibernate.Loader |
| NHibernate.Loader | NHibernate.Loader.Criteria | 5 types | 1 type | NHibernate.Loader |
| NHibernate.Loader.Entity | NHibernate.Persister.Entity | 4 types | 4 types | NHibernate.Loader.Entity |
| NHibernate.Persister.Collection | NHibernate.Loader.Entity | 2 types | 1 type | NHibernate.Persister.Collection |
| NHibernate.Loader.Collection | NHibernate.Persister.Collection | 4 types | 3 types | NHibernate.Loader.Collection |
| NHibernate.Criterion | NHibernate.Loader.Criteria | 6 types | 2 types | NHibernate.Criterion |
| NHibernate.Engine | NHibernate.Loader.Custom | 3 types | 1 type | NHibernate.Engine |
| NHibernate.Engine.Query | NHibernate.Loader.Custom.Sql | 2 types | 1 type | NHibernate.Engine.Query |
| NHibernate.Engine | NHibernate.Persister.Entity | 15 types | 6 types | NHibernate.Engine |
| NHibernate.Id | NHibernate.Persister.Entity | 3 types | 1 type | NHibernate.Id |
| NHibernate.Cache.Entry | NHibernate.Persister.Entity | 4 types | 1 type | NHibernate.Cache.Entry |
| NHibernate.Cache.Entry | NHibernate.Persister.Collection | 4 types | 1 type | NHibernate.Cache.Entry |
| NHibernate.Engine | NHibernate.Persister.Collection | 10 types | 2 types | NHibernate.Engine |
| NHibernate.Persister.Collection | NHibernate.Collection | 1 type | 1 type | NHibernate.Persister.Collection |
| NHibernate.Criterion.Lambda | NHibernate.Criterion | 20 types | 19 types | NHibernate.Criterion.Lambda |
| NHibernate.Engine | NHibernate.Hql | 5 types | 1 type | NHibernate.Engine |
| NHibernate.Hql | NHibernate.Engine.Query | 3 types | 1 type | NHibernate.Hql |
Statistics
| Stat | shouldntUse | typesOfFirstUsedBySecond | typesOfSecondUsedByFirst |
|---|---|---|---|
| Sum: | 0 | 0 | 0 |
| Average: | 0 | 0 | 0 |
| Minimum: | 0 | 0 | 0 |
| Maximum: | 0 | 0 | 0 |
| Standard deviation: | 0 | 0 | 0 |
| Variance: | 0 | 0 | 0 |
| Rule warning: Avoid namespaces dependency cycles |
// <Name>Avoid namespaces dependency cycles</Name>
warnif count > 0
// This query lists all application namespaces dependency cyles.
// Each row shows a different cycle, prefixed with a namespace entangled in the cycle.
//
// To browse a cycle on the dependency graph or the dependency matrix, just right click
// a cycle cell and export namespaces matched to the dependency graph or matrix!
//
// In the matrix, dependency cycles are represented with red squares and black cells.
// To browse easily dependency cycles, the Matrix comes with the option:
// --> Display Direct and Indirect Dependencies
//
// Read our white books relative to partitionning code,
// to know more about namespaces dependency cycles, and why avoiding them
// is a simple but efficient solution to architecture well your code base.
// http://www.ndepend.com/WhiteBooks.aspx
// Optimization: restreint application assemblies set
// If some namespaces are mutually dependent
// - They must be declared in the same assembly
// - The parent assembly must ContainsNamespaceDependencyCycle
from assembly in Application.Assemblies
.Where(a => a.ContainsNamespaceDependencyCycle != null &&
a.ContainsNamespaceDependencyCycle.Value)
// Optimization: restreint namespaces set
// A namespace involved in a cycle necessarily have a null Level.
let namespacesSuspect = assembly.ChildNamespaces.Where(n => n.Level == null)
// hashset is used to avoid iterating again on namespaces already caught in a cycle.
let hashset = new HashSet<INamespace>()
from suspect in namespacesSuspect
// By commenting this line, the query matches all namespaces involved in a cycle.
where !hashset.Contains(suspect)
// Define 2 code metrics
// - Namespaces depth of is using indirectly the suspect namespace.
// - Namespaces depth of is used by the suspect namespace indirectly.
// Note: for direct usage the depth is equal to 1.
let namespacesUserDepth = namespacesSuspect.DepthOfIsUsing(suspect)
let namespacesUsedDepth = namespacesSuspect.DepthOfIsUsedBy(suspect)
// Select namespaces that are both using and used by namespaceSuspect
let usersAndUsed = from n in namespacesSuspect where
namespacesUserDepth[n] > 0 &&
namespacesUsedDepth[n] > 0
select n
where usersAndUsed.Count() > 0
// Here we've found namespace(s) both using and used by the suspect namespace.
// A cycle involving the suspect namespace is found!
let cycle = usersAndUsed.Append(suspect)
// Fill hashset with namespaces in the cycle.
// .ToArray() is needed to force the iterating process.
let unused1 = (from n in cycle let unused2 = hashset.Add(n) select n).ToArray()
select new { suspect, cycle }
warnif count > 0
// This query lists all application namespaces dependency cyles.
// Each row shows a different cycle, prefixed with a namespace entangled in the cycle.
//
// To browse a cycle on the dependency graph or the dependency matrix, just right click
// a cycle cell and export namespaces matched to the dependency graph or matrix!
//
// In the matrix, dependency cycles are represented with red squares and black cells.
// To browse easily dependency cycles, the Matrix comes with the option:
// --> Display Direct and Indirect Dependencies
//
// Read our white books relative to partitionning code,
// to know more about namespaces dependency cycles, and why avoiding them
// is a simple but efficient solution to architecture well your code base.
// http://www.ndepend.com/WhiteBooks.aspx
// Optimization: restreint application assemblies set
// If some namespaces are mutually dependent
// - They must be declared in the same assembly
// - The parent assembly must ContainsNamespaceDependencyCycle
from assembly in Application.Assemblies
.Where(a => a.ContainsNamespaceDependencyCycle != null &&
a.ContainsNamespaceDependencyCycle.Value)
// Optimization: restreint namespaces set
// A namespace involved in a cycle necessarily have a null Level.
let namespacesSuspect = assembly.ChildNamespaces.Where(n => n.Level == null)
// hashset is used to avoid iterating again on namespaces already caught in a cycle.
let hashset = new HashSet<INamespace>()
from suspect in namespacesSuspect
// By commenting this line, the query matches all namespaces involved in a cycle.
where !hashset.Contains(suspect)
// Define 2 code metrics
// - Namespaces depth of is using indirectly the suspect namespace.
// - Namespaces depth of is used by the suspect namespace indirectly.
// Note: for direct usage the depth is equal to 1.
let namespacesUserDepth = namespacesSuspect.DepthOfIsUsing(suspect)
let namespacesUsedDepth = namespacesSuspect.DepthOfIsUsedBy(suspect)
// Select namespaces that are both using and used by namespaceSuspect
let usersAndUsed = from n in namespacesSuspect where
namespacesUserDepth[n] > 0 &&
namespacesUsedDepth[n] > 0
select n
where usersAndUsed.Count() > 0
// Here we've found namespace(s) both using and used by the suspect namespace.
// A cycle involving the suspect namespace is found!
let cycle = usersAndUsed.Append(suspect)
// Fill hashset with namespaces in the cycle.
// .ToArray() is needed to force the iterating process.
let unused1 = (from n in cycle let unused2 = hashset.Add(n) select n).ToArray()
select new { suspect, cycle }
1 namespaces matched
| namespace | cycle | Full Name |
|---|---|---|
| namespace | cycle | Full Name |
| NHibernate | 81 namespaces | NHibernate |
Statistics
| Stat | cycle |
|---|---|
| Sum: | 0 |
| Average: | 0 |
| Minimum: | 0 |
| Maximum: | 0 |
| Standard deviation: | 0 |
| Variance: | 0 |
| Rule warning: Assemblies with poor cohesion (RelationalCohesion) |
// <Name>Assemblies with poor cohesion (RelationalCohesion)</Name>
warnif count > 0 from a in Application.Assemblies where
a.NbTypes > 20 && // Relational Cohesion metrics is relevant only if there are several types
(a.RelationalCohesion < 1.5 ||
a.RelationalCohesion > 4.0)
select new { a, a.NbTypes, a.RelationalCohesion }
// 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
warnif count > 0 from a in Application.Assemblies where
a.NbTypes > 20 && // Relational Cohesion metrics is relevant only if there are several types
(a.RelationalCohesion < 1.5 ||
a.RelationalCohesion > 4.0)
select new { a, a.NbTypes, a.RelationalCohesion }
// 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
1 assemblies matched
| assembly | # Types | Relational cohesion | Full Name |
|---|---|---|---|
| assembly | # Types | Relational cohesion | Full Name |
| NHibernate | 2 204 | 6.5985 | NHibernate |
Statistics
| Stat | # Types | Relational cohesion |
|---|---|---|
| Sum: | 2 204 | 6.5985 |
| Average: | 2 204 | 6.5985 |
| Minimum: | 2 204 | 6.5985 |
| Maximum: | 2 204 | 6.5985 |
| Standard deviation: | 0 | NaN |
| Variance: | 0 | -7.013441E-07 |
| API Breaking Changes |
|
|
| Critical Rule warning: API Breaking Changes: Types |
// <Name>API Breaking Changes: Types</Name>
// This rule warns if a publicly visible type is
// not publicly visible anymore or if it has been removed.
// Such type can break the code of your clients.
warnif count > 0 from t in codeBase.OlderVersion().Application.Types
where t.IsPubliclyVisible &&
// The type has been removed and its parent assembly hasn't been removed ...
( (t.WasRemoved() && !t.ParentAssembly.WasRemoved()) ||
// ... or the type is not publicly visible anymore
!t.WasRemoved() && !t.NewerVersion().IsPubliclyVisible)
select new { t,
NewVisibility = (t.WasRemoved() ? " " : t.NewerVersion().Visibility.ToString()) }
// This rule warns if a publicly visible type is
// not publicly visible anymore or if it has been removed.
// Such type can break the code of your clients.
warnif count > 0 from t in codeBase.OlderVersion().Application.Types
where t.IsPubliclyVisible &&
// The type has been removed and its parent assembly hasn't been removed ...
( (t.WasRemoved() && !t.ParentAssembly.WasRemoved()) ||
// ... or the type is not publicly visible anymore
!t.WasRemoved() && !t.NewerVersion().IsPubliclyVisible)
select new { t,
NewVisibility = (t.WasRemoved() ? " " : t.NewerVersion().Visibility.ToString()) }
13 types matched
| types | NewVisibility | Full Name |
|---|---|---|
| types | NewVisibility | Full Name |
| XmlHelper | NHibernate.Util.XmlHelper | |
| SybaseAdoNet12ClientDriver | NHibernate.Driver.SybaseAdoNet12ClientDriver | |
| SybaseClientDriver | NHibernate.Driver.SybaseClientDriver | |
| AdoNetWithDistrubtedTransactionFactory+DistributedTransactionContext | NHibernate.Transaction .AdoNetWithDistrubtedTransactionFactory+DistributedTransactionContext | |
| DbCommandSet<TConnection,TCommand> | NHibernate.Impl.DbCommandSet<TConnection,TCommand> | |
| SybaseAnywhereDialect | NHibernate.Dialect.SybaseAnywhereDialect | |
| MsSql2005Dialect+QuotedAndParenthesisStringTokenizer | NHibernate.Dialect .MsSql2005Dialect+QuotedAndParenthesisStringTokenizer | |
| MsSql2005Dialect+QuotedAndParenthesisStringTokenizer+TokenizerState | NHibernate.Dialect .MsSql2005Dialect+QuotedAndParenthesisStringTokenizer+TokenizerState | |
| SybaseDialect | NHibernate.Dialect.SybaseDialect | |
| SybaseAdoNet12Dialect | NHibernate.Dialect.SybaseAdoNet12Dialect | |
| Sybase11Dialect | NHibernate.Dialect.Sybase11Dialect | |
| ISoftLock | NHibernate.Cache.ISoftLock | |
| ClassCacheUsage | NHibernate.Cfg.ConfigurationSchema.ClassCacheUsage |
Statistics
| Stat | NewVisibility |
|---|---|
| Sum: | 0 |
| Average: | 0 |
| Minimum: | 0 |
| Maximum: | 0 |
| Standard deviation: | 0 |
| Variance: | 0 |
| Critical Rule warning: API Breaking Changes: Methods |
// <Name>API Breaking Changes: Methods</Name>
// This rule warns if a publicly visible method is
// not publicly visible anymore or if it has been removed.
// Such method can break the code of your clients.
warnif count > 0 from m in codeBase.OlderVersion().Application.Methods
where m.IsPubliclyVisible &&
// The method has been removed and its parent type hasn't been removed ...
( (m.WasRemoved() && !m.ParentType.WasRemoved()) ||
// ... or the method is not publicly visible anymore
!m.WasRemoved() && !m.NewerVersion().IsPubliclyVisible)
select new { m,
NewVisibility = (m.WasRemoved() ? " " : m.NewerVersion().Visibility.ToString()) }
// This rule warns if a publicly visible method is
// not publicly visible anymore or if it has been removed.
// Such method can break the code of your clients.
warnif count > 0 from m in codeBase.OlderVersion().Application.Methods
where m.IsPubliclyVisible &&
// The method has been removed and its parent type hasn't been removed ...
( (m.WasRemoved() && !m.ParentType.WasRemoved()) ||
// ... or the method is not publicly visible anymore
!m.WasRemoved() && !m.NewerVersion().IsPubliclyVisible)
select new { m,
NewVisibility = (m.WasRemoved() ? " " : m.NewerVersion().Visibility.ToString()) }
203 methods matched
The following list of methods is truncated and contains only the first 100 methods of the 203 methods matched. All matched methods could be listed in the report by unchecking the option:
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched methods.
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched methods.
| methods | NewVisibility | Full Name |
|---|---|---|
| methods | NewVisibility | Full Name |
| Find(String) | NHibernate.ISession.Find(String) | |
| Find(String,Object,IType) | NHibernate.ISession.Find(String,Object,IType) | |
| Find(String,Object[],IType[]) | NHibernate.ISession.Find(String,Object[],IType[]) | |
| Enumerable(String) | NHibernate.ISession.Enumerable(String) | |
| Enumerable(String,Object,IType) | NHibernate.ISession.Enumerable(String,Object,IType) | |
| Enumerable(String,Object[],IType[]) | NHibernate.ISession.Enumerable(String,Object[],IType[]) | |
| Filter(Object,String) | NHibernate.ISession.Filter(Object,String) | |
| Filter(Object,String,Object,IType) | NHibernate.ISession.Filter(Object,String,Object,IType) | |
| Filter(Object,String,Object[],IType[]) | NHibernate.ISession.Filter(Object,String,Object[],IType[]) | |
| CreateSQLQuery(String,String,Type) | NHibernate.ISession.CreateSQLQuery(String,String,Type) | |
| CreateSQLQuery(String,String[],Type[]) | NHibernate.ISession.CreateSQLQuery(String,String[],Type[]) | |
| Association(Type) | NHibernate.NHibernateUtil.Association(Type) | |
| TryGetMethod(IEnumerable<Type>,MethodInfo) | NHibernate.Util.ReflectHelper.TryGetMethod(IEnumerable<Type> ,MethodInfo) | |
| set_BatchSize(Int32) | NHibernate.Mapping.PersistentClass.set_BatchSize(Int32) | |
| .ctor(Join) | NHibernate.Mapping.Component..ctor(Join) | |
| set_ParentProperty(String) | NHibernate.Mapping.Component.set_ParentProperty(String) | |
| .ctor(ISessionImplementor,ISet<String>,String) | NHibernate.Intercept.AbstractFieldInterceptor..ctor (ISessionImplementor,ISet<String>,String) | |
| InjectFieldInterceptor(Object,String,ISet<String>,ISessionImplementor) | NHibernate.Intercept.FieldInterceptionHelper.InjectFieldInterceptor (Object,String,ISet<String>,ISessionImplementor) | |
| GetProjections() | NHibernate.Criterion.AbstractEmptinessExpression.GetProjections() | |
| op_BitwiseAnd(AbstractEmptinessExpression,AbstractEmptinessExpression) | NHibernate.Criterion.AbstractEmptinessExpression.op_BitwiseAnd (AbstractEmptinessExpression,AbstractEmptinessExpression) | |
| op_BitwiseOr(AbstractEmptinessExpression,AbstractEmptinessExpression) | NHibernate.Criterion.AbstractEmptinessExpression.op_BitwiseOr (AbstractEmptinessExpression,AbstractEmptinessExpression) | |
| op_BitwiseAnd(AbstractEmptinessExpression,AbstractCriterion) | NHibernate.Criterion.AbstractEmptinessExpression.op_BitwiseAnd (AbstractEmptinessExpression,AbstractCriterion) | |
| op_BitwiseOr(AbstractEmptinessExpression,AbstractCriterion) | NHibernate.Criterion.AbstractEmptinessExpression.op_BitwiseOr (AbstractEmptinessExpression,AbstractCriterion) | |
| op_LogicalNot(AbstractEmptinessExpression) | NHibernate.Criterion.AbstractEmptinessExpression.op_LogicalNot (AbstractEmptinessExpression) | |
| op_False(AbstractEmptinessExpression) | NHibernate.Criterion.AbstractEmptinessExpression.op_False (AbstractEmptinessExpression) | |
| op_True(AbstractEmptinessExpression) | NHibernate.Criterion.AbstractEmptinessExpression.op_True (AbstractEmptinessExpression) | |
| CreateConnection() | NHibernate.Driver.OracleClientDriver.CreateConnection() | |
| CreateCommand() | NHibernate.Driver.OracleClientDriver.CreateCommand() | |
| HasAfterTransactionCompletion() | NHibernate.Action.IExecutable.HasAfterTransactionCompletion() | |
| AfterTransactionCompletion(Boolean) | NHibernate.Action.IExecutable.AfterTransactionCompletion(Boolean) | |
| HasAfterTransactionCompletion() | NHibernate.Action.EntityAction.HasAfterTransactionCompletion() | |
| AfterTransactionCompletion(Boolean) | NHibernate.Action.EntityAction.AfterTransactionCompletion(Boolean) | |
| HasAfterTransactionCompletion() | NHibernate.Action.BulkOperationCleanupAction .HasAfterTransactionCompletion() | |
| AfterTransactionCompletion(Boolean) | NHibernate.Action.BulkOperationCleanupAction .AfterTransactionCompletion(Boolean) | |
| HasAfterTransactionCompletion() | NHibernate.Action.CollectionAction.HasAfterTransactionCompletion() | |
| AfterTransactionCompletion(Boolean) | NHibernate.Action.CollectionAction.AfterTransactionCompletion(Boolean) | |
| AfterTransactionCompletion(Boolean) | NHibernate.Action.CollectionUpdateAction.AfterTransactionCompletion (Boolean) | |
| AfterTransactionCompletion(Boolean) | NHibernate.Action.EntityDeleteAction.AfterTransactionCompletion (Boolean) | |
| AfterTransactionCompletion(Boolean) | NHibernate.Action.EntityUpdateAction.AfterTransactionCompletion (Boolean) | |
| AfterTransactionCompletion(Boolean) | NHibernate.Action.EntityInsertAction.AfterTransactionCompletion (Boolean) | |
| AfterTransactionCompletion(Boolean) | NHibernate.Action.EntityIdentityInsertAction .AfterTransactionCompletion(Boolean) | |
| DeepCopy(Object[],IType[],Boolean[],Object[],ISessionImplementor) | NHibernate.Type.TypeFactory.DeepCopy(Object[],IType[],Boolean[] ,Object[],ISessionImplementor) | |
| BeforeAssemble(Object[],ICacheAssembler[],ISessionImplementor) | NHibernate.Type.TypeFactory.BeforeAssemble(Object[],ICacheAssembler[] ,ISessionImplementor) | |
| FindDirty(StandardProperty[],Object[],Object[],Boolean[][],Boolean ,ISessionImplementor) | NHibernate.Type.TypeFactory.FindDirty(StandardProperty[],Object[] ,Object[],Boolean[][],Boolean,ISessionImplementor) | |
| FindModified(StandardProperty[],Object[],Object[],Boolean[][],Boolean ,ISessionImplementor) | NHibernate.Type.TypeFactory.FindModified(StandardProperty[],Object[] ,Object[],Boolean[][],Boolean,ISessionImplementor) | |
| Assemble(Object[],ICacheAssembler[],ISessionImplementor,Object) | NHibernate.Type.TypeFactory.Assemble(Object[],ICacheAssembler[] ,ISessionImplementor,Object) | |
| Disassemble(Object[],ICacheAssembler[],Boolean[],ISessionImplementor ,Object) | NHibernate.Type.TypeFactory.Disassemble(Object[],ICacheAssembler[] ,Boolean[],ISessionImplementor,Object) | |
| Replace(Object[],Object[],IType[],ISessionImplementor,Object ,IDictionary) | NHibernate.Type.TypeFactory.Replace(Object[],Object[],IType[] ,ISessionImplementor,Object,IDictionary) | |
| Replace(Object[],Object[],IType[],ISessionImplementor,Object ,IDictionary,ForeignKeyDirection) | NHibernate.Type.TypeFactory.Replace(Object[],Object[],IType[] ,ISessionImplementor,Object,IDictionary,ForeignKeyDirection) | |
| ReplaceAssociations(Object[],Object[],IType[],ISessionImplementor ,Object,IDictionary,ForeignKeyDirection) | NHibernate.Type.TypeFactory.ReplaceAssociations(Object[],Object[] ,IType[],ISessionImplementor,Object,IDictionary,ForeignKeyDirection) | |
| GetHashCode(Object,EntityMode) | NHibernate.Type.DateTimeOffsetType.GetHashCode(Object,EntityMode) | |
| AddJoin(String,String,String[],String[],JoinType,String) | NHibernate.SqlCommand.JoinFragment.AddJoin(String,String,String[] ,String[],JoinType,String) | |
| AddJoin(String,String,String[],String[],JoinType,String) | NHibernate.SqlCommand.InformixJoinFragment.AddJoin(String,String ,String[],String[],JoinType,String) | |
| AddJoin(String,String,String[],String[],JoinType,String) | NHibernate.SqlCommand.OracleJoinFragment.AddJoin(String,String ,String[],String[],JoinType,String) | |
| AddJoin(String,String,String[],String[],JoinType,String) | NHibernate.SqlCommand.QueryJoinFragment.AddJoin(String,String,String[] ,String[],JoinType,String) | |
| AddJoin(String,String,String[],String[],JoinType,String) | NHibernate.SqlCommand.ANSIJoinFragment.AddJoin(String,String,String[] ,String[],JoinType,String) | |
| Configure(IDictionary) | NHibernate.Transaction.AdoNetWithDistrubtedTransactionFactory .Configure(IDictionary) | |
| CreateTransaction(ISessionImplementor) | NHibernate.Transaction.AdoNetWithDistrubtedTransactionFactory .CreateTransaction(ISessionImplementor) | |
| EnlistInDistributedTransactionIfNeeded(ISessionImplementor) | NHibernate.Transaction.AdoNetWithDistrubtedTransactionFactory .EnlistInDistributedTransactionIfNeeded(ISessionImplementor) | |
| IsInDistributedActiveTransaction(ISessionImplementor) | NHibernate.Transaction.AdoNetWithDistrubtedTransactionFactory .IsInDistributedActiveTransaction(ISessionImplementor) | |
| ExecuteWorkInIsolation(ISessionImplementor,IIsolatedWork,Boolean) | NHibernate.Transaction.AdoNetWithDistrubtedTransactionFactory .ExecuteWorkInIsolation(ISessionImplementor,IIsolatedWork,Boolean) | |
| CreateMultiApproach() | NHibernate.Impl.FutureBatch<TQueryApproach,TMultiApproach> .CreateMultiApproach() | |
| CreateMultiApproach() | NHibernate.Impl.FutureQueryBatch.CreateMultiApproach() | |
| CreateMultiApproach() | NHibernate.Impl.FutureCriteriaBatch.CreateMultiApproach() | |
| Find(String) | NHibernate.Impl.SessionImpl.Find(String) | |
| Find(String,Object,IType) | NHibernate.Impl.SessionImpl.Find(String,Object,IType) | |
| Find(String,Object[],IType[]) | Private | NHibernate.Impl.SessionImpl.Find(String,Object[],IType[]) |
| Enumerable(String) | NHibernate.Impl.SessionImpl.Enumerable(String) | |
| Enumerable(String,Object,IType) | NHibernate.Impl.SessionImpl.Enumerable(String,Object,IType) | |
| Enumerable(String,Object[],IType[]) | NHibernate.Impl.SessionImpl.Enumerable(String,Object[],IType[]) | |
| Filter(Object,String) | NHibernate.Impl.SessionImpl.Filter(Object,String) | |
| Filter(Object,String,Object,IType) | NHibernate.Impl.SessionImpl.Filter(Object,String,Object,IType) | |
| Filter(Object,String,Object[],IType[]) | NHibernate.Impl.SessionImpl.Filter(Object,String,Object[],IType[]) | |
| CreateSQLQuery(String,String,Type) | NHibernate.Impl.SessionImpl.CreateSQLQuery(String,String,Type) | |
| CreateSQLQuery(String,String[],Type[]) | NHibernate.Impl.SessionImpl.CreateSQLQuery(String,String[],Type[]) | |
| Bind(HttpContext,ISession) | NHibernate.Context.ManagedWebSessionContext.Bind(HttpContext,ISession) | |
| HasBind(HttpContext,ISessionFactory) | NHibernate.Context.ManagedWebSessionContext.HasBind(HttpContext ,ISessionFactory) | |
| Unbind(HttpContext,ISessionFactory) | NHibernate.Context.ManagedWebSessionContext.Unbind(HttpContext ,ISessionFactory) | |
| NullSafeSet(IDbCommand,Object,Int32,ISessionImplementor) | NHibernate.UserTypes.ICompositeUserType.NullSafeSet(IDbCommand,Object ,Int32,ISessionImplementor) | |
| .ctor(PersistentClass,IInstantiationOptimizer) | NHibernate.Tuple.PocoInstantiator..ctor(PersistentClass ,IInstantiationOptimizer) | |
| GetLimitString(SqlString,Boolean) | NHibernate.Dialect.Oracle8iDialect.GetLimitString(SqlString,Boolean) | |
| GetLimitString(SqlString,Boolean) | NHibernate.Dialect.DB2Dialect.GetLimitString(SqlString,Boolean) | |
| GetLimitString(SqlString,Boolean) | NHibernate.Dialect.MySQLDialect.GetLimitString(SqlString,Boolean) | |
| GetLimitString(SqlString,Int32,Int32) | NHibernate.Dialect.MsSql2005Dialect.GetLimitString(SqlString,Int32 ,Int32) | |
| GetLimitString(SqlString,Boolean) | NHibernate.Dialect.PostgreSQLDialect.GetLimitString(SqlString,Boolean) | |
| get_SupportsVariableLimit() | NHibernate.Dialect.MySQL5Dialect.get_SupportsVariableLimit() | |
| .ctor(IAssociationType,String,String[],String,JoinType ,ISessionFactoryImplementor,IDictionary<String,IFilter>) | NHibernate.Loader.OuterJoinableAssociation..ctor(IAssociationType ,String,String[],String,JoinType,ISessionFactoryImplementor ,IDictionary<String,IFilter>) | |
| GetQueryStringAndTypes(ISessionImplementor,QueryParameters) | NHibernate.Loader.Loader.GetQueryStringAndTypes(ISessionImplementor ,QueryParameters) | |
| ConvertITypesToSqlTypes(List<IType>,Int32) | NHibernate.Loader.Loader.ConvertITypesToSqlTypes(List<IType>,Int32) | |
| GetParameterTypes(QueryParameters,Boolean,Boolean) | NHibernate.Loader.Loader.GetParameterTypes(QueryParameters,Boolean ,Boolean) | |
| InitProjection(SqlString,SqlString,SqlString,String,SqlString,LockMode ) | NHibernate.Loader.AbstractEntityJoinWalker.InitProjection(SqlString ,SqlString,SqlString,String,SqlString,LockMode) | |
| .ctor(IType[],Object[],IDictionary<String,LockMode>,RowSelection ,Boolean,String,String,Boolean,IResultTransformer) | NHibernate.Engine.QueryParameters..ctor(IType[],Object[],IDictionary <String,LockMode>,RowSelection,Boolean,String,String,Boolean ,IResultTransformer) | |
| BindParameters(IDbCommand,QueryParameters+GetNamedParameterLocations ,Int32,ISessionImplementor) | NHibernate.Engine.QueryParameters.BindParameters(IDbCommand ,QueryParameters+GetNamedParameterLocations,Int32,ISessionImplementor) | |
| .ctor(String,Boolean,IDictionary<String,IFilter> ,ISessionFactoryImplementor) | NHibernate.Engine.Query.HQLQueryPlan..ctor(String,Boolean,IDictionary <String,IFilter>,ISessionFactoryImplementor) | |
| .ctor(String,String,Boolean,IDictionary<String,IFilter> ,ISessionFactoryImplementor) | NHibernate.Engine.Query.HQLQueryPlan..ctor(String,String,Boolean ,IDictionary<String,IFilter>,ISessionFactoryImplementor) | |
| get_SourceQuery() | NHibernate.Engine.Query.HQLQueryPlan.get_SourceQuery() | |
| get_EnabledFilterNames() | NHibernate.Engine.Query.HQLQueryPlan.get_EnabledFilterNames() | |
| get_UtilizedFilterNames() | NHibernate.Engine.Query.HQLQueryPlan.get_UtilizedFilterNames() | |
| get_Shallow() | NHibernate.Engine.Query.HQLQueryPlan.get_Shallow() | |
| get_Source() | NHibernate.Event.AbstractPreDatabaseOperationEvent.get_Source() |
Statistics
| Stat | NewVisibility |
|---|---|
| Sum: | 0 |
| Average: | 0 |
| Minimum: | 0 |
| Maximum: | 0 |
| Standard deviation: | 0 |
| Variance: | 0 |
| Critical Rule warning: API Breaking Changes: Fields |
// <Name>API Breaking Changes: Fields</Name>
// This rule warns if a publicly visible field is
// not publicly visible anymore or if it has been removed.
// Such field can break the code of your clients.
warnif count > 0 from f in codeBase.OlderVersion().Application.Fields
where f.IsPubliclyVisible &&
// The field has been removed and its parent type hasn't been removed ...
( (f.WasRemoved() && !f.ParentType.WasRemoved()) ||
// ... or the field is not publicly visible anymore
!f.WasRemoved() && !f.NewerVersion().IsPubliclyVisible)
select new { f,
NewVisibility = (f.WasRemoved() ? " " : f.NewerVersion().Visibility.ToString()) }
// This rule warns if a publicly visible field is
// not publicly visible anymore or if it has been removed.
// Such field can break the code of your clients.
warnif count > 0 from f in codeBase.OlderVersion().Application.Fields
where f.IsPubliclyVisible &&
// The field has been removed and its parent type hasn't been removed ...
( (f.WasRemoved() && !f.ParentType.WasRemoved()) ||
// ... or the field is not publicly visible anymore
!f.WasRemoved() && !f.NewerVersion().IsPubliclyVisible)
select new { f,
NewVisibility = (f.WasRemoved() ? " " : f.NewerVersion().Visibility.ToString()) }
562 fields matched
The following list of fields is truncated and contains only the first 100 fields of the 562 fields matched. All matched fields could be listed in the report by unchecking the option:
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched fields.
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched fields.
| fields | NewVisibility | Full Name |
|---|---|---|
| fields | NewVisibility | Full Name |
| OriginalPositionInQuery | NHibernate.SqlCommand.Parameter.OriginalPositionInQuery | |
| MappingSchemaXMLNS | NHibernate.Cfg.Configuration.MappingSchemaXMLNS | |
| namespaceManager | NHibernate.Cfg.XmlHbmBinding.ClassBinder.namespaceManager | |
| T__130 | NHibernate.Hql.Ast.ANTLR.HqlLexer.T__130 | |
| T__130 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.T__130 | |
| FOLLOW_additiveExpr_in_arithmeticExpr1588 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_additiveExpr_in_arithmeticExpr1588 | |
| FOLLOW_bitwiseExpr_in_arithmeticExpr1593 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_bitwiseExpr_in_arithmeticExpr1593 | |
| FOLLOW_multiplicativeExpr_in_arithmeticExpr1598 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_multiplicativeExpr_in_arithmeticExpr1598 | |
| FOLLOW_UNARY_MINUS_in_arithmeticExpr1605 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_UNARY_MINUS_in_arithmeticExpr1605 | |
| FOLLOW_expr_in_arithmeticExpr1609 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_expr_in_arithmeticExpr1609 | |
| FOLLOW_caseExpr_in_arithmeticExpr1615 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_caseExpr_in_arithmeticExpr1615 | |
| FOLLOW_PLUS_in_additiveExpr1627 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_PLUS_in_additiveExpr1627 | |
| FOLLOW_expr_in_additiveExpr1629 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_expr_in_additiveExpr1629 | |
| FOLLOW_expr_in_additiveExpr1633 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_expr_in_additiveExpr1633 | |
| FOLLOW_MINUS_in_additiveExpr1640 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_MINUS_in_additiveExpr1640 | |
| FOLLOW_expr_in_additiveExpr1642 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_expr_in_additiveExpr1642 | |
| FOLLOW_nestedExprAfterMinusDiv_in_additiveExpr1646 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_nestedExprAfterMinusDiv_in_additiveExpr1646 | |
| FOLLOW_BAND_in_bitwiseExpr1659 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_BAND_in_bitwiseExpr1659 | |
| FOLLOW_expr_in_bitwiseExpr1661 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_expr_in_bitwiseExpr1661 | |
| FOLLOW_nestedExpr_in_bitwiseExpr1665 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_nestedExpr_in_bitwiseExpr1665 | |
| FOLLOW_BOR_in_bitwiseExpr1672 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_BOR_in_bitwiseExpr1672 | |
| FOLLOW_expr_in_bitwiseExpr1674 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_expr_in_bitwiseExpr1674 | |
| FOLLOW_nestedExpr_in_bitwiseExpr1678 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_nestedExpr_in_bitwiseExpr1678 | |
| FOLLOW_BXOR_in_bitwiseExpr1685 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_BXOR_in_bitwiseExpr1685 | |
| FOLLOW_expr_in_bitwiseExpr1687 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_expr_in_bitwiseExpr1687 | |
| FOLLOW_nestedExpr_in_bitwiseExpr1691 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_nestedExpr_in_bitwiseExpr1691 | |
| FOLLOW_BNOT_in_bitwiseExpr1698 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_BNOT_in_bitwiseExpr1698 | |
| FOLLOW_nestedExpr_in_bitwiseExpr1702 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_nestedExpr_in_bitwiseExpr1702 | |
| FOLLOW_STAR_in_multiplicativeExpr1716 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_STAR_in_multiplicativeExpr1716 | |
| FOLLOW_nestedExpr_in_multiplicativeExpr1718 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_nestedExpr_in_multiplicativeExpr1718 | |
| FOLLOW_nestedExpr_in_multiplicativeExpr1722 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_nestedExpr_in_multiplicativeExpr1722 | |
| FOLLOW_DIV_in_multiplicativeExpr1729 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_DIV_in_multiplicativeExpr1729 | |
| FOLLOW_nestedExpr_in_multiplicativeExpr1731 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_nestedExpr_in_multiplicativeExpr1731 | |
| FOLLOW_nestedExprAfterMinusDiv_in_multiplicativeExpr1735 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_nestedExprAfterMinusDiv_in_multiplicativeExpr1735 | |
| FOLLOW_additiveExpr_in_nestedExpr1757 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_additiveExpr_in_nestedExpr1757 | |
| FOLLOW_bitwiseExpr_in_nestedExpr1772 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_bitwiseExpr_in_nestedExpr1772 | |
| FOLLOW_expr_in_nestedExpr1779 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_expr_in_nestedExpr1779 | |
| FOLLOW_arithmeticExpr_in_nestedExprAfterMinusDiv1801 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_arithmeticExpr_in_nestedExprAfterMinusDiv1801 | |
| FOLLOW_expr_in_nestedExprAfterMinusDiv1808 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_expr_in_nestedExprAfterMinusDiv1808 | |
| FOLLOW_CASE_in_caseExpr1820 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_CASE_in_caseExpr1820 | |
| FOLLOW_WHEN_in_caseExpr1830 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_WHEN_in_caseExpr1830 | |
| FOLLOW_booleanExpr_in_caseExpr1834 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_booleanExpr_in_caseExpr1834 | |
| FOLLOW_expr_in_caseExpr1839 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_expr_in_caseExpr1839 | |
| FOLLOW_ELSE_in_caseExpr1851 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_ELSE_in_caseExpr1851 | |
| FOLLOW_expr_in_caseExpr1855 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_expr_in_caseExpr1855 | |
| FOLLOW_CASE2_in_caseExpr1871 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_CASE2_in_caseExpr1871 | |
| FOLLOW_expr_in_caseExpr1875 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_expr_in_caseExpr1875 | |
| FOLLOW_WHEN_in_caseExpr1882 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_WHEN_in_caseExpr1882 | |
| FOLLOW_expr_in_caseExpr1886 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_expr_in_caseExpr1886 | |
| FOLLOW_expr_in_caseExpr1890 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_expr_in_caseExpr1890 | |
| FOLLOW_ELSE_in_caseExpr1902 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_ELSE_in_caseExpr1902 | |
| FOLLOW_expr_in_caseExpr1906 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_expr_in_caseExpr1906 | |
| FOLLOW_AGGREGATE_in_aggregate1930 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_AGGREGATE_in_aggregate1930 | |
| FOLLOW_expr_in_aggregate1935 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_expr_in_aggregate1935 | |
| FOLLOW_METHOD_CALL_in_methodCall1954 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_METHOD_CALL_in_methodCall1954 | |
| FOLLOW_METHOD_NAME_in_methodCall1958 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_METHOD_NAME_in_methodCall1958 | |
| FOLLOW_EXPR_LIST_in_methodCall1967 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_EXPR_LIST_in_methodCall1967 | |
| FOLLOW_arguments_in_methodCall1970 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_arguments_in_methodCall1970 | |
| FOLLOW_expr_in_arguments1995 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_expr_in_arguments1995 | |
| FOLLOW_comparisonExpr_in_arguments1999 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_comparisonExpr_in_arguments1999 | |
| FOLLOW_expr_in_arguments2008 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_expr_in_arguments2008 | |
| FOLLOW_comparisonExpr_in_arguments2012 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_comparisonExpr_in_arguments2012 | |
| FOLLOW_NAMED_PARAM_in_parameter2030 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_NAMED_PARAM_in_parameter2030 | |
| FOLLOW_PARAM_in_parameter2039 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_PARAM_in_parameter2039 | |
| FOLLOW_DOT_in_addrExpr2055 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_DOT_in_addrExpr2055 | |
| FOLLOW_ALIAS_REF_in_addrExpr2069 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_ALIAS_REF_in_addrExpr2069 | |
| FOLLOW_INDEX_OP_in_addrExpr2079 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_INDEX_OP_in_addrExpr2079 | |
| FOLLOW_SQL_TOKEN_in_sqlToken2099 | NHibernate.Hql.Ast.ANTLR.SqlGenerator.FOLLOW_SQL_TOKEN_in_sqlToken2099 | |
| FOLLOW_additiveExpr_in_synpred2_SqlGenerator1750 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_additiveExpr_in_synpred2_SqlGenerator1750 | |
| FOLLOW_bitwiseExpr_in_synpred3_SqlGenerator1765 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_bitwiseExpr_in_synpred3_SqlGenerator1765 | |
| FOLLOW_arithmeticExpr_in_synpred4_SqlGenerator1794 | NHibernate.Hql.Ast.ANTLR.SqlGenerator .FOLLOW_arithmeticExpr_in_synpred4_SqlGenerator1794 | |
| T__130 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.T__130 | |
| FOLLOW_EQ_in_comparisonExpr1444 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.FOLLOW_EQ_in_comparisonExpr1444 | |
| FOLLOW_exprOrSubquery_in_comparisonExpr1446 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker .FOLLOW_exprOrSubquery_in_comparisonExpr1446 | |
| FOLLOW_exprOrSubquery_in_comparisonExpr1448 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker .FOLLOW_exprOrSubquery_in_comparisonExpr1448 | |
| FOLLOW_NE_in_comparisonExpr1455 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.FOLLOW_NE_in_comparisonExpr1455 | |
| FOLLOW_exprOrSubquery_in_comparisonExpr1457 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker .FOLLOW_exprOrSubquery_in_comparisonExpr1457 | |
| FOLLOW_exprOrSubquery_in_comparisonExpr1459 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker .FOLLOW_exprOrSubquery_in_comparisonExpr1459 | |
| FOLLOW_LT_in_comparisonExpr1466 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.FOLLOW_LT_in_comparisonExpr1466 | |
| FOLLOW_exprOrSubquery_in_comparisonExpr1468 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker .FOLLOW_exprOrSubquery_in_comparisonExpr1468 | |
| FOLLOW_exprOrSubquery_in_comparisonExpr1470 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker .FOLLOW_exprOrSubquery_in_comparisonExpr1470 | |
| FOLLOW_GT_in_comparisonExpr1477 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.FOLLOW_GT_in_comparisonExpr1477 | |
| FOLLOW_exprOrSubquery_in_comparisonExpr1479 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker .FOLLOW_exprOrSubquery_in_comparisonExpr1479 | |
| FOLLOW_exprOrSubquery_in_comparisonExpr1481 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker .FOLLOW_exprOrSubquery_in_comparisonExpr1481 | |
| FOLLOW_LE_in_comparisonExpr1488 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.FOLLOW_LE_in_comparisonExpr1488 | |
| FOLLOW_exprOrSubquery_in_comparisonExpr1490 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker .FOLLOW_exprOrSubquery_in_comparisonExpr1490 | |
| FOLLOW_exprOrSubquery_in_comparisonExpr1492 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker .FOLLOW_exprOrSubquery_in_comparisonExpr1492 | |
| FOLLOW_GE_in_comparisonExpr1499 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.FOLLOW_GE_in_comparisonExpr1499 | |
| FOLLOW_exprOrSubquery_in_comparisonExpr1501 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker .FOLLOW_exprOrSubquery_in_comparisonExpr1501 | |
| FOLLOW_exprOrSubquery_in_comparisonExpr1503 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker .FOLLOW_exprOrSubquery_in_comparisonExpr1503 | |
| FOLLOW_LIKE_in_comparisonExpr1510 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker .FOLLOW_LIKE_in_comparisonExpr1510 | |
| FOLLOW_exprOrSubquery_in_comparisonExpr1512 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker .FOLLOW_exprOrSubquery_in_comparisonExpr1512 | |
| FOLLOW_expr_in_comparisonExpr1514 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker .FOLLOW_expr_in_comparisonExpr1514 | |
| FOLLOW_ESCAPE_in_comparisonExpr1519 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker .FOLLOW_ESCAPE_in_comparisonExpr1519 | |
| FOLLOW_expr_in_comparisonExpr1521 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker .FOLLOW_expr_in_comparisonExpr1521 | |
| FOLLOW_NOT_LIKE_in_comparisonExpr1533 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker .FOLLOW_NOT_LIKE_in_comparisonExpr1533 | |
| FOLLOW_exprOrSubquery_in_comparisonExpr1535 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker .FOLLOW_exprOrSubquery_in_comparisonExpr1535 | |
| FOLLOW_expr_in_comparisonExpr1537 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker .FOLLOW_expr_in_comparisonExpr1537 | |
| FOLLOW_ESCAPE_in_comparisonExpr1542 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker .FOLLOW_ESCAPE_in_comparisonExpr1542 | |
| FOLLOW_expr_in_comparisonExpr1544 | NHibernate.Hql.Ast.ANTLR.HqlSqlWalker .FOLLOW_expr_in_comparisonExpr1544 |
Statistics
| Stat | NewVisibility |
|---|---|
| Sum: | 0 |
| Average: | 0 |
| Minimum: | 0 |
| Maximum: | 0 |
| Standard deviation: | 0 |
| Variance: | 0 |
| Critical Rule warning: API Breaking Changes: Interfaces and Abstract Classes |
// <Name>API Breaking Changes: Interfaces and Abstract Classes</Name>
// This rule warns if a publicly visible interface or abstract class
// has been changed and contains new abstract methods or
// if some abstract methods have been removed.
// This can break the code of clients
// that implement such interface or derive from such abstract class.
warnif count > 0 from tNewer in Application.Types where
(tNewer.IsInterface || tNewer.IsClass && tNewer.IsAbstract) &&
tNewer.IsPubliclyVisible &&
tNewer.IsPresentInBothBuilds()
let tOlder = tNewer.OlderVersion() where tOlder.IsPubliclyVisible
let methodsRemoved = tOlder.Methods.Where(m => m.IsAbstract && m.WasRemoved())
let methodsAdded = tNewer.Methods.Where(m => m.IsAbstract && m.WasAdded())
where methodsAdded.Count() > 0 || methodsRemoved.Count() > 0
select new { tNewer, methodsAdded, methodsRemoved }
// This rule warns if a publicly visible interface or abstract class
// has been changed and contains new abstract methods or
// if some abstract methods have been removed.
// This can break the code of clients
// that implement such interface or derive from such abstract class.
warnif count > 0 from tNewer in Application.Types where
(tNewer.IsInterface || tNewer.IsClass && tNewer.IsAbstract) &&
tNewer.IsPubliclyVisible &&
tNewer.IsPresentInBothBuilds()
let tOlder = tNewer.OlderVersion() where tOlder.IsPubliclyVisible
let methodsRemoved = tOlder.Methods.Where(m => m.IsAbstract && m.WasRemoved())
let methodsAdded = tNewer.Methods.Where(m => m.IsAbstract && m.WasAdded())
where methodsAdded.Count() > 0 || methodsRemoved.Count() > 0
select new { tNewer, methodsAdded, methodsRemoved }
21 types matched
| types | methodsAdded | methodsRemoved | Full Name |
|---|---|---|---|
| types | methodsAdded | methodsRemoved | Full Name |
| ICriteria | 2 methods | 0 method | NHibernate.ICriteria |
| IMultiCriteria | 5 methods | 0 method | NHibernate.IMultiCriteria |
| ISession | 3 methods | 11 methods | NHibernate.ISession |
| ICompositeUserType | 1 method | 1 method | NHibernate.UserTypes.ICompositeUserType |
| IFieldInterceptor | 3 methods | 0 method | NHibernate.Intercept.IFieldInterceptor |
| IDriver | 1 method | 0 method | NHibernate.Driver.IDriver |
| IExecutable | 2 methods | 2 methods | NHibernate.Action.IExecutable |
| EntityAction | 0 method | 1 method | NHibernate.Action.EntityAction |
| FutureBatch<TQueryApproach,TMultiApproach> | 3 methods | 1 method | NHibernate.Impl.FutureBatch<TQueryApproach,TMultiApproach> |
| AbstractSessionImpl | 2 methods | 0 method | NHibernate.Impl.AbstractSessionImpl |
| JoinFragment | 1 method | 1 method | NHibernate.SqlCommand.JoinFragment |
| IOuterJoinLoadable | 1 method | 0 method | NHibernate.Persister.Entity.IOuterJoinLoadable |
| AbstractEmptinessExpression | 0 method | 1 method | NHibernate.Criterion.AbstractEmptinessExpression |
| ICriteriaQuery | 2 methods | 0 method | NHibernate.Criterion.ICriteriaQuery |
| IQueryTranslatorFactory | 1 method | 2 methods | NHibernate.Hql.IQueryTranslatorFactory |
| IQueryTranslator | 1 method | 0 method | NHibernate.Hql.IQueryTranslator |
| IProxyFactory | 1 method | 0 method | NHibernate.Proxy.IProxyFactory |
| AbstractDecoratable | 1 method | 1 method | NHibernate.Cfg.MappingSchema.AbstractDecoratable |
| IProxyFactoryFactory | 1 method | 0 method | NHibernate.Bytecode.IProxyFactoryFactory |
| IBatcher | 1 method | 0 method | NHibernate.Engine.IBatcher |
| ISessionImplementor | 1 method | 0 method | NHibernate.Engine.ISessionImplementor |
Statistics
| Stat | methodsAdded | methodsRemoved |
|---|---|---|
| Sum: | 0 | 0 |
| Average: | 0 | 0 |
| Minimum: | 0 | 0 |
| Maximum: | 0 | 0 |
| Standard deviation: | 0 | 0 |
| Variance: | 0 | 0 |
| Critical Rule warning: Avoid transforming immutable types into mutable types |
// <Name>Avoid transforming immutable types into mutable types</Name>
// Immutability is a strong property on a type.
// Breaking immutability can result in serious problem for an algorithm consummer
// that has been written taking account of the type immutability.
// To visualize changes in code, right-click a matched type and select:
// - Compare older and newer versions of source file
// - Compare older and newer versions disassembled with Reflector
warnif count > 0
from t in Application.Types where
t.IsPresentInBothBuilds() &&
!t.IsStatic &&
!t.IsImmutable &&
t.OlderVersion().IsImmutable
let mutableFields = from f in t.InstanceFields where !f.IsImmutable select f
select new { t, mutableFields }
// Immutability is a strong property on a type.
// Breaking immutability can result in serious problem for an algorithm consummer
// that has been written taking account of the type immutability.
// To visualize changes in code, right-click a matched type and select:
// - Compare older and newer versions of source file
// - Compare older and newer versions disassembled with Reflector
warnif count > 0
from t in Application.Types where
t.IsPresentInBothBuilds() &&
!t.IsStatic &&
!t.IsImmutable &&
t.OlderVersion().IsImmutable
let mutableFields = from f in t.InstanceFields where !f.IsImmutable select f
select new { t, mutableFields }
5 types matched
| types | mutableFields | Full Name |
|---|---|---|
| types | mutableFields | Full Name |
| DateType | 1 field | NHibernate.Type.DateType |
| DelayedEnumerator<T> | 1 field | NHibernate.Impl.DelayedEnumerator<T> |
| FutureValue<T> | 1 field | NHibernate.Impl.FutureValue<T> |
| HQLQueryPlan | 5 fields | NHibernate.Engine.Query.HQLQueryPlan |
| FilterQueryPlan | 0 field | NHibernate.Engine.Query.FilterQueryPlan |
Statistics
| Stat | mutableFields |
|---|---|
| Sum: | 0 |
| Average: | 0 |
| Minimum: | 0 |
| Maximum: | 0 |
| Standard deviation: | 0 |
| Variance: | 0 |
| Dead Code |
|
|
| Rule warning: Potentially dead Methods |
// <Name>Potentially dead Methods</Name>
warnif count > 0
// Filter procedure for methods that should'nt be considered as dead
let canMethodBeConsideredAsDeadProc = new Func<IMethod, bool>(
m => !m.IsPubliclyVisible && // Public methods might be used by client applications of your assemblies.
!m.IsEntryPoint && // Main() method is not used by-design.
!m.IsExplicitInterfaceImpl && // The IL code never explicitely calls explicit interface methods implementation.
!m.IsClassConstructor && // The IL code never explicitely calls class constructors.
!m.IsFinalizer && // The IL code never explicitely calls finalizers.
!m.IsVirtual && // Only check for non virtual method that are not seen as used in IL.
!(m.IsConstructor && // Don't take account of protected ctor that might be call by a derived ctors.
m.IsProtected) &&
!m.IsEventAdder && // The IL code never explicitely calls events adder/remover.
!m.IsEventRemover &&
!m.IsGeneratedByCompiler &&
!m.ParentType.IsDelegate &&
// Methods tagged with these two attributes are called by the serialization infrastructure.
!m.HasAttribute("System.Runtime.Serialization.OnSerializingAttribute".AllowNoMatch()) &&
!m.HasAttribute("System.Runtime.Serialization.OnDeserializedAttribute".AllowNoMatch()) &&
// If you don't want to link NDepend.API.dll, you can use your own IsNotDeadCodeAttribute and adapt this rule.
!m.HasAttribute("NDepend.Attributes.IsNotDeadCodeAttribute".AllowNoMatch()))
// Get methods unused
let methodsUnused =
from m in JustMyCode.Methods where
m.NbMethodsCallingMe == 0 &&
canMethodBeConsideredAsDeadProc(m)
select m
// Dead methods = methods used only by unused methods (recursive)
let deadMethodsMetric = methodsUnused.FillIterative(
methods => // Unique loop, just to let a chance to build the hashset.
from o in (new object()).ToEnumerable()
// Use a hashet to make Intersect calls much faster!
let hashset = methods.ToHashSet()
from m in codeBase.Application.Methods.UsedByAny(methods).Except(methods)
where canMethodBeConsideredAsDeadProc(m) &&
// Select methods called only by methods already considered as dead
hashset.Intersect(m.MethodsCallingMe).Count() == m.NbMethodsCallingMe
select m)
from m in JustMyCode.Methods.Intersect(deadMethodsMetric.DefinitionDomain)
select new { m, m.MethodsCallingMe, depth = deadMethodsMetric[m] }
warnif count > 0
// Filter procedure for methods that should'nt be considered as dead
let canMethodBeConsideredAsDeadProc = new Func<IMethod, bool>(
m => !m.IsPubliclyVisible && // Public methods might be used by client applications of your assemblies.
!m.IsEntryPoint && // Main() method is not used by-design.
!m.IsExplicitInterfaceImpl && // The IL code never explicitely calls explicit interface methods implementation.
!m.IsClassConstructor && // The IL code never explicitely calls class constructors.
!m.IsFinalizer && // The IL code never explicitely calls finalizers.
!m.IsVirtual && // Only check for non virtual method that are not seen as used in IL.
!(m.IsConstructor && // Don't take account of protected ctor that might be call by a derived ctors.
m.IsProtected) &&
!m.IsEventAdder && // The IL code never explicitely calls events adder/remover.
!m.IsEventRemover &&
!m.IsGeneratedByCompiler &&
!m.ParentType.IsDelegate &&
// Methods tagged with these two attributes are called by the serialization infrastructure.
!m.HasAttribute("System.Runtime.Serialization.OnSerializingAttribute".AllowNoMatch()) &&
!m.HasAttribute("System.Runtime.Serialization.OnDeserializedAttribute".AllowNoMatch()) &&
// If you don't want to link NDepend.API.dll, you can use your own IsNotDeadCodeAttribute and adapt this rule.
!m.HasAttribute("NDepend.Attributes.IsNotDeadCodeAttribute".AllowNoMatch()))
// Get methods unused
let methodsUnused =
from m in JustMyCode.Methods where
m.NbMethodsCallingMe == 0 &&
canMethodBeConsideredAsDeadProc(m)
select m
// Dead methods = methods used only by unused methods (recursive)
let deadMethodsMetric = methodsUnused.FillIterative(
methods => // Unique loop, just to let a chance to build the hashset.
from o in (new object()).ToEnumerable()
// Use a hashet to make Intersect calls much faster!
let hashset = methods.ToHashSet()
from m in codeBase.Application.Methods.UsedByAny(methods).Except(methods)
where canMethodBeConsideredAsDeadProc(m) &&
// Select methods called only by methods already considered as dead
hashset.Intersect(m.MethodsCallingMe).Count() == m.NbMethodsCallingMe
select m)
from m in JustMyCode.Methods.Intersect(deadMethodsMetric.DefinitionDomain)
select new { m, m.MethodsCallingMe, depth = deadMethodsMetric[m] }
56 methods matched
| methods | MethodsCallingMe | depth | Full Name |
|---|---|---|---|
| methods | MethodsCallingMe | depth | Full Name |
| Contains(Object) | 0 method | 0 | NHibernate.Util.SequencedHashMap+KeyCollection.Contains(Object) |
| Contains(Object) | 0 method | 0 | NHibernate.Util.SequencedHashMap+ValuesCollection.Contains(Object) |
| .ctor() | 0 method | 0 | NHibernate.Util.CollectionHelper..ctor() |
| .ctor() | 0 method | 0 | NHibernate.Util.ObjectUtils..ctor() |
| .ctor() | 0 method | 0 | NHibernate.Util.ADOExceptionReporter..ctor() |
| .ctor() | 0 method | 0 | NHibernate.Util.SerializationHelper..ctor() |
| .ctor() | 0 method | 0 | NHibernate.Type.AbstractBinaryType..ctor() |
| .ctor() | 0 method | 0 | NHibernate.Properties.PropertyAccessorFactory..ctor() |
| GetNumberOfPreceedingParameters() | 0 method | 0 | NHibernate.Driver.SqlStringFormatter.GetNumberOfPreceedingParameters() |
| .ctor() | 0 method | 0 | NHibernate.Impl.MessageHelper..ctor() |
| .ctor(String,IList<INativeSQLQueryReturn>,ICollection<String> ,FlushMode,Boolean,ISessionImplementor,ParameterMetadata) | 0 method | 0 | NHibernate.Impl.SqlQueryImpl..ctor(String,IList<INativeSQLQueryReturn> ,ICollection<String>,FlushMode,Boolean,ISessionImplementor ,ParameterMetadata) |
| .ctor(String,String[],Type[],LockMode[],ISessionImplementor ,ICollection<String>,FlushMode,ParameterMetadata) | 1 method | 1 | NHibernate.Impl.SqlQueryImpl..ctor(String,String[],Type[],LockMode[] ,ISessionImplementor,ICollection<String>,FlushMode,ParameterMetadata) |
| .ctor(String,String[],Type[],ISessionImplementor,ParameterMetadata) | 0 method | 0 | NHibernate.Impl.SqlQueryImpl..ctor(String,String[],Type[] ,ISessionImplementor,ParameterMetadata) |
| .ctor() | 1 method | 1 | NHibernate.Impl.AbstractSessionImpl..ctor() |
| .ctor(SerializationInfo,StreamingContext) | 0 method | 0 | NHibernate.Impl.SessionImpl..ctor(SerializationInfo,StreamingContext) |
| GetCollectionPersister(String) | 0 method | 0 | NHibernate.Impl.SessionImpl.GetCollectionPersister(String) |
| .ctor() | 0 method | 0 | NHibernate.Transform.Transformers..ctor() |
| .ctor() | 0 method | 0 | NHibernate.SqlCommand.Template..ctor() |
| .ctor() | 0 method | 0 | NHibernate.Connection.ConnectionProviderFactory..ctor() |
| .ctor() | 0 method | 0 | NHibernate.Persister.PersisterFactory..ctor() |
| .ctor() | 1 method | 1 | NHibernate.Criterion.Restrictions..ctor() |
| .ctor() | 0 method | 0 | NHibernate.Criterion.Expression..ctor() |
| .ctor() | 0 method | 0 | NHibernate.Criterion.Projections..ctor() |
| IsPossiblyClassName(String,String) | 0 method | 0 | NHibernate.Hql.QuerySplitter.IsPossiblyClassName(String,String) |
| CreateJoinFragment(Boolean) | 0 method | 0 | NHibernate.Hql.Classic.QueryTranslator.CreateJoinFragment(Boolean) |
| .ctor() | 0 method | 0 | NHibernate.Hql.Classic.ParserHelper..ctor() |
| .ctor() | 0 method | 0 | NHibernate.Proxy.NHibernateProxyHelper..ctor() |
| set_Timeout(Int32) | 0 method | 0 | NHibernate.Cache.FakeCache.set_Timeout(Int32) |
| .ctor() | 0 method | 0 | NHibernate.Cache.Timestamper..ctor() |
| .ctor() | 0 method | 0 | NHibernate.Id.IdentifierGeneratorFactory..ctor() |
| .ctor() | 0 method | 0 | NHibernate.Collection.SetSnapShot<T>..ctor() |
| set_IsScrollableResultSetsEnabled(Boolean) | 0 method | 0 | NHibernate.Cfg.Settings.set_IsScrollableResultSetsEnabled(Boolean) |
| set_IsGetGeneratedKeysEnabled(Boolean) | 0 method | 0 | NHibernate.Cfg.Settings.set_IsGetGeneratedKeysEnabled(Boolean) |
| set_IsStructuredCacheEntriesEnabled(Boolean) | 0 method | 0 | NHibernate.Cfg.Settings.set_IsStructuredCacheEntriesEnabled(Boolean) |
| set_IsFlushBeforeCompletionEnabled(Boolean) | 0 method | 0 | NHibernate.Cfg.Settings.set_IsFlushBeforeCompletionEnabled(Boolean) |
| set_IsAutoCloseSessionEnabled(Boolean) | 0 method | 0 | NHibernate.Cfg.Settings.set_IsAutoCloseSessionEnabled(Boolean) |
| set_IsOrderUpdatesEnabled(Boolean) | 0 method | 0 | NHibernate.Cfg.Settings.set_IsOrderUpdatesEnabled(Boolean) |
| set_IsOrderInsertsEnabled(Boolean) | 0 method | 0 | NHibernate.Cfg.Settings.set_IsOrderInsertsEnabled(Boolean) |
| set_IsDataDefinitionImplicitCommit(Boolean) | 0 method | 0 | NHibernate.Cfg.Settings.set_IsDataDefinitionImplicitCommit(Boolean) |
| set_IsDataDefinitionInTransactionSupported(Boolean) | 0 method | 0 | NHibernate.Cfg.Settings.set_IsDataDefinitionInTransactionSupported (Boolean) |
| set_IsOuterJoinFetchEnabled(Boolean) | 0 method | 0 | NHibernate.Cfg.Settings.set_IsOuterJoinFetchEnabled(Boolean) |
| GetRootClassMapping(Type) | 0 method | 0 | NHibernate.Cfg.Configuration.GetRootClassMapping(Type) |
| .ctor() | 0 method | 0 | NHibernate.Cfg.XmlHbmBinding.AuxiliaryDatabaseObjectFactory..ctor() |
| ClassCacheIncludeConvertToString(ClassCacheInclude) | 0 method | 0 | NHibernate.Cfg.ConfigurationSchema.CfgXmlHelper .ClassCacheIncludeConvertToString(ClassCacheInclude) |
| ListenerTypeConvertToString(ListenerType) | 0 method | 0 | NHibernate.Cfg.ConfigurationSchema.CfgXmlHelper .ListenerTypeConvertToString(ListenerType) |
| .ctor() | 0 method | 0 | NHibernate.Bytecode.EmitUtil..ctor() |
| .ctor() | 0 method | 0 | NHibernate.Linq.GroupJoin.AggregatingGroupJoinRewriter..ctor() |
| GroupBy<TSource,TKey,TResult>(Expression<Func<TSource,TKey>> ,Expression<Func<TSource,TResult>>) | 0 method | 0 | NHibernate.Linq.Visitors.QueryModelVisitor.GroupBy<TSource,TKey ,TResult>(Expression<Func<TSource,TKey>>,Expression<Func<TSource ,TResult>>) |
| .ctor(SerializationInfo,StreamingContext) | 0 method | 0 | NHibernate.Engine.StatefulPersistenceContext..ctor(SerializationInfo ,StreamingContext) |
| .ctor() | 0 method | 0 | NHibernate.Engine.JoinHelper..ctor() |
| .ctor() | 0 method | 0 | NHibernate.Engine.UnsavedValueFactory..ctor() |
| SetSessionFactory(ISessionFactoryImplementor) | 0 method | 0 | NHibernate.Engine.EntityKey.SetSessionFactory (ISessionFactoryImplementor) |
| get_LoadingCollectionXRefs() | 0 method | 0 | NHibernate.Engine.Loading.LoadContexts.get_LoadingCollectionXRefs() |
| .ctor() | 0 method | 0 | NHibernate.Engine.Query.ParameterParser..ctor() |
| .ctor(SerializationInfo,StreamingContext) | 0 method | 0 | NHibernate.AdoNet.ConnectionManager..ctor(SerializationInfo ,StreamingContext) |
| .ctor() | 0 method | 0 | NHibernate.AdoNet.Expectations..ctor() |
Statistics
| Stat | MethodsCallingMe | depth |
|---|---|---|
| Sum: | 0 | 3 |
| Average: | 0 | 0.053571 |
| Minimum: | 0 | 0 |
| Maximum: | 0 | 1 |
| Standard deviation: | 0 | 0.22517 |
| Variance: | 0 | 0.050702 |
| Visibility |
|
|
| Rule warning: Methods that could have a lower visibility |
// <Name>Methods that could have a lower visibility</Name>
warnif count > 0 from m in JustMyCode.Methods where
m.Visibility != m.OptimalVisibility &&
!m.HasAttribute("NDepend.Attributes.CannotDecreaseVisibilityAttribute".AllowNoMatch()) &&
!m.HasAttribute("NDepend.Attributes.IsNotDeadCodeAttribute".AllowNoMatch()) &&
// If you don't want to link NDepend.API.dll, you can use your own attributes and adapt this rule.
// Eliminate default constructor from the result.
// Whatever the visibility of the declaring class,
// default constructors are public and introduce noise
// in the current rule.
!( m.IsConstructor && m.IsPublic && m.NbParameters == 0) &&
// Don't decrease the visibility of Main() methods.
!m.IsEntryPoint
select new { m,
m.Visibility ,
CouldBeDeclared = m.OptimalVisibility,
m.MethodsCallingMe }
warnif count > 0 from m in JustMyCode.Methods where
m.Visibility != m.OptimalVisibility &&
!m.HasAttribute("NDepend.Attributes.CannotDecreaseVisibilityAttribute".AllowNoMatch()) &&
!m.HasAttribute("NDepend.Attributes.IsNotDeadCodeAttribute".AllowNoMatch()) &&
// If you don't want to link NDepend.API.dll, you can use your own attributes and adapt this rule.
// Eliminate default constructor from the result.
// Whatever the visibility of the declaring class,
// default constructors are public and introduce noise
// in the current rule.
!( m.IsConstructor && m.IsPublic && m.NbParameters == 0) &&
// Don't decrease the visibility of Main() methods.
!m.IsEntryPoint
select new { m,
m.Visibility ,
CouldBeDeclared = m.OptimalVisibility,
m.MethodsCallingMe }
3,832 methods matched
The following list of methods is truncated and contains only the first 100 methods of the 3832 methods matched. All matched methods could be listed in the report by unchecking the option:
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched methods.
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched methods.
| methods | Visibility | CouldBeDeclared | MethodsCallingMe | Full Name |
|---|---|---|---|---|
| methods | Visibility | CouldBeDeclared | MethodsCallingMe | Full Name |
| GuessType(Object) | Public | Internal | 1 method | NHibernate.NHibernateUtil.GuessType(Object) |
| GuessType(Type) | Public | Internal | 3 methods | NHibernate.NHibernateUtil.GuessType(Type) |
| Enum(Type) | Public | Internal | 4 methods | NHibernate.NHibernateUtil.Enum(Type) |
| GetSerializable(Type) | Public | Private | 0 method | NHibernate.NHibernateUtil.GetSerializable(Type) |
| Any(IType,IType) | Public | Private | 0 method | NHibernate.NHibernateUtil.Any(IType,IType) |
| Entity(Type) | Public | Internal | 8 methods | NHibernate.NHibernateUtil.Entity(Type) |
| Entity(String) | Public | Internal | 2 methods | NHibernate.NHibernateUtil.Entity(String) |
| Custom(Type) | Public | Private | 1 method | NHibernate.NHibernateUtil.Custom(Type) |
| Initialize(Object) | Public | Private | 0 method | NHibernate.NHibernateUtil.Initialize(Object) |
| IsInitialized(Object) | Public | Internal | 4 methods | NHibernate.NHibernateUtil.IsInitialized(Object) |
| GetClass(Object) | Public | Private | 0 method | NHibernate.NHibernateUtil.GetClass(Object) |
| Close(IEnumerator) | Public | Private | 0 method | NHibernate.NHibernateUtil.Close(IEnumerator) |
| Close(IEnumerable) | Public | Private | 0 method | NHibernate.NHibernateUtil.Close(IEnumerable) |
| IsPropertyInitialized(Object,String) | Public | Private | 0 method | NHibernate.NHibernateUtil.IsPropertyInitialized(Object,String) |
| .ctor(String) | Public | Internal | 3 methods | NHibernate.TransactionException..ctor(String) |
| .ctor(String,Exception) | Public | Internal | 3 methods | NHibernate.TransactionException..ctor(String,Exception) |
| .ctor(SerializationInfo,StreamingContext) | Protected | Private | 0 method | NHibernate.TransactionException..ctor(SerializationInfo ,StreamingContext) |
| .ctor(String,Object) | Public | Internal | 6 methods | NHibernate.StaleObjectStateException..ctor(String,Object) |
| get_EntityName() | Public | Private | 0 method | NHibernate.StaleObjectStateException.get_EntityName() |
| get_Identifier() | Public | Private | 0 method | NHibernate.StaleObjectStateException.get_Identifier() |
| .ctor(SerializationInfo,StreamingContext) | Protected | Private | 0 method | NHibernate.StaleObjectStateException..ctor(SerializationInfo ,StreamingContext) |
| .ctor(ICollection<String>) | Public | Internal | 1 method | NHibernate.InvalidProxyTypeException..ctor(ICollection<String>) |
| get_Errors() | Public | Private | 1 method | NHibernate.InvalidProxyTypeException.get_Errors() |
| .ctor(SerializationInfo,StreamingContext) | Public | Private | 0 method | NHibernate.InvalidProxyTypeException..ctor(SerializationInfo ,StreamingContext) |
| .ctor(String) | Public | Internal | 1 method | NHibernate.FKUnmatchingColumnsException..ctor(String) |
| .ctor(String,Exception) | Public | Private | 0 method | NHibernate.FKUnmatchingColumnsException..ctor(String,Exception) |
| .ctor(SerializationInfo,StreamingContext) | Protected | Private | 0 method | NHibernate.FKUnmatchingColumnsException..ctor(SerializationInfo ,StreamingContext) |
| .ctor(String,Object,String) | Public | Internal | 4 methods | NHibernate.LazyInitializationException..ctor(String,Object,String) |
| get_EntityName() | Public | Private | 0 method | NHibernate.LazyInitializationException.get_EntityName() |
| get_EntityId() | Public | Private | 0 method | NHibernate.LazyInitializationException.get_EntityId() |
| .ctor(String) | Public | Internal | 2 methods | NHibernate.LazyInitializationException..ctor(String) |
| .ctor(Exception) | Public | Private | 0 method | NHibernate.LazyInitializationException..ctor(Exception) |
| .ctor(String,Exception) | Public | Private | 2 methods | NHibernate.LazyInitializationException..ctor(String,Exception) |
| .ctor(SerializationInfo,StreamingContext) | Protected | Private | 0 method | NHibernate.LazyInitializationException..ctor(SerializationInfo ,StreamingContext) |
| .ctor(String,String,String) | Public | Internal | 1 method | NHibernate.PropertyValueException..ctor(String,String,String) |
| get_EntityName() | Public | Private | 0 method | NHibernate.PropertyValueException.get_EntityName() |
| get_PropertyName() | Public | Private | 0 method | NHibernate.PropertyValueException.get_PropertyName() |
| .ctor(SerializationInfo,StreamingContext) | Protected | Private | 0 method | NHibernate.PropertyValueException..ctor(SerializationInfo ,StreamingContext) |
| .ctor(String,Object,String) | Public | Internal | 3 methods | NHibernate.WrongClassException..ctor(String,Object,String) |
| get_Identifier() | Public | Private | 0 method | NHibernate.WrongClassException.get_Identifier() |
| get_EntityName() | Public | Private | 0 method | NHibernate.WrongClassException.get_EntityName() |
| .ctor(SerializationInfo,StreamingContext) | Protected | Private | 0 method | NHibernate.WrongClassException..ctor(SerializationInfo ,StreamingContext) |
| .ctor(String,Object,String) | Public | Internal | 6 methods | NHibernate.ObjectDeletedException..ctor(String,Object,String) |
| .ctor(SerializationInfo,StreamingContext) | Protected | Private | 0 method | NHibernate.ObjectDeletedException..ctor(SerializationInfo ,StreamingContext) |
| .ctor(String) | Public | Internal | 58 methods | NHibernate.AssertionFailure..ctor(String) |
| .ctor(String,Exception) | Public | Internal | 2 methods | NHibernate.AssertionFailure..ctor(String,Exception) |
| .ctor(SerializationInfo,StreamingContext) | Protected | Private | 0 method | NHibernate.AssertionFailure..ctor(SerializationInfo,StreamingContext) |
| SetLoggersFactory(ILoggerFactory) | Public | Private | 1 method | NHibernate.LoggerProvider.SetLoggersFactory(ILoggerFactory) |
| LoggerFor(String) | Public | Internal | 5 methods | NHibernate.LoggerProvider.LoggerFor(String) |
| .ctor(Object) | Public | Internal | 2 methods | NHibernate.Log4NetLogger..ctor(Object) |
| .ctor(Int32) | Public | Internal | 1 method | NHibernate.NonUniqueResultException..ctor(Int32) |
| .ctor(SerializationInfo,StreamingContext) | Protected | Private | 0 method | NHibernate.NonUniqueResultException..ctor(SerializationInfo ,StreamingContext) |
| .ctor(String) | Public | Internal | 4 methods | NHibernate.SessionException..ctor(String) |
| .ctor(SerializationInfo,StreamingContext) | Protected | Private | 0 method | NHibernate.SessionException..ctor(SerializationInfo,StreamingContext) |
| .ctor(Type,String,String) | Public | Internal | 8 methods | NHibernate.PropertyNotFoundException..ctor(Type,String,String) |
| .ctor(Type,String) | Public | Internal | 1 method | NHibernate.PropertyNotFoundException..ctor(Type,String) |
| .ctor(SerializationInfo,StreamingContext) | Protected | Private | 0 method | NHibernate.PropertyNotFoundException..ctor(SerializationInfo ,StreamingContext) |
| get_TargetType() | Public | Private | 0 method | NHibernate.PropertyNotFoundException.get_TargetType() |
| get_PropertyName() | Public | Private | 0 method | NHibernate.PropertyNotFoundException.get_PropertyName() |
| get_AccessorType() | Public | Private | 0 method | NHibernate.PropertyNotFoundException.get_AccessorType() |
| .ctor(String,Object,String) | Public | Private | 1 method | NHibernate.NonUniqueObjectException..ctor(String,Object,String) |
| .ctor(Object,String) | Public | Internal | 3 methods | NHibernate.NonUniqueObjectException..ctor(Object,String) |
| get_Identifier() | Public | Private | 0 method | NHibernate.NonUniqueObjectException.get_Identifier() |
| get_EntityName() | Public | Private | 0 method | NHibernate.NonUniqueObjectException.get_EntityName() |
| .ctor(SerializationInfo,StreamingContext) | Protected | Private | 0 method | NHibernate.NonUniqueObjectException..ctor(SerializationInfo ,StreamingContext) |
| TransformToRowCount(DetachedCriteria) | Public | Private | 0 method | NHibernate.CriteriaTransformer.TransformToRowCount(DetachedCriteria) |
| TransformToRowCount(ICriteria) | Public | Private | 0 method | NHibernate.CriteriaTransformer.TransformToRowCount(ICriteria) |
| Clone(DetachedCriteria) | Public | Private | 0 method | NHibernate.CriteriaTransformer.Clone(DetachedCriteria) |
| Clone(ICriteria) | Public | Private | 0 method | NHibernate.CriteriaTransformer.Clone(ICriteria) |
| .ctor(String) | Public | Internal | 1 method | NHibernate.ReplicationMode+ExceptionReplicationMode..ctor(String) |
| .ctor(String) | Public | Internal | 1 method | NHibernate.ReplicationMode+IgnoreReplicationMode..ctor(String) |
| .ctor(String) | Public | Internal | 1 method | NHibernate.ReplicationMode+LatestVersionReplicationMode..ctor(String) |
| .ctor(String) | Public | Internal | 1 method | NHibernate.ReplicationMode+OverwriteReplicationMode..ctor(String) |
| .ctor(Exception) | Public | Private | 0 method | NHibernate.CallbackException..ctor(Exception) |
| .ctor(String) | Public | Private | 0 method | NHibernate.CallbackException..ctor(String) |
| .ctor(String,Exception) | Public | Private | 1 method | NHibernate.CallbackException..ctor(String,Exception) |
| .ctor(SerializationInfo,StreamingContext) | Protected | Private | 0 method | NHibernate.CallbackException..ctor(SerializationInfo,StreamingContext) |
| ToString(EntityMode) | Public | Internal | 1 method | NHibernate.EntityModeHelper.ToString(EntityMode) |
| Parse(String) | Public | Internal | 1 method | NHibernate.EntityModeHelper.Parse(String) |
| .ctor(String) | Public | Internal | 10 methods | NHibernate.TransientObjectException..ctor(String) |
| .ctor(SerializationInfo,StreamingContext) | Protected | Private | 0 method | NHibernate.TransientObjectException..ctor(SerializationInfo ,StreamingContext) |
| .ctor(Exception,String,Boolean,Type,String) | Public | Internal | 4 methods | NHibernate.PropertyAccessException..ctor(Exception,String,Boolean,Type ,String) |
| .ctor(Exception,String,Boolean,Type) | Public | Internal | 1 method | NHibernate.PropertyAccessException..ctor(Exception,String,Boolean,Type ) |
| get_PersistentType() | Public | Private | 0 method | NHibernate.PropertyAccessException.get_PersistentType() |
| .ctor(SerializationInfo,StreamingContext) | Protected | Private | 0 method | NHibernate.PropertyAccessException..ctor(SerializationInfo ,StreamingContext) |
| .ctor(String) | Public | Internal | 6 methods | NHibernate.PersistentObjectException..ctor(String) |
| .ctor(SerializationInfo,StreamingContext) | Protected | Private | 0 method | NHibernate.PersistentObjectException..ctor(SerializationInfo ,StreamingContext) |
| GreaterThan(LockMode) | Public | Internal | 4 methods | NHibernate.LockMode.GreaterThan(LockMode) |
| LessThan(LockMode) | Public | Internal | 4 methods | NHibernate.LockMode.LessThan(LockMode) |
| Equals(LockMode) | Public | Private | 1 method | NHibernate.LockMode.Equals(LockMode) |
| Convert(String) | Public | Internal | 1 method | NHibernate.ConnectionReleaseModeParser.Convert(String) |
| ToString(ConnectionReleaseMode) | Public | Internal | 2 methods | NHibernate.ConnectionReleaseModeParser.ToString(ConnectionReleaseMode) |
| get_Type() | Public | Private | 0 method | NHibernate.DuplicateMappingException.get_Type() |
| get_Name() | Public | Private | 0 method | NHibernate.DuplicateMappingException.get_Name() |
| .ctor(String,String,String) | Public | Internal | 2 methods | NHibernate.DuplicateMappingException..ctor(String,String,String) |
| .ctor(String,String) | Public | Internal | 5 methods | NHibernate.DuplicateMappingException..ctor(String,String) |
| .ctor(SerializationInfo,StreamingContext) | Public | Private | 0 method | NHibernate.DuplicateMappingException..ctor(SerializationInfo ,StreamingContext) |
| .ctor(String) | Public | Internal | 2 methods | NHibernate.TypeMismatchException..ctor(String) |
| .ctor(String,Exception) | Public | Private | 0 method | NHibernate.TypeMismatchException..ctor(String,Exception) |
| .ctor(SerializationInfo,StreamingContext) | Protected | Private | 0 method | NHibernate.TypeMismatchException..ctor(SerializationInfo ,StreamingContext) |
Statistics
| Stat | Visibility | CouldBeDeclared | MethodsCallingMe |
|---|---|---|---|
| Sum: | 0 | 0 | 0 |
| Average: | 0 | 0 | 0 |
| Minimum: | 0 | 0 | 0 |
| Maximum: | 0 | 0 | 0 |
| Standard deviation: | 0 | 0 | 0 |
| Variance: | 0 | 0 | 0 |
| Rule warning: Types that could have a lower visibility |
// <Name>Types that could have a lower visibility</Name>
warnif count > 0 from t in JustMyCode.Types where
t.Visibility != t.OptimalVisibility &&
!t.HasAttribute("NDepend.Attributes.CannotDecreaseVisibilityAttribute".AllowNoMatch()) &&
!t.HasAttribute("NDepend.Attributes.IsNotDeadCodeAttribute".AllowNoMatch())
// If you don't want to link NDepend.API.dll, you can use your own attributes and adapt this rule.
select new { t, t.Visibility ,
CouldBeDeclared = t.OptimalVisibility,
t.TypesUsingMe }
warnif count > 0 from t in JustMyCode.Types where
t.Visibility != t.OptimalVisibility &&
!t.HasAttribute("NDepend.Attributes.CannotDecreaseVisibilityAttribute".AllowNoMatch()) &&
!t.HasAttribute("NDepend.Attributes.IsNotDeadCodeAttribute".AllowNoMatch())
// If you don't want to link NDepend.API.dll, you can use your own attributes and adapt this rule.
select new { t, t.Visibility ,
CouldBeDeclared = t.OptimalVisibility,
t.TypesUsingMe }
1,387 types matched
The following list of types is truncated and contains only the first 100 types of the 1387 types matched. All matched types could be listed in the report by unchecking the option:
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched types.
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched types.
| types | Visibility | CouldBeDeclared | TypesUsingMe | Full Name |
|---|---|---|---|---|
| types | Visibility | CouldBeDeclared | TypesUsingMe | Full Name |
| IQueryExpression | Public | Internal | 14 types | NHibernate.IQueryExpression |
| NHibernateUtil | Public | Internal | 64 types | NHibernate.NHibernateUtil |
| IQuery | Public | Internal | 31 types | NHibernate.IQuery |
| ISQLQuery | Public | Internal | 5 types | NHibernate.ISQLQuery |
| TransactionException | Public | Internal | 1 type | NHibernate.TransactionException |
| IdentityEqualityComparer | Public | Internal | 2 types | NHibernate.IdentityEqualityComparer |
| ITransaction | Public | Internal | 17 types | NHibernate.ITransaction |
| StaleObjectStateException | Public | Internal | 6 types | NHibernate.StaleObjectStateException |
| InvalidProxyTypeException | Public | Internal | 1 type | NHibernate.InvalidProxyTypeException |
| FKUnmatchingColumnsException | Public | Internal | 1 type | NHibernate.FKUnmatchingColumnsException |
| LazyInitializationException | Public | Internal | 3 types | NHibernate.LazyInitializationException |
| IInterceptor | Public | Internal | 26 types | NHibernate.IInterceptor |
| PropertyValueException | Public | Internal | 1 type | NHibernate.PropertyValueException |
| ISessionFactory | Public | Internal | 42 types | NHibernate.ISessionFactory |
| IDetachedQuery | Public | Internal | 4 types | NHibernate.IDetachedQuery |
| WrongClassException | Public | Internal | 2 types | NHibernate.WrongClassException |
| ObjectDeletedException | Public | Internal | 5 types | NHibernate.ObjectDeletedException |
| AssertionFailure | Public | Internal | 40 types | NHibernate.AssertionFailure |
| IFilter | Public | Internal | 110 types | NHibernate.IFilter |
| ILoggerFactory | Public | Internal | 3 types | NHibernate.ILoggerFactory |
| NoLoggingLoggerFactory | Public | Internal | 1 type | NHibernate.NoLoggingLoggerFactory |
| NoLoggingInternalLogger | Public | Internal | 1 type | NHibernate.NoLoggingInternalLogger |
| Log4NetLoggerFactory | Public | Internal | 1 type | NHibernate.Log4NetLoggerFactory |
| Log4NetLogger | Public | Internal | 1 type | NHibernate.Log4NetLogger |
| IQueryOver | Public | Internal | 9 types | NHibernate.IQueryOver |
| IQueryOver<TRoot> | Public | Internal | 5 types | NHibernate.IQueryOver<TRoot> |
| IQueryOver<TRoot,TSubType> | Public | Internal | 18 types | NHibernate.IQueryOver<TRoot,TSubType> |
| NonUniqueResultException | Public | Internal | 1 type | NHibernate.NonUniqueResultException |
| ICriteria | Public | Internal | 70 types | NHibernate.ICriteria |
| SessionException | Public | Internal | 2 types | NHibernate.SessionException |
| PropertyNotFoundException | Public | Internal | 9 types | NHibernate.PropertyNotFoundException |
| NonUniqueObjectException | Public | Internal | 3 types | NHibernate.NonUniqueObjectException |
| IMultiCriteria | Public | Internal | 5 types | NHibernate.IMultiCriteria |
| EmptyInterceptor | Public | Internal | 2 types | NHibernate.EmptyInterceptor |
| CriteriaTransformer | Public | Internal | 0 type | NHibernate.CriteriaTransformer |
| EntityModeEqualityComparer | Public | Internal | 1 type | NHibernate.EntityModeEqualityComparer |
| ReplicationMode | Public | Internal | 9 types | NHibernate.ReplicationMode |
| ISession | Public | Internal | 35 types | NHibernate.ISession |
| CallbackException | Public | Internal | 0 type | NHibernate.CallbackException |
| IMultiQuery | Public | Internal | 5 types | NHibernate.IMultiQuery |
| EntityModeHelper | Public | Internal | 2 types | NHibernate.EntityModeHelper |
| TransientObjectException | Public | Internal | 11 types | NHibernate.TransientObjectException |
| PropertyAccessException | Public | Internal | 5 types | NHibernate.PropertyAccessException |
| PersistentObjectException | Public | Internal | 6 types | NHibernate.PersistentObjectException |
| LockMode | Public | Internal | 81 types | NHibernate.LockMode |
| IStatelessSession | Public | Internal | 5 types | NHibernate.IStatelessSession |
| ConnectionReleaseModeParser | Public | Internal | 3 types | NHibernate.ConnectionReleaseModeParser |
| DuplicateMappingException | Public | Internal | 1 type | NHibernate.DuplicateMappingException |
| TypeMismatchException | Public | Internal | 2 types | NHibernate.TypeMismatchException |
| IDatabinder | Public | Internal | 0 type | NHibernate.IDatabinder |
| QueryParameterException | Public | Internal | 1 type | NHibernate.QueryParameterException |
| IFutureValue<T> | Public | Internal | 10 types | NHibernate.IFutureValue<T> |
| ObjectNotFoundException | Public | Internal | 1 type | NHibernate.ObjectNotFoundException |
| InstantiationException | Public | Internal | 7 types | NHibernate.InstantiationException |
| LinkedHashMap<TKey,TValue> | Public | Internal | 17 types | NHibernate.Util.LinkedHashMap<TKey,TValue> |
| LinkedHashMap<TKey,TValue>+Entry | Protected | Private | 6 types | NHibernate.Util.LinkedHashMap<TKey,TValue>+Entry |
| LinkedHashMap<TKey,TValue>+BackwardEnumerator<T> | Protected | Private | 1 type | NHibernate.Util.LinkedHashMap<TKey,TValue>+BackwardEnumerator<T> |
| EqualsHelper | Public | Internal | 2 types | NHibernate.Util.EqualsHelper |
| AssemblyQualifiedTypeName | Public | Internal | 9 types | NHibernate.Util.AssemblyQualifiedTypeName |
| StringHelper | Public | Internal | 122 types | NHibernate.Util.StringHelper |
| ThreadSafeDictionary<TKey,TValue> | Public | Internal | 3 types | NHibernate.Util.ThreadSafeDictionary<TKey,TValue> |
| ParserException | Public | Internal | 2 types | NHibernate.Util.ParserException |
| TypeNameParser | Public | Internal | 7 types | NHibernate.Util.TypeNameParser |
| CollectionHelper | Public | Internal | 17 types | NHibernate.Util.CollectionHelper |
| CollectionHelper+EmptyEnumerableClass<T> | Public | Internal | 2 types | NHibernate.Util.CollectionHelper+EmptyEnumerableClass<T> |
| CollectionHelper+EmptyMapClass<TKey,TValue> | Public | Internal | 19 types | NHibernate.Util.CollectionHelper+EmptyMapClass<TKey,TValue> |
| ObjectUtils | Public | Internal | 0 type | NHibernate.Util.ObjectUtils |
| IdentitySet | Public | Internal | 3 types | NHibernate.Util.IdentitySet |
| NullableDictionary<TKey,TValue> | Public | Internal | 6 types | NHibernate.Util.NullableDictionary<TKey,TValue> |
| UnmodifiableDictionary<TKey,TValue> | Public | Internal | 4 types | NHibernate.Util.UnmodifiableDictionary<TKey,TValue> |
| JoinedEnumerable | Public | Internal | 1 type | NHibernate.Util.JoinedEnumerable |
| JoinedEnumerable<T> | Public | Internal | 7 types | NHibernate.Util.JoinedEnumerable<T> |
| CollectionPrinter | Public | Internal | 10 types | NHibernate.Util.CollectionPrinter |
| ADOExceptionReporter | Public | Internal | 2 types | NHibernate.Util.ADOExceptionReporter |
| SoftLimitMRUCache | Public | Internal | 1 type | NHibernate.Util.SoftLimitMRUCache |
| FilterHelper | Public | Internal | 4 types | NHibernate.Util.FilterHelper |
| ExpressionsHelper | Public | Internal | 1 type | NHibernate.Util.ExpressionsHelper |
| SerializationHelper | Public | Internal | 0 type | NHibernate.Util.SerializationHelper |
| PropertiesHelper | Public | Internal | 15 types | NHibernate.Util.PropertiesHelper |
| ArrayHelper | Public | Internal | 56 types | NHibernate.Util.ArrayHelper |
| IdentityMap | Public | Internal | 7 types | NHibernate.Util.IdentityMap |
| WeakRefWrapper | Public | Internal | 2 types | NHibernate.Util.WeakRefWrapper |
| WeakEnumerator | Public | Internal | 1 type | NHibernate.Util.WeakEnumerator |
| WeakHashtable | Public | Internal | 1 type | NHibernate.Util.WeakHashtable |
| SafetyEnumerable<T> | Public | Internal | 14 types | NHibernate.Util.SafetyEnumerable<T> |
| StringTokenizer | Public | Internal | 12 types | NHibernate.Util.StringTokenizer |
| LRUMap | Public | Internal | 2 types | NHibernate.Util.LRUMap |
| SingletonEnumerable<T> | Public | Internal | 4 types | NHibernate.Util.SingletonEnumerable<T> |
| SimpleMRUCache | Public | Internal | 1 type | NHibernate.Util.SimpleMRUCache |
| IUserType | Public | Internal | 5 types | NHibernate.UserTypes.IUserType |
| IEnhancedUserType | Public | Internal | 1 type | NHibernate.UserTypes.IEnhancedUserType |
| IUserVersionType | Public | Internal | 1 type | NHibernate.UserTypes.IUserVersionType |
| IParameterizedType | Public | Internal | 2 types | NHibernate.UserTypes.IParameterizedType |
| IUserCollectionType | Public | Internal | 2 types | NHibernate.UserTypes.IUserCollectionType |
| ICompositeUserType | Public | Internal | 3 types | NHibernate.UserTypes.ICompositeUserType |
| ILoggableUserType | Public | Internal | 0 type | NHibernate.UserTypes.ILoggableUserType |
| ForeignKeyDirection | Public | Internal | 19 types | NHibernate.Type.ForeignKeyDirection |
| ICacheAssembler | Public | Internal | 110 types | NHibernate.Type.ICacheAssembler |
| IType | Public | Internal | 468 types | NHibernate.Type.IType |
| IAssociationType | Public | Internal | 58 types | NHibernate.Type.IAssociationType |
Statistics
| Stat | Visibility | CouldBeDeclared | TypesUsingMe |
|---|---|---|---|
| Sum: | 0 | 0 | 0 |
| Average: | 0 | 0 | 0 |
| Minimum: | 0 | 0 | 0 |
| Maximum: | 0 | 0 | 0 |
| Standard deviation: | 0 | 0 | 0 |
| Variance: | 0 | 0 | 0 |
| Rule warning: Fields that could have a lower visibility |
// <Name>Fields that could have a lower visibility</Name>
warnif count > 0 from f in JustMyCode.Fields where
f.Visibility != f.OptimalVisibility &&
!f.HasAttribute("NDepend.Attributes.CannotDecreaseVisibilityAttribute".AllowNoMatch()) &&
!f.HasAttribute("NDepend.Attributes.IsNotDeadCodeAttribute".AllowNoMatch())
// If you don't want to link NDepend.API.dll, you can use your own attributes and adapt this rule.
select new { f,
f.Visibility ,
CouldBeDeclared = f.OptimalVisibility,
f.MethodsUsingMe }
warnif count > 0 from f in JustMyCode.Fields where
f.Visibility != f.OptimalVisibility &&
!f.HasAttribute("NDepend.Attributes.CannotDecreaseVisibilityAttribute".AllowNoMatch()) &&
!f.HasAttribute("NDepend.Attributes.IsNotDeadCodeAttribute".AllowNoMatch())
// If you don't want to link NDepend.API.dll, you can use your own attributes and adapt this rule.
select new { f,
f.Visibility ,
CouldBeDeclared = f.OptimalVisibility,
f.MethodsUsingMe }
1,117 fields matched
The following list of fields is truncated and contains only the first 100 fields of the 1117 fields matched. All matched fields could be listed in the report by unchecking the option:
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched fields.
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched fields.
| fields | Visibility | CouldBeDeclared | MethodsUsingMe | Full Name |
|---|---|---|---|---|
| fields | Visibility | CouldBeDeclared | MethodsUsingMe | Full Name |
| AnsiString | Public | Internal | 8 methods | NHibernate.NHibernateUtil.AnsiString |
| Binary | Public | Internal | 11 methods | NHibernate.NHibernateUtil.Binary |
| BinaryBlob | Public | Internal | 4 methods | NHibernate.NHibernateUtil.BinaryBlob |
| Boolean | Public | Internal | 13 methods | NHibernate.NHibernateUtil.Boolean |
| Byte | Public | Internal | 6 methods | NHibernate.NHibernateUtil.Byte |
| Character | Public | Internal | 11 methods | NHibernate.NHibernateUtil.Character |
| CultureInfo | Public | Internal | 2 methods | NHibernate.NHibernateUtil.CultureInfo |
| DateTime | Public | Internal | 13 methods | NHibernate.NHibernateUtil.DateTime |
| DateTime2 | Public | Internal | 3 methods | NHibernate.NHibernateUtil.DateTime2 |
| LocalDateTime | Public | Internal | 2 methods | NHibernate.NHibernateUtil.LocalDateTime |
| UtcDateTime | Public | Internal | 2 methods | NHibernate.NHibernateUtil.UtcDateTime |
| DateTimeOffset | Public | Internal | 3 methods | NHibernate.NHibernateUtil.DateTimeOffset |
| Date | Public | Internal | 9 methods | NHibernate.NHibernateUtil.Date |
| Decimal | Public | Internal | 10 methods | NHibernate.NHibernateUtil.Decimal |
| Double | Public | Internal | 24 methods | NHibernate.NHibernateUtil.Double |
| Currency | Public | Internal | 3 methods | NHibernate.NHibernateUtil.Currency |
| Guid | Public | Internal | 6 methods | NHibernate.NHibernateUtil.Guid |
| Int16 | Public | Internal | 9 methods | NHibernate.NHibernateUtil.Int16 |
| Int32 | Public | Internal | 39 methods | NHibernate.NHibernateUtil.Int32 |
| Int64 | Public | Internal | 17 methods | NHibernate.NHibernateUtil.Int64 |
| SByte | Public | Internal | 3 methods | NHibernate.NHibernateUtil.SByte |
| UInt16 | Public | Internal | 2 methods | NHibernate.NHibernateUtil.UInt16 |
| UInt32 | Public | Internal | 2 methods | NHibernate.NHibernateUtil.UInt32 |
| UInt64 | Public | Internal | 3 methods | NHibernate.NHibernateUtil.UInt64 |
| Single | Public | Internal | 13 methods | NHibernate.NHibernateUtil.Single |
| String | Public | Internal | 43 methods | NHibernate.NHibernateUtil.String |
| StringClob | Public | Internal | 4 methods | NHibernate.NHibernateUtil.StringClob |
| Time | Public | Internal | 10 methods | NHibernate.NHibernateUtil.Time |
| Ticks | Public | Internal | 2 methods | NHibernate.NHibernateUtil.Ticks |
| TimeAsTimeSpan | Public | Internal | 2 methods | NHibernate.NHibernateUtil.TimeAsTimeSpan |
| TimeSpan | Public | Internal | 2 methods | NHibernate.NHibernateUtil.TimeSpan |
| Timestamp | Public | Internal | 13 methods | NHibernate.NHibernateUtil.Timestamp |
| DbTimestamp | Public | Internal | 3 methods | NHibernate.NHibernateUtil.DbTimestamp |
| TrueFalse | Public | Internal | 2 methods | NHibernate.NHibernateUtil.TrueFalse |
| YesNo | Public | Internal | 2 methods | NHibernate.NHibernateUtil.YesNo |
| Class | Public | Internal | 3 methods | NHibernate.NHibernateUtil.Class |
| ClassMetaType | Public | Private | 1 method | NHibernate.NHibernateUtil.ClassMetaType |
| Serializable | Public | Internal | 5 methods | NHibernate.NHibernateUtil.Serializable |
| Object | Public | Internal | 2 methods | NHibernate.NHibernateUtil.Object |
| AnsiChar | Public | Internal | 2 methods | NHibernate.NHibernateUtil.AnsiChar |
| XmlDoc | Public | Internal | 2 methods | NHibernate.NHibernateUtil.XmlDoc |
| XDoc | Public | Internal | 2 methods | NHibernate.NHibernateUtil.XDoc |
| Uri | Public | Internal | 2 methods | NHibernate.NHibernateUtil.Uri |
| Exception | Public | Internal | 2 methods | NHibernate.ReplicationMode.Exception |
| Ignore | Public | Private | 1 method | NHibernate.ReplicationMode.Ignore |
| LatestVersion | Public | Private | 1 method | NHibernate.ReplicationMode.LatestVersion |
| Overwrite | Public | Private | 1 method | NHibernate.ReplicationMode.Overwrite |
| None | Public | Internal | 32 methods | NHibernate.LockMode.None |
| Read | Public | Internal | 16 methods | NHibernate.LockMode.Read |
| Upgrade | Public | Internal | 11 methods | NHibernate.LockMode.Upgrade |
| UpgradeNoWait | Public | Internal | 8 methods | NHibernate.LockMode.UpgradeNoWait |
| Write | Public | Internal | 8 methods | NHibernate.LockMode.Write |
| Force | Public | Internal | 8 methods | NHibernate.LockMode.Force |
| dictionary | Protected | Private | 3 methods | NHibernate.Util.LinkedHashMap<TKey,TValue>+BackwardEnumerator<T> .dictionary |
| version | Protected | Private | 2 methods | NHibernate.Util.LinkedHashMap<TKey,TValue>+BackwardEnumerator<T> .version |
| EmptyEnumerable | Public | Internal | 3 methods | NHibernate.Util.CollectionHelper.EmptyEnumerable |
| EmptyMap | Public | Private | 1 method | NHibernate.Util.CollectionHelper.EmptyMap |
| EmptyCollection | Public | Internal | 3 methods | NHibernate.Util.CollectionHelper.EmptyCollection |
| EmptyList | Public | Private | 1 method | NHibernate.Util.CollectionHelper.EmptyList |
| EmptyObjectArray | Public | Internal | 4 methods | NHibernate.Util.ArrayHelper.EmptyObjectArray |
| EmptyTypeArray | Public | Internal | 4 methods | NHibernate.Util.ArrayHelper.EmptyTypeArray |
| EmptyIntArray | Public | Internal | 2 methods | NHibernate.Util.ArrayHelper.EmptyIntArray |
| EmptyBoolArray | Public | Internal | 5 methods | NHibernate.Util.ArrayHelper.EmptyBoolArray |
| True | Public | Internal | 2 methods | NHibernate.Util.ArrayHelper.True |
| False | Public | Internal | 2 methods | NHibernate.Util.ArrayHelper.False |
| ForeignKeyFromParent | Public | Internal | 7 methods | NHibernate.Type.ForeignKeyDirection.ForeignKeyFromParent |
| ForeignKeyToParent | Public | Internal | 6 methods | NHibernate.Type.ForeignKeyDirection.ForeignKeyToParent |
| BaseDateValue | Public | Private | 2 methods | NHibernate.Type.DateType.BaseDateValue |
| Unknown | Public | Internal | 13 methods | NHibernate.Properties.BackrefPropertyAccessor.Unknown |
| columns | Internal | Private | 3 methods | NHibernate.Mapping.Table+ForeignKeyKey.columns |
| referencedClassName | Internal | Private | 1 method | NHibernate.Mapping.Table+ForeignKeyKey.referencedClassName |
| referencedColumns | Internal | Private | 3 methods | NHibernate.Mapping.Table+ForeignKeyKey.referencedColumns |
| UnfetchedProperty | Public | Internal | 12 methods | NHibernate.Intercept.LazyPropertyInitializer.UnfetchedProperty |
| MARKER | Public | Internal | 3 methods | NHibernate.Impl.FilterImpl.MARKER |
| entity | Internal | Private | 3 methods | NHibernate.Transform.DistinctRootEntityResultTransformer+Identity .entity |
| AliasToEntityMap | Public | Internal | 2 methods | NHibernate.Transform.Transformers.AliasToEntityMap |
| ToList | Public | Internal | 2 methods | NHibernate.Transform.Transformers.ToList |
| DistinctRootEntity | Public | Private | 1 method | NHibernate.Transform.Transformers.DistinctRootEntity |
| PassThrough | Public | Private | 1 method | NHibernate.Transform.Transformers.PassThrough |
| RootEntity | Public | Private | 1 method | NHibernate.Transform.Transformers.RootEntity |
| NotNull | Public | Internal | 5 methods | NHibernate.SqlCommand.InFragment.NotNull |
| Null | Public | Internal | 5 methods | NHibernate.SqlCommand.InFragment.Null |
| ParameterPosition | Public | Internal | 8 methods | NHibernate.SqlCommand.Parameter.ParameterPosition |
| Empty | Public | Internal | 17 methods | NHibernate.SqlCommand.SqlString.Empty |
| Placeholder | Public | Internal | 14 methods | NHibernate.SqlCommand.Template.Placeholder |
| context | Protected | Private | 3 methods | NHibernate.Context.ThreadLocalSessionContext.context |
| factory | Protected | Private | 4 methods | NHibernate.Context.ThreadLocalSessionContext.factory |
| IsInActiveTransaction | Public | Internal | 5 methods | NHibernate.Transaction .AdoNetWithDistributedTransactionFactory+DistributedTransactionContext .IsInActiveTransaction |
| Guid | Public | Internal | 2 methods | NHibernate.SqlTypes.SqlTypeFactory.Guid |
| Boolean | Public | Internal | 2 methods | NHibernate.SqlTypes.SqlTypeFactory.Boolean |
| Byte | Public | Internal | 3 methods | NHibernate.SqlTypes.SqlTypeFactory.Byte |
| Currency | Public | Internal | 2 methods | NHibernate.SqlTypes.SqlTypeFactory.Currency |
| Date | Public | Internal | 2 methods | NHibernate.SqlTypes.SqlTypeFactory.Date |
| DateTime | Public | Internal | 3 methods | NHibernate.SqlTypes.SqlTypeFactory.DateTime |
| DateTime2 | Public | Internal | 2 methods | NHibernate.SqlTypes.SqlTypeFactory.DateTime2 |
| DateTimeOffSet | Public | Internal | 2 methods | NHibernate.SqlTypes.SqlTypeFactory.DateTimeOffSet |
| Decimal | Public | Internal | 2 methods | NHibernate.SqlTypes.SqlTypeFactory.Decimal |
| Double | Public | Internal | 2 methods | NHibernate.SqlTypes.SqlTypeFactory.Double |
| Int16 | Public | Internal | 6 methods | NHibernate.SqlTypes.SqlTypeFactory.Int16 |
| Int32 | Public | Internal | 5 methods | NHibernate.SqlTypes.SqlTypeFactory.Int32 |
Statistics
| Stat | Visibility | CouldBeDeclared | MethodsUsingMe |
|---|---|---|---|
| Sum: | 0 | 0 | 0 |
| Average: | 0 | 0 | 0 |
| Minimum: | 0 | 0 | 0 |
| Maximum: | 0 | 0 | 0 |
| Standard deviation: | 0 | 0 | 0 |
| Variance: | 0 | 0 | 0 |
| Rule warning: Fields should be declared as private |
// <Name>Fields should be declared as private</Name>
warnif count > 0 from f in Application.Fields where
!f.IsPrivate &&
// These conditions filter cases where fields
// doesn't represent state that should be encapsulated.
!f.IsGeneratedByCompiler &&
!f.IsSpecialName &&
!f.IsInitOnly &&
!f.IsLiteral &&
!f.IsEnumValue
select new { f, f.SizeOfInst }
warnif count > 0 from f in Application.Fields where
!f.IsPrivate &&
// These conditions filter cases where fields
// doesn't represent state that should be encapsulated.
!f.IsGeneratedByCompiler &&
!f.IsSpecialName &&
!f.IsInitOnly &&
!f.IsLiteral &&
!f.IsEnumValue
select new { f, f.SizeOfInst }
1,018 fields matched
The following list of fields is truncated and contains only the first 100 fields of the 1018 fields matched. All matched fields could be listed in the report by unchecking the option:
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched fields.
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched fields.
| fields | Size of instance | Full Name |
|---|---|---|
| fields | Size of instance | Full Name |
| None | N/A | NHibernate.LockMode.None |
| Read | N/A | NHibernate.LockMode.Read |
| Upgrade | N/A | NHibernate.LockMode.Upgrade |
| UpgradeNoWait | N/A | NHibernate.LockMode.UpgradeNoWait |
| Write | N/A | NHibernate.LockMode.Write |
| current | 4 | NHibernate.Util.LinkedHashMap<TKey,TValue>+ForwardEnumerator<T> .current |
| ForeignKeyFromParent | N/A | NHibernate.Type.ForeignKeyDirection.ForeignKeyFromParent |
| ForeignKeyToParent | N/A | NHibernate.Type.ForeignKeyDirection.ForeignKeyToParent |
| tuplizerMapping | 4 | NHibernate.Type.ComponentType.tuplizerMapping |
| entityName | 4 | NHibernate.Type.AnyType+ObjectTypeCacheEntry.entityName |
| id | 4 | NHibernate.Type.AnyType+ObjectTypeCacheEntry.id |
| factory | 4 | NHibernate.Properties.XmlAccessor+XmlGetter.factory |
| propertyType | 4 | NHibernate.Properties.XmlAccessor+XmlGetter.propertyType |
| propertyType | 4 | NHibernate.Properties.XmlAccessor+XmlSetter.propertyType |
| uniqueInteger | 4 | NHibernate.Mapping.Column.uniqueInteger |
| referencedPropertyName | 4 | NHibernate.Mapping.ToOne.referencedPropertyName |
| columns | 4 | NHibernate.Mapping.Table+ForeignKeyKey.columns |
| referencedClassName | 4 | NHibernate.Mapping.Table+ForeignKeyKey.referencedClassName |
| referencedColumns | 4 | NHibernate.Mapping.Table+ForeignKeyKey.referencedColumns |
| name | 4 | NHibernate.Param.ParameterTranslationsImpl+NamedParamTempHolder.name |
| type | 4 | NHibernate.Param.ParameterTranslationsImpl+NamedParamTempHolder.type |
| parameterMetadata | 4 | NHibernate.Impl.AbstractQueryImpl.parameterMetadata |
| cacheable | 1 | NHibernate.Impl.AbstractDetachedQuery.cacheable |
| cacheRegion | 4 | NHibernate.Impl.AbstractDetachedQuery.cacheRegion |
| readOnly | 1 | NHibernate.Impl.AbstractDetachedQuery.readOnly |
| flushMode | 4 | NHibernate.Impl.AbstractDetachedQuery.flushMode |
| resultTransformer | 4 | NHibernate.Impl.AbstractDetachedQuery.resultTransformer |
| shouldIgnoredUnknownNamedParameters | 1 | NHibernate.Impl.AbstractDetachedQuery .shouldIgnoredUnknownNamedParameters |
| cacheMode | 5 | NHibernate.Impl.AbstractDetachedQuery.cacheMode |
| comment | 4 | NHibernate.Impl.AbstractDetachedQuery.comment |
| ParameterPosition | 5 | NHibernate.SqlCommand.Parameter.ParameterPosition |
| returnColumnName | 4 | NHibernate.SqlCommand.CaseFragment.returnColumnName |
| cases | 4 | NHibernate.SqlCommand.CaseFragment.cases |
| context | N/A | NHibernate.Context.ThreadLocalSessionContext.context |
| IsInActiveTransaction | 1 | NHibernate.Transaction .AdoNetWithDistributedTransactionFactory+DistributedTransactionContext .IsInActiveTransaction |
| loadCount | 8 | NHibernate.Stat.EntityStatistics.loadCount |
| updateCount | 8 | NHibernate.Stat.EntityStatistics.updateCount |
| insertCount | 8 | NHibernate.Stat.EntityStatistics.insertCount |
| deleteCount | 8 | NHibernate.Stat.EntityStatistics.deleteCount |
| fetchCount | 8 | NHibernate.Stat.EntityStatistics.fetchCount |
| optimisticFailureCount | 8 | NHibernate.Stat.EntityStatistics.optimisticFailureCount |
| loadCount | 8 | NHibernate.Stat.CollectionStatistics.loadCount |
| fetchCount | 8 | NHibernate.Stat.CollectionStatistics.fetchCount |
| updateCount | 8 | NHibernate.Stat.CollectionStatistics.updateCount |
| removeCount | 8 | NHibernate.Stat.CollectionStatistics.removeCount |
| recreateCount | 8 | NHibernate.Stat.CollectionStatistics.recreateCount |
| cacheHitCount | 8 | NHibernate.Stat.QueryStatistics.cacheHitCount |
| cacheMissCount | 8 | NHibernate.Stat.QueryStatistics.cacheMissCount |
| cachePutCount | 8 | NHibernate.Stat.QueryStatistics.cachePutCount |
| hitCount | 8 | NHibernate.Stat.SecondLevelCacheStatistics.hitCount |
| missCount | 8 | NHibernate.Stat.SecondLevelCacheStatistics.missCount |
| putCount | 8 | NHibernate.Stat.SecondLevelCacheStatistics.putCount |
| propertySpan | 4 | NHibernate.Tuple.Component.AbstractComponentTuplizer.propertySpan |
| getters | 4 | NHibernate.Tuple.Component.AbstractComponentTuplizer.getters |
| setters | 4 | NHibernate.Tuple.Component.AbstractComponentTuplizer.setters |
| instantiator | 4 | NHibernate.Tuple.Component.AbstractComponentTuplizer.instantiator |
| hasCustomAccessors | 1 | NHibernate.Tuple.Component.AbstractComponentTuplizer .hasCustomAccessors |
| propertySpan | 4 | NHibernate.Tuple.Entity.AbstractEntityTuplizer.propertySpan |
| getters | 4 | NHibernate.Tuple.Entity.AbstractEntityTuplizer.getters |
| setters | 4 | NHibernate.Tuple.Entity.AbstractEntityTuplizer.setters |
| hasCustomAccessors | 1 | NHibernate.Tuple.Entity.AbstractEntityTuplizer.hasCustomAccessors |
| Text | 4 | NHibernate.Dialect.Function.SQLFunctionTemplate+TemplateChunk.Text |
| ArgumentIndex | 4 | NHibernate.Dialect.Function.SQLFunctionTemplate+TemplateChunk .ArgumentIndex |
| helper | 4 | NHibernate.Loader.Loader.helper |
| result | 4 | NHibernate.Loader.Custom.Sql .SQLQueryParser+ParameterSubstitutionRecognizer.result |
| namedParameterBindPoints | 4 | NHibernate.Loader.Custom.Sql .SQLQueryParser+ParameterSubstitutionRecognizer .namedParameterBindPoints |
| parameterCount | 4 | NHibernate.Loader.Custom.Sql .SQLQueryParser+ParameterSubstitutionRecognizer.parameterCount |
| rowIdName | 4 | NHibernate.Persister.Entity.AbstractEntityPersister.rowIdName |
| propertyDefinedOnSubclass | 4 | NHibernate.Persister.Entity.AbstractEntityPersister .propertyDefinedOnSubclass |
| insertCallable | 4 | NHibernate.Persister.Entity.AbstractEntityPersister.insertCallable |
| updateCallable | 4 | NHibernate.Persister.Entity.AbstractEntityPersister.updateCallable |
| deleteCallable | 4 | NHibernate.Persister.Entity.AbstractEntityPersister.deleteCallable |
| customSQLInsert | 4 | NHibernate.Persister.Entity.AbstractEntityPersister.customSQLInsert |
| customSQLUpdate | 4 | NHibernate.Persister.Entity.AbstractEntityPersister.customSQLUpdate |
| customSQLDelete | 4 | NHibernate.Persister.Entity.AbstractEntityPersister.customSQLDelete |
| insertResultCheckStyles | 4 | NHibernate.Persister.Entity.AbstractEntityPersister .insertResultCheckStyles |
| updateResultCheckStyles | 4 | NHibernate.Persister.Entity.AbstractEntityPersister .updateResultCheckStyles |
| deleteResultCheckStyles | 4 | NHibernate.Persister.Entity.AbstractEntityPersister .deleteResultCheckStyles |
| indexContainsFormula | 1 | NHibernate.Persister.Collection.AbstractCollectionPersister .indexContainsFormula |
| elementIsPureFormula | 1 | NHibernate.Persister.Collection.AbstractCollectionPersister .elementIsPureFormula |
| criteria | 4 | NHibernate.Criterion.QueryOver.criteria |
| impl | 4 | NHibernate.Criterion.QueryOver.impl |
| ascending | 1 | NHibernate.Criterion.Order.ascending |
| propertyName | 4 | NHibernate.Criterion.Order.propertyName |
| projection | 4 | NHibernate.Criterion.Order.projection |
| root | 4 | NHibernate.Criterion.Lambda.QueryOverSubqueryBuilderBase<TReturn,TRoot ,TSubType,TBuilderType>.root |
| root | 4 | NHibernate.Criterion.Lambda.QueryOverJoinBuilderBase<TReturn,TRoot ,TSubType>.root |
| joinType | 4 | NHibernate.Criterion.Lambda.QueryOverJoinBuilderBase<TReturn,TRoot ,TSubType>.joinType |
| isNot | 1 | NHibernate.Criterion.Lambda.QueryOverRestrictionBuilderBase<TReturn ,TRoot,TSubType>.isNot |
| root | 4 | NHibernate.Criterion.Lambda.QueryOverOrderBuilderBase<TReturn,TRoot ,TSubType>.root |
| path | 4 | NHibernate.Criterion.Lambda.QueryOverOrderBuilderBase<TReturn,TRoot ,TSubType>.path |
| isAlias | 1 | NHibernate.Criterion.Lambda.QueryOverOrderBuilderBase<TReturn,TRoot ,TSubType>.isAlias |
| projection | 4 | NHibernate.Criterion.Lambda.QueryOverOrderBuilderBase<TReturn,TRoot ,TSubType>.projection |
| root | 4 | NHibernate.Criterion.Lambda.QueryOverFetchBuilderBase<TReturn,TRoot ,TSubType>.root |
| path | 4 | NHibernate.Criterion.Lambda.QueryOverFetchBuilderBase<TReturn,TRoot ,TSubType>.path |
| root | 4 | NHibernate.Criterion.Lambda.QueryOverSubqueryPropertyBuilderBase <TReturn,TRoot,TSubType>.root |
| path | 4 | NHibernate.Criterion.Lambda.QueryOverSubqueryPropertyBuilderBase <TReturn,TRoot,TSubType>.path |
| value | 4 | NHibernate.Criterion.Lambda.QueryOverSubqueryPropertyBuilderBase <TReturn,TRoot,TSubType>.value |
| root | 4 | NHibernate.Criterion.Lambda.QueryOverLockBuilderBase<TReturn,TRoot ,TSubType>.root |
| alias | 4 | NHibernate.Criterion.Lambda.QueryOverLockBuilderBase<TReturn,TRoot ,TSubType>.alias |
Statistics
| Stat | Size of instance |
|---|---|
| Sum: | 3 454 |
| Average: | 3.4679 |
| Minimum: | 1 |
| Maximum: | 8 |
| Standard deviation: | 1.3413 |
| Variance: | 1.7992 |
| Rule warning: Constructors of abstract classes should be declared as protected or private |
// <Name>Constructors of abstract classes should be declared as protected or private</Name>
// Constructors of an abstract class can only be accessed from this class and derived class.
// Declaring such a constructor with another visibility level is useless and potentially misleading.
warnif count > 0
from t in Application.Types where
t.IsClass &&
t.IsAbstract
let ctors = t.Constructors.Where(c => !c.IsProtected && !c.IsPrivate)
where ctors.Count() > 0
select new { t, ctors }
// Notice that if a constructor of an abstract class is declared as private,
// it can only be accessed from derived classes nested in the abstract class.
// Constructors of an abstract class can only be accessed from this class and derived class.
// Declaring such a constructor with another visibility level is useless and potentially misleading.
warnif count > 0
from t in Application.Types where
t.IsClass &&
t.IsAbstract
let ctors = t.Constructors.Where(c => !c.IsProtected && !c.IsPrivate)
where ctors.Count() > 0
select new { t, ctors }
// Notice that if a constructor of an abstract class is declared as private,
// it can only be accessed from derived classes nested in the abstract class.
32 types matched
| types | ctors | Full Name |
|---|---|---|
| types | ctors | Full Name |
| LinkedHashMap<TKey,TValue>+ForwardEnumerator<T> | 1 method | NHibernate.Util.LinkedHashMap<TKey,TValue>+ForwardEnumerator<T> |
| LinkedHashMap<TKey,TValue>+BackwardEnumerator<T> | 1 method | NHibernate.Util.LinkedHashMap<TKey,TValue>+BackwardEnumerator<T> |
| EntityType | 1 method | NHibernate.Type.EntityType |
| AbstractCharType | 1 method | NHibernate.Type.AbstractCharType |
| AbstractStringType | 1 method | NHibernate.Type.AbstractStringType |
| AbstractBinaryType | 2 methods | NHibernate.Type.AbstractBinaryType |
| XmlAccessor+XmlGetter | 1 method | NHibernate.Properties.XmlAccessor+XmlGetter |
| XmlAccessor+XmlSetter | 1 method | NHibernate.Properties.XmlAccessor+XmlSetter |
| ToOne | 1 method | NHibernate.Mapping.ToOne |
| AbstractFieldInterceptor | 1 method | NHibernate.Intercept.AbstractFieldInterceptor |
| EntityAction | 1 method | NHibernate.Action.EntityAction |
| AbstractSessionImpl | 3 methods | NHibernate.Impl.AbstractSessionImpl |
| AbstractComponentTuplizer | 1 method | NHibernate.Tuple.Component.AbstractComponentTuplizer |
| AbstractTableMetadata | 1 method | NHibernate.Dialect.Schema.AbstractTableMetadata |
| AbstractColumnMetaData | 1 method | NHibernate.Dialect.Schema.AbstractColumnMetaData |
| AbstractIndexMetadata | 1 method | NHibernate.Dialect.Schema.AbstractIndexMetadata |
| Loader | 1 method | NHibernate.Loader.Loader |
| BasicLoader | 1 method | NHibernate.Loader.BasicLoader |
| AbstractEntityJoinWalker | 2 methods | NHibernate.Loader.AbstractEntityJoinWalker |
| AbstractEntityLoader | 1 method | NHibernate.Loader.Entity.AbstractEntityLoader |
| CollectionJoinWalker | 1 method | NHibernate.Loader.Collection.CollectionJoinWalker |
| NonScalarReturn | 1 method | NHibernate.Loader.Custom.NonScalarReturn |
| FetchReturn | 1 method | NHibernate.Loader.Custom.FetchReturn |
| AbstractCollectionPersister | 1 method | NHibernate.Persister.Collection.AbstractCollectionPersister |
| AbstractLazyInitializer | 1 method | NHibernate.Proxy.AbstractLazyInitializer |
| BasicLazyInitializer | 1 method | NHibernate.Proxy.Poco.BasicLazyInitializer |
| AbstractSelectingDelegate | 1 method | NHibernate.Id.Insert.AbstractSelectingDelegate |
| AbstractVisitor | 1 method | NHibernate.Event.Default.AbstractVisitor |
| ProxyVisitor | 1 method | NHibernate.Event.Default.ProxyVisitor |
| AbstractPersistentCollection | 1 method | NHibernate.Collection.AbstractPersistentCollection |
| CascadeStyle | 1 method | NHibernate.Engine.CascadeStyle |
| NativeSQLQueryNonScalarReturn | 1 method | NHibernate.Engine.Query.Sql.NativeSQLQueryNonScalarReturn |
Statistics
| Stat | ctors |
|---|---|
| Sum: | 0 |
| Average: | 0 |
| Minimum: | 0 |
| Maximum: | 0 |
| Standard deviation: | 0 |
| Variance: | 0 |
| Rule warning: Avoid public methods not publicly visible |
//<Name>Avoid public methods not publicly visible</Name>
// Matched methods are declared public but are not publicly visible by assemblies consumers.
// Their visibility level must be decreased.
warnif count > 0
from m in JustMyCode.Methods where
!m.IsPubliclyVisible && m.IsPublic &&
// Eliminate virtual methods
!m.IsVirtual &&
// Eliminate interface and delegate types
!m.ParentType.IsInterface &&
!m.ParentType.IsDelegate &&
// Eliminate default constructors
!(m.IsConstructor && m.NbParameters == 0) &&
// Eliminate operators that must be declared public
!m.IsOperator &&
// Eliminate methods generated by compiler
!m.IsGeneratedByCompiler
select m
// Matched methods are declared public but are not publicly visible by assemblies consumers.
// Their visibility level must be decreased.
warnif count > 0
from m in JustMyCode.Methods where
!m.IsPubliclyVisible && m.IsPublic &&
// Eliminate virtual methods
!m.IsVirtual &&
// Eliminate interface and delegate types
!m.ParentType.IsInterface &&
!m.ParentType.IsDelegate &&
// Eliminate default constructors
!(m.IsConstructor && m.NbParameters == 0) &&
// Eliminate operators that must be declared public
!m.IsOperator &&
// Eliminate methods generated by compiler
!m.IsGeneratedByCompiler
select m
173 methods matched
The following list of methods is truncated and contains only the first 100 methods of the 173 methods matched. All matched methods could be listed in the report by unchecking the option:
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched methods.
NDepend Project Properties > Report > Avoid too big report for large code base > Don't show more than 100 matched items for a Rule violated
It is recommended to use the NDepend interactive UI capabilities to browse a large list of matched methods.
| methods | Full Name |
|---|---|
| methods | Full Name |
| .ctor(String) | NHibernate.ReplicationMode+ExceptionReplicationMode..ctor(String) |
| .ctor(String) | NHibernate.ReplicationMode+IgnoreReplicationMode..ctor(String) |
| .ctor(String) | NHibernate.ReplicationMode+LatestVersionReplicationMode..ctor(String) |
| .ctor(String) | NHibernate.ReplicationMode+OverwriteReplicationMode..ctor(String) |
| .ctor(LinkedHashMap<TKey,TValue>) | NHibernate.Util.LinkedHashMap<TKey,TValue>+KeyCollection..ctor (LinkedHashMap<TKey,TValue>) |
| .ctor(LinkedHashMap<TKey,TValue>) | NHibernate.Util.LinkedHashMap<TKey,TValue>+KeyCollection+Enumerator. .ctor(LinkedHashMap<TKey,TValue>) |
| .ctor(LinkedHashMap<TKey,TValue>) | NHibernate.Util.LinkedHashMap<TKey,TValue>+ForwardEnumerator<T>..ctor (LinkedHashMap<TKey,TValue>) |
| .ctor(LinkedHashMap<TKey,TValue>) | NHibernate.Util.LinkedHashMap<TKey,TValue>+ValuesCollection..ctor (LinkedHashMap<TKey,TValue>) |
| .ctor(LinkedHashMap<TKey,TValue>) | NHibernate.Util.LinkedHashMap<TKey,TValue>+ValuesCollection+Enumerator ..ctor(LinkedHashMap<TKey,TValue>) |
| .ctor(LinkedHashMap<TKey,TValue>) | NHibernate.Util.LinkedHashMap<TKey,TValue>+Enumerator..ctor (LinkedHashMap<TKey,TValue>) |
| .ctor(Object,Object) | NHibernate.Util.SequencedHashMap+Entry..ctor(Object,Object) |
| get_Key() | NHibernate.Util.SequencedHashMap+Entry.get_Key() |
| get_Value() | NHibernate.Util.SequencedHashMap+Entry.get_Value() |
| set_Value(Object) | NHibernate.Util.SequencedHashMap+Entry.set_Value(Object) |
| get_Next() | NHibernate.Util.SequencedHashMap+Entry.get_Next() |
| set_Next(SequencedHashMap+Entry) | NHibernate.Util.SequencedHashMap+Entry.set_Next(SequencedHashMap+Entry ) |
| get_Prev() | NHibernate.Util.SequencedHashMap+Entry.get_Prev() |
| set_Prev(SequencedHashMap+Entry) | NHibernate.Util.SequencedHashMap+Entry.set_Prev(SequencedHashMap+Entry ) |
| .ctor(SequencedHashMap) | NHibernate.Util.SequencedHashMap+KeyCollection..ctor(SequencedHashMap) |
| Contains(Object) | NHibernate.Util.SequencedHashMap+KeyCollection.Contains(Object) |
| .ctor(SequencedHashMap) | NHibernate.Util.SequencedHashMap+ValuesCollection..ctor (SequencedHashMap) |
| Contains(Object) | NHibernate.Util.SequencedHashMap+ValuesCollection.Contains(Object) |
| .ctor(SequencedHashMap,SequencedHashMap+ReturnType) | NHibernate.Util.SequencedHashMap+OrderedEnumerator..ctor (SequencedHashMap,SequencedHashMap+ReturnType) |
| .ctor(IEnumerable<T>[]) | NHibernate.Util.JoinedEnumerable<T>+JoinedEnumerator..ctor(IEnumerable <T>[]) |
| .ctor(StringTokenizer) | NHibernate.Util.StringTokenizer+StringTokenizerEnumerator..ctor (StringTokenizer) |
| .ctor(T) | NHibernate.Util.SingletonEnumerable<T>+SingletonEnumerator..ctor(T) |
| Equals(ForeignKeyDirection+ForeignKeyFromParentClass) | NHibernate.Type.ForeignKeyDirection+ForeignKeyFromParentClass.Equals (ForeignKeyDirection+ForeignKeyFromParentClass) |
| Equals(ForeignKeyDirection+ForeignKeyToParentClass) | NHibernate.Type.ForeignKeyDirection+ForeignKeyToParentClass.Equals (ForeignKeyDirection+ForeignKeyToParentClass) |
| .ctor(BackrefPropertyAccessor) | NHibernate.Properties.BackrefPropertyAccessor+BackrefGetter..ctor (BackrefPropertyAccessor) |
| .ctor(String,IType,Int32) | NHibernate.Param.CollectionFilterKeyParameterSpecification..ctor (String,IType,Int32) |
| GetDataTypeName(Int32) | NHibernate.Driver.NDataReader+NResult.GetDataTypeName(Int32) |
| GetFieldCount() | NHibernate.Driver.NDataReader+NResult.GetFieldCount() |
| GetFieldType(Int32) | NHibernate.Driver.NDataReader+NResult.GetFieldType(Int32) |
| GetName(Int32) | NHibernate.Driver.NDataReader+NResult.GetName(Int32) |
| GetSchemaTable() | NHibernate.Driver.NDataReader+NResult.GetSchemaTable() |
| GetOrdinal(String) | NHibernate.Driver.NDataReader+NResult.GetOrdinal(String) |
| GetValue(Int32,Int32) | NHibernate.Driver.NDataReader+NResult.GetValue(Int32,Int32) |
| GetValue(Int32,String) | NHibernate.Driver.NDataReader+NResult.GetValue(Int32,String) |
| GetValues(Int32,Object[]) | NHibernate.Driver.NDataReader+NResult.GetValues(Int32,Object[]) |
| get_RowCount() | NHibernate.Driver.NDataReader+NResult.get_RowCount() |
| .ctor(IList) | NHibernate.Impl.MultipleQueriesCacheAssembler..ctor(IList) |
| GetResultFromQueryCache(ISessionImplementor,QueryParameters,ISet <String>,IQueryCache,QueryKey) | NHibernate.Impl.MultipleQueriesCacheAssembler.GetResultFromQueryCache (ISessionImplementor,QueryParameters,ISet<String>,IQueryCache,QueryKey ) |
| .ctor(DelayedEnumerator<T>+GetResult) | NHibernate.Impl.DelayedEnumerator<T>..ctor(DelayedEnumerator<T >+GetResult) |
| get_Enumerable() | NHibernate.Impl.DelayedEnumerator<T>.get_Enumerable() |
| get_QueryExpression() | NHibernate.Impl.ExpressionQueryImpl.get_QueryExpression() |
| .ctor(IQueryExpression,ISessionImplementor,ParameterMetadata) | NHibernate.Impl.ExpressionQueryImpl..ctor(IQueryExpression ,ISessionImplementor,ParameterMetadata) |
| .ctor(IQueryExpression,IASTNode,String) | NHibernate.Impl.ExpandedQueryExpression..ctor(IQueryExpression ,IASTNode,String) |
| Expand(IASTNode,Dictionary<String,List<String>>) | NHibernate.Impl.ParameterExpander.Expand(IASTNode,Dictionary<String ,List<String>>) |
| LocateParameters(IASTNode,HashSet<String>) | NHibernate.Impl.ParameterDetector.LocateParameters(IASTNode,HashSet <String>) |
| .ctor(FutureValue<T>+GetResult) | NHibernate.Impl.FutureValue<T>..ctor(FutureValue<T>+GetResult) |
| .ctor(SqlStringBuilder) | NHibernate.SqlCommand.SqlStringBuilder+AddingSqlStringVisitor..ctor (SqlStringBuilder) |
| .ctor(String,IType) | NHibernate.Dialect.FirebirdDialect+CastedFunction..ctor(String,IType) |
| .ctor(MsSql2000Dialect,IDictionary<String,LockMode>) | NHibernate.Dialect.MsSql2000Dialect+LockHintAppender..ctor (MsSql2000Dialect,IDictionary<String,LockMode>) |
| ReplaceMatch(Match) | NHibernate.Dialect.MsSql2000Dialect+LockHintAppender.ReplaceMatch (Match) |
| .ctor(String,Int32) | NHibernate.Dialect.Function.SQLFunctionTemplate+TemplateChunk..ctor (String,Int32) |
| .ctor(SQLQueryReturnProcessor+ResultAliasContext) | NHibernate.Loader.Custom.Sql.SQLCustomQuery+ParserContext..ctor (SQLQueryReturnProcessor+ResultAliasContext) |
| .ctor(ValueInclusion[]) | NHibernate.Persister.Entity .AbstractEntityPersister+NoneInclusionChecker..ctor(ValueInclusion[]) |
| .ctor(Boolean[]) | NHibernate.Persister.Entity .AbstractEntityPersister+FullInclusionChecker..ctor(Boolean[]) |
| .ctor(Object[],Boolean[],ISessionImplementor,Object ,AbstractEntityPersister) | NHibernate.Persister.Entity .AbstractEntityPersister+GeneratedIdentifierBinder..ctor(Object[] ,Boolean[],ISessionImplementor,Object,AbstractEntityPersister) |
| get_PathExpressionParser() | NHibernate.Hql.Classic.FunctionStack+FunctionHolder .get_PathExpressionParser() |
| get_SqlFunction() | NHibernate.Hql.Classic.FunctionStack+FunctionHolder.get_SqlFunction() |
| get_FunctionGrammar() | NHibernate.Hql.Classic.FunctionStack+FunctionHolder .get_FunctionGrammar() |
| .ctor(ISQLFunction) | NHibernate.Hql.Classic.FunctionStack+FunctionHolder..ctor(ISQLFunction ) |
| get_FirstValidColumnType() | NHibernate.Hql.Classic.FunctionStack+FunctionHolder .get_FirstValidColumnType() |
| set_FirstValidColumnType(IType) | NHibernate.Hql.Classic.FunctionStack+FunctionHolder .set_FirstValidColumnType(IType) |
| Add(String,ICollectionPersister,String) | NHibernate.Hql.Classic.QueryTranslator+FetchedCollections.Add(String ,ICollectionPersister,String) |
| get_CollectionOwners() | NHibernate.Hql.Classic.QueryTranslator+FetchedCollections .get_CollectionOwners() |
| get_CollectionPersisters() | NHibernate.Hql.Classic.QueryTranslator+FetchedCollections .get_CollectionPersisters() |
| get_CollectionSuffixes() | NHibernate.Hql.Classic.QueryTranslator+FetchedCollections .get_CollectionSuffixes() |
| AddSelectFragmentString(QuerySelect) | NHibernate.Hql.Classic.QueryTranslator+FetchedCollections .AddSelectFragmentString(QuerySelect) |
| AddOrderBy(QuerySelect) | NHibernate.Hql.Classic.QueryTranslator+FetchedCollections.AddOrderBy (QuerySelect) |
| InitializeCollectionOwnerColumns(IList<String>) | NHibernate.Hql.Classic.QueryTranslator+FetchedCollections .InitializeCollectionOwnerColumns(IList<String>) |
| .ctor(QueryTranslator) | NHibernate.Hql.Classic.QueryTranslator+Selector..ctor(QueryTranslator) |
| .ctor(QueryTranslator) | NHibernate.Hql.Classic.QueryTranslator+ParameterTranslations..ctor (QueryTranslator) |
| .ctor(FromElement) | NHibernate.Hql.Ast.ANTLR.WithClauseVisitor..ctor(FromElement) |
| GetReferencedFromElement() | NHibernate.Hql.Ast.ANTLR.WithClauseVisitor.GetReferencedFromElement() |
| GetJoinAlias() | NHibernate.Hql.Ast.ANTLR.WithClauseVisitor.GetJoinAlias() |
| .ctor(ISessionFactoryImplementor) | NHibernate.Hql.Ast.ANTLR.PolymorphicQuerySourceDetector..ctor (ISessionFactoryImplementor) |
| Process(IASTNode) | NHibernate.Hql.Ast.ANTLR.PolymorphicQuerySourceDetector.Process (IASTNode) |
| .ctor(ISessionFactoryImplementor) | NHibernate.Hql.Ast.ANTLR.HqlParseEngine+ConstantConverter..ctor (ISessionFactoryImplementor) |
| .ctor(IASTNode,QueryTranslatorImpl,ISessionFactoryImplementor ,IDictionary<String,String>,String) | NHibernate.Hql.Ast.ANTLR.HqlSqlTranslator..ctor(IASTNode ,QueryTranslatorImpl,ISessionFactoryImplementor,IDictionary<String ,String>,String) |
| get_SqlStatement() | NHibernate.Hql.Ast.ANTLR.HqlSqlTranslator.get_SqlStatement() |
| Translate() | NHibernate.Hql.Ast.ANTLR.HqlSqlTranslator.Translate() |
| .ctor(IStatement,ISessionFactoryImplementor) | NHibernate.Hql.Ast.ANTLR.HqlSqlGenerator..ctor(IStatement ,ISessionFactoryImplementor) |
| get_Sql() | NHibernate.Hql.Ast.ANTLR.HqlSqlGenerator.get_Sql() |
| get_CollectionParameters() | NHibernate.Hql.Ast.ANTLR.HqlSqlGenerator.get_CollectionParameters() |
| Generate() | NHibernate.Hql.Ast.ANTLR.HqlSqlGenerator.Generate() |
| .ctor(String) | NHibernate.Hql.Ast.ANTLR.CaseInsensitiveStringStream..ctor(String) |
| .ctor(IASTNode) | NHibernate.Hql.Ast.ANTLR.QuerySourceDetector..ctor(IASTNode) |
| LocateQuerySources() | NHibernate.Hql.Ast.ANTLR.QuerySourceDetector.LocateQuerySources() |
| get_Args() | NHibernate.Hql.Ast.ANTLR.SqlGenerator+FunctionArguments.get_Args() |
| IsCollectionProperty(String) | NHibernate.Hql.Ast.ANTLR.CollectionProperties.IsCollectionProperty (String) |
| GetNormalizedPropertyName(String) | NHibernate.Hql.Ast.ANTLR.CollectionProperties .GetNormalizedPropertyName(String) |
| IsAnyCollectionProperty(String) | NHibernate.Hql.Ast.ANTLR.CollectionProperties.IsAnyCollectionProperty (String) |
| ShowAsString(IASTNode,String) | NHibernate.Hql.Ast.ANTLR.Util.ASTPrinter.ShowAsString(IASTNode,String) |
| .ctor(IToken) | NHibernate.Hql.Ast.ANTLR.Tree.CountNode..ctor(IToken) |
| .ctor(IQueryable,IInternalLogger,ISessionImplementor) | NHibernate.Hql.Ast.ANTLR.Exec .AbstractStatementExecutor+TmpIdTableCreationIsolatedWork..ctor (IQueryable,IInternalLogger,ISessionImplementor) |
| .ctor(IQueryable,IInternalLogger,ISessionImplementor) | NHibernate.Hql.Ast.ANTLR.Exec .AbstractStatementExecutor+TmpIdTableDropIsolatedWork..ctor(IQueryable ,IInternalLogger,ISessionImplementor) |
| .ctor(ISessionImplementor,SequenceStructure) | NHibernate.Id.Enhanced.SequenceStructure+SequenceAccessCallback..ctor (ISessionImplementor,SequenceStructure) |
| .ctor(ISessionImplementor,TableStructure) | NHibernate.Id.Enhanced.TableStructure+TableAccessCallback..ctor (ISessionImplementor,TableStructure) |
Statistics
| Stat |
|---|
| Sum: |
| Average: |
| Minimum: |
| Maximum: |
| Standard deviation: |
| Variance: |
| Purity - Immutability - Side-Effects |
|
|
| Rule warning: Fields should be marked as ReadOnly when possible |
// <Name>Fields should be marked as ReadOnly when possible</Name>
warnif count > 0
from f in JustMyCode.Fields where
f.IsImmutable &&
!
warnif count > 0
from f in JustMyCode.Fields where
f.IsImmutable &&
!



