report date | 20 Mar 2024 10:42:03 |
analysis duration | 00:09.407 |
ndepend version | 2024.1.0 Professional Developer/Build-Machine Edition |
baseline | Compare with project {NodaTime 3.0.0} most recent analysis result (analysis result obtained on 19 Mar 2024 10:15:27) |
code coverage data | Loaded! Code Coverage metrics, Queries and Rules relative to code Coverage, can be used. |
Diagrams
Application Metrics
Note: Further Application Statistics are available.
|
- The number of source files with no issue.
- By default, these source files are not listed below. They are listed when one of the option List all source files or Only list source files with issues and files added or modified since the baseline is enabled in NDepend Project Properties > Report.
- The number of source files with at least one unresolved issue but no new issue added since the baseline.
- Sort the column #Un-resolved Issues to list these files first.
- The number of source files with at least one new issue introduced since the baseline.
- Sort the column #New Issues to list these files first.
- The setting "List all source files" is enabled. Less source files can be listed by changing this setting from NDepend Project Properties > Report.
Source File Name | #New Issues | #Un- resolved | #Fixed | New Debt | Debt | %Cov | #Lines | Project | Path | |
---|---|---|---|---|---|---|---|---|---|---|
| |m100|000| 12 | |m12|057| 9 | |m14|013| 2 | |m60|002| 48min | |m11|021| 2h 47min | |c87|142| 87.59% | |m42|012| 532 | NodaTime | .\TimeZones | |
| |m58|001| 7 | |m52|007| 38 | |m0|124| 0 | |m67|001| 54min | |m38|003| 1d 1h | |c100|081| 100% | |m81|002| 1 009 | NodaTime | . | |
| |m33|002| 4 | |m27|025| 20 | |m0|123| 0 | |m99|000| 1h 20min | |m15|017| 3h 36min | |c98|128| 98.33% | |m31|016| 395 | NodaTime | . | |
| |m25|003| 3 | |m0|174| 0 | |m14|014| 2 | |m7|004| 6min | |m0|111| 6min | |c66|145| 66.67% | |m2|138| 45 | NodaTime | .\Text | |
| |m16|004| 2 | |m76|003| 55 | |m14|015| 2 | |m2|007| 2min 0s | |m81|001| 2d 3h | |c99|119| 99.2% | |m55|009| 693 | NodaTime | .\Text\Patterns | |
| |m16|007| 2 | |m73|004| 53 | |m78|001| 11 | |m2|006| 2min 0s | |m36|004| 1d 0h | |c100|089| 100% | |m39|014| 489 | NodaTime | .\Globalization | |
| |m16|005| 2 | |m40|015| 29 | |m0|125| 0 | |m1|011| 1min 0s | |m1|076| 18min | |c100|099| 100% | |m15|061| 198 | NodaTime | . | |
| |m16|006| 2 | |m0|175| 0 | |m0|127| 0 | |m2|008| 2min 0s | |m0|157| 2min 0s | 156N/A | |m0|177| 15 | NodaTime | .\Annotations | |
| |m8|008| 1 | |m93|001| 67 | |m0|126| 0 | |m1|012| 1min 0s | |m100|000| 2d 7h | |c98|124| 98.68% | |m68|007| 849 | NodaTime | . | |
| |m8|018| 1 | |m47|009| 34 | |m0|134| 0 | |m24|003| 20min | |m43|002| 1d 2h | |c99|118| 99.29% | |m81|001| 1 010 | NodaTime | . | |
| |m8|015| 1 | |m41|013| 30 | |m42|002| 6 | |m1|015| 1min 0s | |m6|033| 1h 33min | |c98|129| 98.14% | |m41|013| 514 | NodaTime | .\TimeZones | |
| |m8|010| 1 | |m25|030| 18 | |m0|118| 0 | |m1|013| 1min 0s | |m3|046| 46min | |c81|144| 81.82% | |m15|058| 206 | NodaTime | .\Utility | |
| |m8|011| 1 | |m23|032| 17 | |m21|007| 3 | |m1|014| 1min 0s | |m2|058| 29min | |c100|108| 100% | |m20|037| 265 | NodaTime | .\Xml | |
| |m8|016| 1 | |m20|039| 15 | |m7|020| 1 | |m1|009| 1min 0s | |m14|018| 3h 30min | |c94|137| 94.81% | |m17|048| 226 | NodaTime | .\Text\Patterns | |
| |m8|017| 1 | |m16|046| 12 | |m0|121| 0 | |m0|018| 0min 30s | |m2|051| 36min | |c98|126| 98.59% | |m15|059| 204 | NodaTime | .\TimeZones | |
| |m8|009| 1 | |m12|056| 9 | |m0|119| 0 | |m1|017| 1min 0s | |m1|059| 27min | |c100|016| 100% | |m13|066| 178 | NodaTime | .\TimeZones\Cldr | |
| |m8|012| 1 | |m11|059| 8 | |m0|120| 0 | |m1|016| 1min 0s | |m1|069| 23min | |c100|022| 100% | |m13|064| 184 | NodaTime | .\TimeZones | |
| |m8|013| 1 | |m9|066| 7 | |m0|122| 0 | |m1|010| 1min 0s | |m0|092| 11min | |c100|086| 100% | |m32|015| 410 | NodaTime | .\Text | |
| |m8|014| 1 | |m6|087| 5 | |m14|011| 2 | |m3|005| 3min 0s | |m0|086| 14min | |c100|096| 100% | |m16|050| 218 | NodaTime | .\Text | |
| |m0|020| 0 | |m100|000| 72 | |m0|135| 0 | |m0|026| 0min 0s | |m28|009| 6h 43min | |c99|117| 99.48% | |m100|000| 1 229 | NodaTime | . | |
| |m0|165| 0 | |m77|002| 56 | |m0|056| 0 | |m0|159| 0min 0s | |m16|016| 3h 57min | |c100|049| 100% | |m6|099| 97 | NodaTime | .\Text | |
| |m0|075| 0 | |m70|005| 51 | |m0|144| 0 | |m0|074| 0min 0s | |m33|006| 1d 0h | |c88|141| 88.98% | |m69|006| 856 | NodaTime | . | |
| |m0|021| 0 | |m54|006| 39 | |m0|137| 0 | |m0|078| 0min 0s | |m29|008| 7h 11min | |c99|120| 99.15% | |m25|025| 320 | NodaTime | .\Text | |
| |m0|140| 0 | |m51|008| 37 | |m0|076| 0 | |m0|145| 0min 0s | |m22|011| 5h 30min | |c100|077| 100% | |m63|008| 780 | NodaTime | . | |
| |m0|026| 0 | |m43|010| 31 | |m21|009| 3 | |m0|115| 0min 0s | |m10|024| 2h 32min | |c99|121| 99.07% | |m20|038| 264 | NodaTime | .\TimeZones\IO | |
| |m0|027| 0 | |m43|012| 31 | |m0|130| 0 | |m0|025| 0min 0s | |m23|010| 5h 38min | |c99|122| 99.06% | |m69|005| 863 | NodaTime | . | |
| |m0|173| 0 | |m43|011| 31 | |m0|074| 0 | |m0|144| 0min 0s | |m4|037| 1h 3min | |c100|066| 100% | |m27|019| 346 | NodaTime | .\TimeZones | |
| |m0|169| 0 | |m40|014| 29 | |m0|072| 0 | |m0|143| 0min 0s | |m2|052| 36min | |c100|064| 100% | |m24|026| 313 | NodaTime | .\TimeZones | |
| |m0|028| 0 | |m40|016| 29 | |m0|132| 0 | |m0|023| 0min 0s | |m33|005| 1d 0h | |c98|123| 98.95% | |m46|010| 582 | NodaTime | . | |
| |m0|039| 0 | |m38|017| 28 | |m21|010| 3 | |m0|117| 0min 0s | |m4|038| 1h 2min | |c100|095| 100% | |m17|049| 224 | NodaTime | .\Text | |
| |m0|139| 0 | |m37|018| 27 | |m0|077| 0 | |m0|138| 0min 0s | |m18|014| 4h 20min | |c100|078| 100% | |m42|011| 537 | NodaTime | . | |
| |m0|036| 0 | |m36|019| 26 | |m0|098| 0 | |m0|037| 0min 0s | |m21|012| 5h 5min | |c100|092| 100% | |m16|054| 214 | NodaTime | .\Text | |
| |m0|172| 0 | |m34|020| 25 | |m0|075| 0 | |m0|146| 0min 0s | |m1|061| 27min | |c100|067| 100% | |m27|020| 346 | NodaTime | .\TimeZones | |
| |m0|146| 0 | |m34|021| 25 | |m0|092| 0 | |m0|151| 0min 0s | |m21|013| 5h 4min | |c100|079| 100% | |m71|004| 884 | NodaTime | . | |
| |m0|029| 0 | |m33|022| 24 | |m0|131| 0 | |m0|022| 0min 0s | |m4|035| 1h 6min | |c100|115| 100% | |m18|042| 239 | NodaTime | . | |
| |m0|024| 0 | |m31|023| 23 | |m0|129| 0 | |m0|028| 0min 0s | |m4|036| 1h 4min | |c97|131| 97.83% | |m15|060| 203 | NodaTime | .\Calendars | |
| |m0|152| 0 | |m29|024| 21 | |m0|086| 0 | |m0|157| 0min 0s | |m31|007| 7h 36min | |c100|082| 100% | |m72|003| 901 | NodaTime | . | |
| |m0|143| 0 | |m26|026| 19 | |m35|003| 5 | |m0|120| 0min 0s | |m17|015| 4h 5min | |c100|071| 100% | |m21|033| 279 | NodaTime | .\Text\Patterns | |
| |m0|141| 0 | |m25|029| 18 | |m21|005| 3 | |m0|124| 0min 0s | |m1|066| 24min | |c100|070| 100% | |m21|032| 280 | NodaTime | .\Calendars | |
| |m0|125| 0 | |m25|027| 18 | |m7|021| 1 | |m0|133| 0min 0s | |m8|029| 2h 1min | |c100|019| 100% | |m13|065| 182 | NodaTime | .\TimeZones | |
| |m0|043| 0 | |m25|028| 18 | |m0|112| 0 | |m0|042| 0min 0s | |m9|028| 2h 15min | |c100|114| 100% | |m21|034| 278 | NodaTime | . | |
| |m0|156| 0 | |m23|031| 17 | |m100|000| 14 | |m0|121| 0min 0s | |m8|030| 1h 57min | |c100|084| 100% | |m31|017| 392 | NodaTime | .\Text | |
| |m0|088| 0 | |m23|033| 17 | |m0|155| 0 | |m0|085| 0min 0s | |m11|022| 2h 47min | |c0|147| 0% | |m10|081| 143 | NodaTime | .\Annotations | |
| |m0|022| 0 | |m22|034| 16 | |m21|008| 3 | |m0|116| 0min 0s | |m3|040| 54min | |c98|127| 98.57% | |m23|027| 299 | NodaTime | .\Text | |
| |m0|047| 0 | |m20|035| 15 | |m0|108| 0 | |m0|049| 0min 0s | |m10|025| 2h 26min | |c100|106| 100% | |m20|040| 258 | NodaTime | . | |
| |m0|161| 0 | |m20|040| 15 | |m0|063| 0 | |m0|174| 0min 0s | |m2|050| 37min | |c100|056| 100% | |m6|106| 88 | NodaTime | .\TimeZones | |
| |m0|171| 0 | |m20|037| 15 | |m0|073| 0 | |m0|142| 0min 0s | |m3|045| 47min | |c100|065| 100% | |m25|022| 329 | NodaTime | .\TimeZones | |
| |m0|023| 0 | |m20|036| 15 | |m0|136| 0 | |m0|050| 0min 0s | |m2|048| 41min | |c97|130| 97.96% | |m11|078| 149 | NodaTime | .\Text | |
| |m0|074| 0 | |m20|038| 15 | |m0|158| 0 | |m0|057| 0min 0s | |m11|020| 2h 52min | |c87|143| 87.5% | |m21|035| 272 | NodaTime | . | |
| |m0|177| 0 | |m19|041| 14 | |m0|070| 0 | |m0|173| 0min 0s | |m10|026| 2h 25min | |c100|062| 100% | |m25|023| 323 | NodaTime | . | |
| |m0|150| 0 | |m18|044| 13 | |m0|094| 0 | |m0|035| 0min 0s | |m1|064| 24min | |c100|091| 100% | |m16|053| 214 | NodaTime | .\Text | |
| |m0|035| 0 | |m18|042| 13 | |m0|105| 0 | |m0|046| 0min 0s | |m2|056| 31min | |c100|093| 100% | |m16|051| 218 | NodaTime | .\TimeZones | |
| |m0|168| 0 | |m18|043| 13 | |m0|059| 0 | |m0|162| 0min 0s | |m1|072| 22min | |c100|057| 100% | |m2|133| 48 | NodaTime | .\TimeZones | |
| |m0|155| 0 | |m16|045| 12 | |m0|089| 0 | |m0|148| 0min 0s | |m0|085| 14min | |c100|085| 100% | |m27|018| 348 | NodaTime | .\Text | |
| |m0|126| 0 | |m15|047| 11 | |m0|027| 0 | |m0|130| 0min 0s | |m5|034| 1h 17min | |c100|018| 100% | |m12|068| 168 | NodaTime | .\Text | |
| |m0|105| 0 | |m13|050| 10 | |m0|040| 0 | |m0|111| 0min 0s | |m11|023| 2h 39min | |c100|043| 100% | |m4|117| 72 | NodaTime | . | |
| |m0|170| 0 | |m13|048| 10 | |m0|071| 0 | |m0|172| 0min 0s | |m3|044| 47min | |c100|063| 100% | |m25|024| 323 | NodaTime | .\TimeZones\IO | |
| |m0|025| 0 | |m13|051| 10 | |m0|128| 0 | |m0|027| 0min 0s | |m1|065| 24min | |c98|125| 98.67% | |m8|089| 121 | NodaTime | .\Text | |
| |m0|135| 0 | |m13|049| 10 | |m0|081| 0 | |m0|140| 0min 0s | |m1|067| 24min | |c100|046| 100% | |m5|108| 87 | NodaTime | .\Utility | |
| |m0|100| 0 | |m12|052| 9 | |m0|045| 0 | |m0|106| 0min 0s | |m1|068| 24min | |c100|029| 100% | |m12|071| 164 | NodaTime | .\Text | |
| |m0|078| 0 | |m12|053| 9 | |m0|147| 0 | |m0|082| 0min 0s | |m1|074| 21min | |c96|134| 96% | |m10|082| 142 | NodaTime | .\Calendars | |
| |m0|136| 0 | |m12|055| 9 | |m0|083| 0 | |m0|154| 0min 0s | |m9|027| 2h 22min | |c100|075| 100% | |m22|029| 290 | NodaTime | .\Text | |
| |m0|176| 0 | |m12|054| 9 | |m0|068| 0 | |m0|169| 0min 0s | |m0|093| 11min | |c100|060| 100% | |m6|102| 96 | NodaTime | .\Utility | |
| |m0|041| 0 | |m11|058| 8 | |m0|100| 0 | |m0|029| 0min 0s | |m3|043| 48min | |c100|110| 100% | |m20|036| 268 | NodaTime | . | |
| |m0|079| 0 | |m9|067| 7 | |m28|004| 4 | |m0|122| 0min 0s | |m1|071| 22min | |c95|136| 95.52% | |m15|057| 207 | NodaTime | .\TimeZones | |
| |m0|157| 0 | |m9|068| 7 | |m14|012| 2 | |m0|119| 0min 0s | |m0|097| 9min | |c100|068| 100% | |m26|021| 332 | NodaTime | .\TimeZones\IO | |
| |m0|118| 0 | |m9|060| 7 | |m7|018| 1 | |m0|132| 0min 0s | |m1|062| 27min | |c100|009| 100% | |m7|091| 111 | NodaTime | . | |
| |m0|065| 0 | |m9|061| 7 | |m0|176| 0 | |m0|064| 0min 0s | |m2|049| 39min | 177N/A | |m6|107| 88 | NodaTime | .\TimeZones | |
| |m0|142| 0 | |m9|062| 7 | |m0|078| 0 | |m0|137| 0min 0s | |m1|075| 20min | |c100|069| 100% | |m22|031| 285 | NodaTime | .\Text | |
| |m0|077| 0 | |m9|065| 7 | |m0|145| 0 | |m0|076| 0min 0s | |m3|039| 56min | |c96|132| 96.92% | |m14|063| 194 | NodaTime | .\Calendars | |
| |m0|116| 0 | |m9|064| 7 | |m0|050| 0 | |m0|136| 0min 0s | |m0|098| 9min | |c100|008| 100% | |m8|090| 115 | NodaTime | .\Calendars | |
| |m0|076| 0 | |m9|063| 7 | |m0|143| 0 | |m0|072| 0min 0s | |m1|073| 22min | |c96|133| 96% | |m7|097| 102 | NodaTime | .\Text | |
| |m0|159| 0 | |m8|077| 6 | |m7|017| 1 | |m0|125| 0min 0s | |m2|054| 35min | |c100|052| 100% | |m7|094| 105 | NodaTime | . | |
| |m0|093| 0 | |m8|076| 6 | |m0|150| 0 | |m0|090| 0min 0s | |m1|060| 27min | |c100|030| 100% | |m11|072| 160 | NodaTime | .\Fields | |
| |m0|151| 0 | |m8|079| 6 | |m0|087| 0 | |m0|156| 0min 0s | |m6|032| 1h 39min | |c100|090| 100% | |m16|052| 215 | NodaTime | . | |
| |m0|163| 0 | |m8|078| 6 | |m0|064| 0 | |m0|176| 0min 0s | |m0|088| 12min | |c100|048| 100% | |m7|098| 101 | NodaTime | .\Text | |
| |m0|097| 0 | |m8|070| 6 | |m0|042| 0 | |m0|112| 0min 0s | |m1|063| 26min | |c100|026| 100% | |m11|076| 153 | NodaTime | .\TimeZones\Cldr | |
| |m0|107| 0 | |m8|071| 6 | |m0|052| 0 | |m0|163| 0min 0s | |m0|102| 7min | |c100|044| 100% | |m4|118| 69 | NodaTime | .\TimeZones\IO | |
| |m0|080| 0 | |m8|069| 6 | |m0|146| 0 | |m0|075| 0min 0s | |m0|094| 10min | |c95|135| 95.74% | |m12|069| 165 | NodaTime | .\TimeZones | |
| |m0|122| 0 | |m8|072| 6 | |m0|035| 0 | |m0|094| 0min 0s | |m13|019| 3h 13min | |c100|005| 100% | |m10|079| 146 | NodaTime | .\Text\Patterns | |
| |m0|166| 0 | |m8|075| 6 | |m0|058| 0 | |m0|160| 0min 0s | |m1|077| 18min | |c100|051| 100% | |m7|093| 106 | NodaTime | .\Text | |
| |m0|113| 0 | |m8|074| 6 | |m0|046| 0 | |m0|105| 0min 0s | |m0|091| 12min | |c100|024| 100% | |m11|074| 156 | NodaTime | .\TimeZones | |
| |m0|174| 0 | |m8|073| 6 | |m0|067| 0 | |m0|170| 0min 0s | |m3|041| 51min | |c100|059| 100% | |m6|101| 97 | NodaTime | . | |
| |m0|114| 0 | |m6|086| 5 | |m7|019| 1 | |m0|131| 0min 0s | |m0|109| 7min | |c100|007| 100% | |m9|085| 132 | NodaTime | .\TimeZones | |
| |m0|046| 0 | |m6|089| 5 | |m0|115| 0 | |m0|020| 0min 0s | |m1|078| 17min | |c100|104| 100% | |m17|047| 228 | NodaTime | .\Text | |
| |m0|101| 0 | |m6|088| 5 | |m0|044| 0 | |m0|113| 0min 0s | |m0|110| 7min | |c100|028| 100% | |m12|070| 164 | NodaTime | .\Calendars | |
| |m0|019| 0 | |m6|082| 5 | |m0|133| 0 | |m0|024| 0min 0s | |m0|096| 9min | |c100|116| 100% | |m18|043| 235 | NodaTime | .\Calendars | |
| |m0|040| 0 | |m6|081| 5 | |m0|101| 0 | |m0|031| 0min 0s | |m0|104| 7min | |c100|111| 100% | |m18|044| 235 | NodaTime | .\Calendars | |
| |m0|137| 0 | |m6|080| 5 | |m0|085| 0 | |m0|155| 0min 0s | |m7|031| 1h 52min | |c100|074| 100% | |m22|028| 290 | NodaTime | .\Text | |
| |m0|044| 0 | |m6|083| 5 | |m0|114| 0 | |m0|043| 0min 0s | |m1|080| 17min | |c100|113| 100% | |m17|046| 232 | NodaTime | .\Text | |
| |m0|048| 0 | |m6|084| 5 | |m0|107| 0 | |m0|047| 0min 0s | |m1|079| 17min | |c100|109| 100% | |m20|039| 262 | NodaTime | .\Text | |
| |m0|106| 0 | |m6|085| 5 | |m0|039| 0 | |m0|104| 0min 0s | |m2|057| 29min | |c100|045| 100% | |m2|128| 51 | NodaTime | .\Xml | |
| |m0|162| 0 | |m5|098| 4 | |m0|065| 0 | |m0|178| 0min 0s | |m2|053| 36min | |c100|055| 100% | |m6|105| 89 | NodaTime | .\Utility | |
| |m0|099| 0 | |m5|097| 4 | |m0|043| 0 | |m0|114| 0min 0s | |m0|087| 13min | |c100|027| 100% | |m11|073| 156 | NodaTime | .\Text | |
| |m0|130| 0 | |m5|099| 4 | |m0|034| 0 | |m0|095| 0min 0s | |m3|047| 44min | |c100|013| 100% | |m1|142| 39 | NodaTime | .\Text\Patterns | |
| |m0|117| 0 | |m5|101| 4 | |m0|049| 0 | |m0|108| 0min 0s | |m0|118| 6min | |c100|010| 100% | |m2|140| 41 | NodaTime | .\Extensions | |
| |m0|094| 0 | |m5|100| 4 | |m0|152| 0 | |m0|091| 0min 0s | |m0|116| 6min | |c100|032| 100% | |m2|132| 49 | NodaTime | .\Calendars | |
| |m0|096| 0 | |m5|092| 4 | |m0|096| 0 | |m0|036| 0min 0s | |m0|115| 6min | |c100|033| 100% | |m4|115| 75 | NodaTime | . | |
| |m0|103| 0 | |m5|091| 4 | |m0|036| 0 | |m0|096| 0min 0s | |m0|119| 6min | |c100|042| 100% | |m3|120| 63 | NodaTime | .\Text\Patterns | |
| |m0|111| 0 | |m5|090| 4 | |m0|054| 0 | |m0|167| 0min 0s | |m3|042| 48min | |c100|040| 100% | |m3|122| 58 | NodaTime | .\Utility | |
| |m0|032| 0 | |m5|093| 4 | |m0|102| 0 | |m0|033| 0min 0s | |m0|108| 7min | |c100|101| 100% | |m16|055| 213 | NodaTime | .\Text | |
| |m0|131| 0 | |m5|096| 4 | |m0|033| 0 | |m0|102| 0min 0s | |m1|083| 15min | |c100|012| 100% | |m9|086| 126 | NodaTime | .\TimeZones | |
| |m0|073| 0 | |m5|095| 4 | |m0|172| 0 | |m0|071| 0min 0s | |m1|082| 15min | |c90|140| 90% | |m13|067| 178 | NodaTime | .\TimeZones | |
| |m0|081| 0 | |m5|094| 4 | |m0|139| 0 | |m0|079| 0min 0s | |m1|070| 22min | |c66|146| 66.67% | |m3|126| 52 | NodaTime | .\Text | |
| |m0|049| 0 | |m4|112| 3 | |m0|109| 0 | |m0|048| 0min 0s | |m0|089| 12min | |c100|107| 100% | |m18|041| 245 | NodaTime | .\Text | |
| |m0|127| 0 | |m4|111| 3 | |m0|022| 0 | |m0|135| 0min 0s | |m0|106| 7min | |c100|020| 100% | |m3|124| 56 | NodaTime | .\Fields | |
| |m0|053| 0 | |m4|110| 3 | |m0|164| 0 | |m0|051| 0min 0s | |m0|146| 3min 0s | 167N/A | |m7|092| 107 | NodaTime | .\TimeZones | |
| |m0|154| 0 | |m4|115| 3 | |m0|090| 0 | |m0|150| 0min 0s | |m0|126| 5min | |c100|083| 100% | |m0|168| 24 | NodaTime | .\Extensions | |
| |m0|128| 0 | |m4|114| 3 | |m0|029| 0 | |m0|100| 0min 0s | |m0|125| 5min | |c100|023| 100% | |m1|151| 32 | NodaTime | .\Extensions | |
| |m0|120| 0 | |m4|113| 3 | |m0|025| 0 | |m0|126| 0min 0s | |m0|105| 7min | |c100|001| 100% | |m10|083| 139 | NodaTime | .\Text | |
| |m0|031| 0 | |m4|104| 3 | |m0|103| 0 | |m0|032| 0min 0s | |m0|121| 5min | |c100|098| 100% | |m1|155| 31 | NodaTime | .\Extensions | |
| |m0|153| 0 | |m4|105| 3 | |m0|088| 0 | |m0|149| 0min 0s | |m0|107| 7min | |c100|080| 100% | |m14|062| 195 | NodaTime | .\Text | |
| |m0|145| 0 | |m4|102| 3 | |m0|079| 0 | |m0|139| 0min 0s | |m0|127| 5min | |c100|072| 100% | |m22|030| 286 | NodaTime | .\Calendars | |
| |m0|164| 0 | |m4|103| 3 | |m0|057| 0 | |m0|158| 0min 0s | |m0|122| 5min | |c100|047| 100% | |m2|136| 47 | NodaTime | .\Calendars | |
| |m0|119| 0 | |m4|108| 3 | |m0|024| 0 | |m0|127| 0min 0s | |m0|124| 5min | |c100|002| 100% | |m10|084| 137 | NodaTime | .\TimeZones | |
| |m0|115| 0 | |m4|109| 3 | |m0|048| 0 | |m0|109| 0min 0s | |m0|103| 7min | |c100|006| 100% | |m10|080| 145 | NodaTime | .\Calendars | |
| |m0|042| 0 | |m4|107| 3 | |m0|113| 0 | |m0|044| 0min 0s | |m0|090| 12min | |c100|112| 100% | |m18|045| 234 | NodaTime | .\Text | |
| |m0|132| 0 | |m4|106| 3 | |m0|026| 0 | |m0|128| 0min 0s | |m0|123| 5min | |c100|014| 100% | |m9|088| 125 | NodaTime | .\Calendars | |
| |m0|072| 0 | |m2|132| 2 | |m21|006| 3 | |m0|123| 0min 0s | |m0|120| 5min | |c94|138| 94.44% | |m4|119| 64 | NodaTime | .\Calendars | |
| |m0|104| 0 | |m2|133| 2 | |m0|038| 0 | |m0|097| 0min 0s | |m0|117| 6min | |c100|041| 100% | |m3|123| 58 | NodaTime | .\Calendars | |
| |m0|102| 0 | |m2|131| 2 | |m0|037| 0 | |m0|098| 0min 0s | |m2|055| 33min | |c100|035| 100% | |m5|109| 86 | NodaTime | .\Calendars | |
| |m0|167| 0 | |m2|129| 2 | |m0|060| 0 | |m0|161| 0min 0s | |m1|081| 17min | |c100|050| 100% | |m7|096| 102 | NodaTime | .\Calendars | |
| |m0|034| 0 | |m2|130| 2 | |m0|106| 0 | |m0|045| 0min 0s | |m0|100| 8min | |c100|102| 100% | |m16|056| 211 | NodaTime | .\Calendars | |
| |m0|051| 0 | |m2|137| 2 | |m0|110| 0 | |m0|041| 0min 0s | |m0|153| 2min 0s | 163N/A | |m7|095| 105 | NodaTime | . | |
| |m0|055| 0 | |m2|138| 2 | |m0|168| 0 | |m0|061| 0min 0s | |m0|154| 2min 0s | 159N/A | |m0|169| 23 | NodaTime | .\Annotations | |
| |m0|061| 0 | |m2|136| 2 | |m0|163| 0 | |m0|052| 0min 0s | |m0|155| 2min 0s | 175N/A | |m1|153| 31 | NodaTime | .\Calendars | |
| |m0|038| 0 | |m2|134| 2 | |m0|099| 0 | |m0|030| 0min 0s | |m0|156| 2min 0s | |c100|097| 100% | |m1|156| 29 | NodaTime | .\Annotations | |
| |m0|050| 0 | |m2|135| 2 | |m0|111| 0 | |m0|040| 0min 0s | |m0|101| 8min | 164N/A | |m1|149| 34 | NodaTime | . | |
| |m0|087| 0 | |m2|128| 2 | |m0|153| 0 | |m0|084| 0min 0s | |m0|158| 2min 0s | 148N/A | |m2|129| 51 | NodaTime | .\Calendars | |
| |m0|109| 0 | |m2|119| 2 | |m0|053| 0 | |m0|165| 0min 0s | |m0|113| 6min | |c100|036| 100% | |m5|110| 82 | NodaTime | .\Text | |
| |m0|095| 0 | |m2|120| 2 | |m0|151| 0 | |m0|092| 0min 0s | |m0|114| 6min | |c100|034| 100% | |m5|112| 79 | NodaTime | .\Fields | |
| |m0|030| 0 | |m2|121| 2 | |m0|117| 0 | |m0|019| 0min 0s | |m0|112| 6min | |c100|100| 100% | |m1|157| 29 | NodaTime | .\Fields | |
| |m0|149| 0 | |m2|116| 2 | |m0|095| 0 | |m0|034| 0min 0s | |m0|131| 4min 0s | |c100|000| 100% | |m1|143| 38 | NodaTime | .\TimeZones | |
| |m0|110| 0 | |m2|117| 2 | |m0|055| 0 | |m0|166| 0min 0s | |m0|132| 4min 0s | |c100|038| 100% | |m4|116| 75 | NodaTime | .\TimeZones | |
| |m0|160| 0 | |m2|118| 2 | |m0|061| 0 | |m0|168| 0min 0s | |m0|129| 4min 0s | |c100|054| 100% | |m2|135| 47 | NodaTime | .\Utility | |
| |m0|112| 0 | |m2|125| 2 | |m0|047| 0 | |m0|107| 0min 0s | |m0|134| 4min 0s | |c100|039| 100% | |m3|125| 53 | NodaTime | .\Text | |
| |m0|108| 0 | |m2|126| 2 | |m0|051| 0 | |m0|164| 0min 0s | |m0|137| 3min 30s | |c100|037| 100% | |m5|111| 82 | NodaTime | .\Calendars | |
| |m0|158| 0 | |m2|127| 2 | |m0|062| 0 | |m0|175| 0min 0s | |m0|133| 4min 0s | |c100|053| 100% | |m2|137| 45 | NodaTime | .\Calendars | |
| |m0|144| 0 | |m2|122| 2 | |m0|080| 0 | |m0|141| 0min 0s | |m0|130| 4min 0s | |c100|073| 100% | |m0|166| 24 | NodaTime | .\Extensions | |
| |m0|133| 0 | |m2|124| 2 | |m0|023| 0 | |m0|134| 0min 0s | |m0|099| 8min | |c100|017| 100% | |m1|152| 32 | NodaTime | .\Calendars | |
| |m0|123| 0 | |m2|123| 2 | |m0|031| 0 | |m0|101| 0min 0s | |m0|135| 4min 0s | |c100|004| 100% | |m1|146| 36 | NodaTime | .\TimeZones | |
| |m0|069| 0 | |m1|159| 1 | |m0|169| 0 | |m0|068| 0min 0s | |m0|170| 1min 0s | 173N/A | |m0|160| 27 | NodaTime | .\Annotations | |
| |m0|084| 0 | |m1|160| 1 | |m0|142| 0 | |m0|073| 0min 0s | |m0|168| 1min 0s | 154N/A | |m0|174| 18 | NodaTime | .\Annotations | |
| |m0|086| 0 | |m1|161| 1 | |m0|154| 0 | |m0|083| 0min 0s | |m0|167| 1min 0s | 155N/A | |m0|176| 16 | NodaTime | .\Annotations | |
| |m0|045| 0 | |m1|158| 1 | |m0|116| 0 | |m0|021| 0min 0s | |m0|142| 3min 0s | |c100|105| 100% | |m0|162| 25 | NodaTime | .\TimeZones | |
| |m0|098| 0 | |m1|155| 1 | |m0|041| 0 | |m0|110| 0min 0s | |m0|143| 3min 0s | |c100|025| 100% | |m11|075| 153 | NodaTime | .\Text | |
| |m0|062| 0 | |m1|156| 1 | |m0|162| 0 | |m0|059| 0min 0s | |m0|169| 1min 0s | 174N/A | |m1|159| 28 | NodaTime | .\TimeZones | |
| |m0|129| 0 | |m1|157| 1 | |m0|030| 0 | |m0|099| 0min 0s | |m0|140| 3min 0s | |c100|021| 100% | |m1|154| 31 | NodaTime | .\Text | |
| |m0|056| 0 | |m1|166| 1 | |m0|167| 0 | |m0|054| 0min 0s | |m0|159| 1min 0s | 158N/A | |m3|127| 52 | NodaTime | .\TimeZones\IO | |
| |m0|064| 0 | |m1|167| 1 | |m0|174| 0 | |m0|063| 0min 0s | |m0|160| 1min 0s | 178N/A | |m6|104| 92 | NodaTime | .\TimeZones\IO | |
| |m0|085| 0 | |m1|168| 1 | |m0|141| 0 | |m0|080| 0min 0s | |m1|084| 15min | 157N/A | |m0|172| 19 | NodaTime | .\Text\Patterns | |
| |m0|059| 0 | |m1|165| 1 | |m0|159| 0 | |m0|056| 0min 0s | |m0|161| 1min 0s | 161N/A | |m2|130| 50 | NodaTime | .\Text | |
| |m0|090| 0 | |m1|162| 1 | |m0|156| 0 | |m0|087| 0min 0s | |m0|162| 1min 0s | 151N/A | |m0|178| 15 | NodaTime | .\Text | |
| |m0|070| 0 | |m1|163| 1 | |m0|171| 0 | |m0|069| 0min 0s | |m0|095| 10min | 172N/A | |m5|114| 76 | NodaTime | .\Text | |
| |m0|089| 0 | |m1|164| 1 | |m0|157| 0 | |m0|086| 0min 0s | |m0|128| 5min | 149N/A | |m0|167| 24 | NodaTime | .\Text | |
| |m0|148| 0 | |m1|144| 1 | |m0|093| 0 | |m0|093| 0min 0s | |m0|152| 3min 0s | |c100|087| 100% | |m0|173| 18 | NodaTime | .\Fields | |
| |m0|124| 0 | |m1|143| 1 | |m0|028| 0 | |m0|129| 0min 0s | |m0|150| 3min 0s | |c100|011| 100% | |m2|141| 40 | NodaTime | . | |
| |m0|071| 0 | |m1|146| 1 | |m0|173| 0 | |m0|070| 0min 0s | |m0|136| 3min 34s | |c93|139| 93.75% | |m3|121| 60 | NodaTime | .\Calendars | |
| |m0|138| 0 | |m1|145| 1 | |m0|084| 0 | |m0|153| 0min 0s | |m0|145| 3min 0s | |c100|076| 100% | |m0|175| 18 | NodaTime | .\Globalization | |
| |m0|037| 0 | |m1|140| 1 | |m0|097| 0 | |m0|038| 0min 0s | |m0|149| 3min 0s | |c100|094| 100% | |m0|161| 26 | NodaTime | .\Extensions | |
| |m0|121| 0 | |m1|139| 1 | |m0|032| 0 | |m0|103| 0min 0s | |m0|148| 3min 0s | |c100|003| 100% | |m1|144| 37 | NodaTime | . | |
| |m0|092| 0 | |m1|142| 1 | |m0|148| 0 | |m0|089| 0min 0s | |m0|151| 3min 0s | |c100|031| 100% | |m5|113| 77 | NodaTime | .\Extensions | |
| |m0|033| 0 | |m1|141| 1 | |m0|104| 0 | |m0|039| 0min 0s | |m0|147| 3min 0s | |c100|103| 100% | |m1|158| 28 | NodaTime | .\Extensions | |
| |m0|068| 0 | |m1|152| 1 | |m0|170| 0 | |m0|067| 0min 0s | |m0|163| 1min 0s | 171N/A | |m2|131| 50 | NodaTime | . | |
| |m0|067| 0 | |m1|151| 1 | |m0|177| 0 | |m0|066| 0min 0s | |m0|165| 1min 0s | 169N/A | |m9|087| 126 | NodaTime | . | |
| |m0|058| 0 | |m1|154| 1 | |m0|160| 0 | |m0|058| 0min 0s | |m0|164| 1min 0s | 162N/A | |m1|147| 36 | NodaTime | .\Annotations | |
| |m0|134| 0 | |m1|153| 1 | |m0|082| 0 | |m0|147| 0min 0s | |m0|144| 3min 0s | |c100|015| 100% | |m11|077| 152 | NodaTime | . | |
| |m0|147| 0 | |m1|148| 1 | |m0|091| 0 | |m0|152| 0min 0s | |m0|138| 3min 0s | |c100|088| 100% | |m0|171| 21 | NodaTime | .\Utility | |
| |m0|178| 0 | |m1|147| 1 | |m0|069| 0 | |m0|171| 0min 0s | |m0|139| 3min 0s | |c100|061| 100% | |m6|103| 95 | NodaTime | . | |
| |m0|175| 0 | |m1|150| 1 | |m0|066| 0 | |m0|177| 0min 0s | |m0|141| 3min 0s | |c100|058| 100% | |m2|134| 48 | NodaTime | .\Text | |
| |m0|060| 0 | |m1|149| 1 | |m0|161| 0 | |m0|060| 0min 0s | |m0|166| 1min 0s | 168N/A | |m1|145| 36 | NodaTime | . | |
| |m0|057| 0 | |m0|176| 0 | |m7|016| 1 | |m0|118| 0min 0s | |m0|173| 0min 0s | 160N/A | |m0|170| 23 | NodaTime | .\TimeZones | |
| |m0|066| 0 | |m0|178| 0 | |m0|178| 0 | |m0|065| 0min 0s | |m0|172| 0min 0s | 170N/A | |m1|150| 33 | NodaTime | . | |
| |m0|091| 0 | |m0|177| 0 | |m0|149| 0 | |m0|088| 0min 0s | |m0|171| 0min 0s | 150N/A | |m0|165| 24 | NodaTime | .\Extensions | |
| |m0|083| 0 | |m0|170| 0 | |m0|140| 0 | |m0|081| 0min 0s | |m0|174| 0min 0s | 152N/A | |m0|163| 24 | NodaTime | .\Extensions | |
| |m0|063| 0 | |m0|169| 0 | |m0|175| 0 | |m0|062| 0min 0s | |m0|175| 0min 0s | 176N/A | |m6|100| 97 | NodaTime | .\TimeZones\IO | |
| |m0|054| 0 | |m0|171| 0 | |m0|166| 0 | |m0|055| 0min 0s | |m0|176| 0min 0s | 166N/A | |m2|139| 41 | NodaTime | .\Calendars | |
| |m0|052| 0 | |m0|173| 0 | |m0|165| 0 | |m0|053| 0min 0s | |m0|177| 0min 0s | 165N/A | |m1|148| 35 | NodaTime | .\Fields | |
| |m0|082| 0 | |m0|172| 0 | |m0|138| 0 | |m0|077| 0min 0s | |m0|178| 0min 0s | 153N/A | |m0|164| 24 | NodaTime | .\Text |
- The number of projects with no issues.
- Sort the column #Un-resolved ascending to list these files first.
- The number of projects with at least one unresolved issue but no new issue added since the baseline.
- Sort the column #Un-resolved Issues to list these files first.
- The number of projects with at least one new issue introduced since the baseline.
- Sort the column #New Issues to list these files first.
This occurs because the search pattern for the source files grid is set to the project's name.
Project Name | #New Issues | #Un- resolved | #Fixed | New Debt | Debt | %Cov | #Types | #Statements |
---|---|---|---|---|---|---|---|---|
NodaTime ● | 45 | 1 725 | 81 | 3h 47min | 27d | 98.67 | 276 | 7 054 |
- The number of Quality Gates that pass.
- A Quality Gate passes if its value is lower than its warning threshold, and lower than its failure threshold.
- The number of Quality Gates that warn.
- A Quality Gate warns if its value is equal to or higher than its warning threshold, but lower than its failure threshold.
- The number of Quality Gates that fail.
- A Quality Gate fails if its value is equal to or higher than its failure threshold. If any, it means that the code is not ready for production. You have the option to stop the build process upon any Quality Gate failure.
can be stopped upon quality gate
failure. Online documentation.
be run on the baseline. Hence they
have blank trend and baseline value.
Name | Trend | Baseline Status | Status | Group | |||
---|---|---|---|---|---|---|---|
| 98.55 % | 98.67 % | Quality Gates | ||||
| 95.52 % | Quality Gates | |||||
| 96.89 % | Quality Gates | |||||
| 0 issues | 0 issues | Quality Gates | ||||
| 9 issues | 9 issues | Quality Gates | ||||
| 28 issues | Quality Gates | |||||
| 5 rules | 5 rules | Quality Gates | ||||
| 0 issues | 0 issues | Quality Gates | ||||
| 13.98 % | 13.88 % | Quality Gates | ||||
| 0.046 man-days | Quality Gates | |||||
| 5 namespaces | 5 namespaces | Quality Gates | ||||
| -0.04 man-days | Quality Gates |
- The number of CQLinq rules that are not violated. Those rules are not listed below.
- Notice that Roslyn Analyzers that pass are not imported. Thus, they are not counted in this number.
- The number of CQLinq rules marked as critical that are violated. They are listed below with a top-left red tick.
- By sorting the first column, violated critical rules can be listed first.
- Rules can also be checked live at development-time, from within the IDE Online documentation.
- Rules that rely on diff cannot be run on the baseline. Hence, they have blank values in column #New Issues or Fixed.
- Number of Rules or Queries with Error (syntax error, exception thrown, time-out): 0
Id | Name | #New Issues | Un- resolved | Fixed | New Debt | Debt | Category | |
---|---|---|---|---|---|---|---|---|
01 | ND1800● | Methods that could have a lower visibility | |m100|000| 6 | |m14|010| 38 | |m55|003| 5 | |m4|008| 3min 0s | |m0|045| 19min | Visibility |
01 | RCS1222✱ | Merge preprocessor directives | |m66|001| 4 | |m0|108| 0 | |m0|076| 0 | |m6|006| 4min 0s | |m0|104| 0min 0s | Roslynator |
01 | MA0099✱ | Use Explicit enum value instead of 0 | |m50|002| 3 | |m14|012| 36 | |m0|077| 0 | |m4|007| 3min 0s | |m0|027| 36min | Usage |
01 | RCS1037✱ | Remove trailing white-space | |m50|003| 3 | |m26|004| 67 | |m0|078| 0 | |m4|010| 3min 0s | |m1|019| 1h 7min | Roslynator |
00 | ND1400● | Avoid namespaces mutually dependent | |m33|004| 2 | |m100|000| 256 | |m0|073| 0 | |m63|001| 40min | |m99|000| 12d 7h | Architecture |
01 | MA0051✱ | Method is too long | |m33|005| 2 | |m5|023| 15 | |m0|074| 0 | |m3|014| 2min 0s | |m0|050| 15min | Design |
01 | ND1804● | Avoid publicly visible constant fields | |m33|006| 2 | |m11|015| 30 | |m0|075| 0 | |m1|025| 1min 0s | |m0|053| 15min | Visibility |
01 | MA0026✱ | Fix TODO comment | |m33|007| 2 | |m1|048| 4 | |m0|079| 0 | |m3|011| 2min 0s | |m0|071| 4min 0s | Design |
01 | ND1600● | Code should be tested | |m33|008| 2 | |m19|006| 51 | |m11|013| 1 | |m53|002| 33min | |m5|006| 5h 45min | Code Coverage |
01 | MA0106✱ | Avoid closure by using an overload with the 'factoryArgument' parameter | |m33|009| 2 | |m0|110| 0 | |m0|083| 0 | |m3|015| 2min 0s | |m0|106| 0min 0s | Performance |
01 | ND1106● | Avoid adding methods to a type that already had many methods | |m16|010| 1 | |m0|105| 0 | |m0|084| 0 | |m31|004| 20min | |m0|111| 0min 0s | Code Smells Regression |
01 | ND1602● | Methods refactored should be tested | |m16|011| 1 | |m0|103| 0 | |m0|085| 0 | |m14|005| 9min | |m0|109| 0min 0s | Code Coverage |
01 | ND1606● | Types that used to be 100% covered by tests should still be 100% covered | |m16|012| 1 | |m0|106| 0 | |m0|080| 0 | |m3|013| 2min 0s | |m0|110| 0min 0s | Code Coverage |
01 | ND1005● | Avoid methods with too many overloads | |m16|013| 1 | |m0|076| 1 | |m0|081| 0 | |m38|003| 24min | |m0|036| 24min | Code Smells |
01 | RCS1243✱ | Duplicate word in a comment | |m16|014| 1 | |m0|068| 2 | |m0|082| 0 | |m1|022| 1min 0s | |m0|084| 2min 0s | Roslynator |
01 | MA0076✱ | Do not use implicit culture-sensitive ToString in interpolated strings | |m16|015| 1 | |m14|011| 36 | |m0|063| 0 | |m1|021| 1min 0s | |m0|028| 36min | Design |
01 | MA0048✱ | File name must match type name | |m16|016| 1 | |m9|017| 25 | |m11|008| 1 | |m1|019| 1min 0s | |m0|034| 25min | Design |
01 | ND1801● | Types that could have a lower visibility | |m16|017| 1 | |m1|053| 4 | |m0|064| 0 | |m0|026| 0min 30s | |m0|080| 2min 0s | Visibility |
01 | CA1846✱ | Prefer 'AsSpan' over 'Substring' | |m16|018| 1 | |m0|109| 0 | |m0|065| 0 | |m1|017| 1min 0s | |m0|103| 0min 0s | Performance |
01 | MA0089✱ | Optimize string method usage | |m16|019| 1 | |m0|111| 0 | |m0|060| 0 | |m1|024| 1min 0s | |m0|105| 0min 0s | Performance |
01 | ND1601● | New Types and Methods should be tested | |m16|020| 1 | |m0|107| 0 | |m0|061| 0 | |m3|016| 2min 0s | |m0|107| 0min 0s | Code Coverage |
01 | MA0111✱ | Use string.Create instead of FormattableString | |m16|021| 1 | |m0|104| 0 | |m0|062| 0 | |m1|020| 1min 0s | |m0|108| 0min 0s | Performance |
01 | MA0102✱ | Make member readonly | |m16|022| 1 | |m4|031| 11 | |m0|066| 0 | |m1|018| 1min 0s | |m0|055| 11min | Design |
01 | RCS1251✱ | Remove unnecessary braces from record declaration | |m16|023| 1 | |m2|037| 7 | |m0|070| 0 | |m1|023| 1min 0s | |m0|062| 7min | Roslynator |
01 | ND1608● | Types 100% covered should be tagged with FullCoveredAttribute | |m16|024| 1 | |m72|001| 185 | |m11|007| 1 | |m4|009| 3min 0s | |m8|003| 1d 1h | Code Coverage |
01 | ND1306● | Nested types should not be visible | |m16|025| 1 | |m10|016| 28 | |m0|071| 0 | |m3|012| 2min 0s | |m4|008| 4h 20min | Design |
01 | ND1001● | Avoid types with too many methods | |m16|026| 1 | |m4|028| 12 | |m11|012| 1 | |m100|000| 1h 3min | |m24|001| 3d 1h | Code Smells |
01 | RCS1139✱ | Add summary element to documentation comment | |m0|027| 0 | |m0|062| 2 | |m0|072| 0 | |m0|030| 0min 0s | |m0|083| 2min 0s | Roslynator |
01 | ND1906● | Don't assign a field from many methods | |m0|028| 0 | |m5|026| 14 | |m0|067| 0 | |m0|029| 0min 0s | |m2|012| 2h 6min | Immutability |
01 | MA0018✱ | Do not declare static members on generic types (deprecated; use CA1000 instead) | |m0|029| 0 | |m0|064| 2 | |m0|068| 0 | |m0|028| 0min 0s | |m0|082| 2min 0s | Design |
01 | ND1810● | Exception classes should be declared as public | |m0|030| 0 | |m0|095| 1 | |m0|069| 0 | |m0|031| 0min 0s | |m0|079| 2min 0s | Visibility |
01 | ND1914● | Immutable struct should be declared as readonly | |m0|031| 0 | |m0|090| 1 | |m0|102| 0 | |m0|032| 0min 0s | |m0|081| 2min 0s | Immutability |
01 | MA0017✱ | Abstract types should not have public or internal constructors | |m0|032| 0 | |m0|069| 2 | |m0|103| 0 | |m0|033| 0min 0s | |m0|087| 2min 0s | Design |
01 | CA1841✱ | Prefer Dictionary.Contains methods | |m0|033| 0 | |m0|101| 1 | |m0|104| 0 | |m0|034| 0min 0s | |m0|088| 1min 0s | Performance |
01 | MA0038✱ | Make method static (deprecated, use CA1822 instead) | |m0|034| 0 | |m0|071| 2 | |m66|002| 6 | |m0|077| 0min 0s | |m0|086| 2min 0s | Design |
01 | RCS1123✱ | Add parentheses when necessary | |m0|035| 0 | |m52|003| 135 | |m22|006| 2 | |m0|074| 0min 0s | |m2|011| 2h 15min | Roslynator |
01 | ND1208● | Methods should be declared static if possible | |m0|036| 0 | |m0|061| 2 | |m55|004| 5 | |m0|072| 0min 0s | |m0|085| 2min 0s | Object Oriented Design |
01 | ND1802● | Fields that could have a lower visibility | |m0|037| 0 | |m2|040| 7 | |m0|099| 0 | |m0|035| 0min 0s | |m0|072| 3min 30s | Visibility |
01 | RCS1226✱ | Add paragraph to documentation comment | |m0|038| 0 | |m1|057| 3 | |m0|100| 0 | |m0|036| 0min 0s | |m0|073| 3min 0s | Roslynator |
01 | ND1401● | Avoid namespaces dependency cycles | |m0|039| 0 | |m0|086| 1 | |m0|101| 0 | |m0|037| 0min 0s | |m1|013| 2h 0min | Architecture |
01 | ND1209● | Constructor should not call a virtual method | |m0|040| 0 | |m0|088| 1 | |m0|105| 0 | |m0|038| 0min 0s | |m0|069| 4min 0s | Object Oriented Design |
01 | RCS1032✱ | Remove redundant parentheses | |m0|041| 0 | |m1|052| 4 | |m0|109| 0 | |m0|039| 0min 0s | |m0|070| 4min 0s | Roslynator |
01 | ND1006● | Avoid methods potentially poorly commented | |m0|042| 0 | |m0|077| 1 | |m0|110| 0 | |m0|040| 0min 0s | |m0|077| 2min 54s | Code Smells |
01 | MA0025✱ | Implement the functionality instead of throwing NotImplementedException | |m0|043| 0 | |m0|060| 2 | |m0|111| 0 | |m0|041| 0min 0s | |m0|078| 2min 0s | Design |
01 | RCS1021✱ | Convert lambda expression body to expression body | |m0|044| 0 | |m1|056| 3 | |m0|106| 0 | |m0|042| 0min 0s | |m0|076| 3min 0s | Roslynator |
01 | RCS1170✱ | Use read-only auto-implemented property | |m0|045| 0 | |m1|059| 3 | |m0|107| 0 | |m0|043| 0min 0s | |m0|074| 3min 0s | Roslynator |
01 | ND2103● | Namespace name should correspond to file location | |m0|046| 0 | |m0|085| 1 | |m0|108| 0 | |m0|044| 0min 0s | |m0|075| 3min 0s | Source Files Organization |
01 | MA0031✱ | Optimize Enumerable.Count() usage | |m0|047| 0 | |m0|097| 1 | |m0|089| 0 | |m0|045| 0min 0s | |m0|089| 1min 0s | Performance |
01 | MA0154✱ | Use langword in XML comment | |m0|048| 0 | |m60|002| 154 | |m0|090| 0 | |m0|046| 0min 0s | |m2|010| 2h 34min | Design |
00 | ND1004● | Avoid methods with too many parameters | |m0|049| 0 | |m1|058| 3 | |m0|091| 0 | |m0|047| 0min 0s | |m3|009| 3h 18min | Code Smells |
01 | RCS1154✱ | Sort enum members | |m0|050| 0 | |m0|082| 1 | |m0|086| 0 | |m0|048| 0min 0s | |m0|102| 1min 0s | Roslynator |
01 | RCS1173✱ | Use coalesce expression instead of 'if' | |m0|051| 0 | |m0|084| 1 | |m0|087| 0 | |m0|049| 0min 0s | |m0|100| 1min 0s | Roslynator |
01 | RCS1169✱ | Make field read-only | |m0|052| 0 | |m0|081| 1 | |m0|088| 0 | |m0|050| 0min 0s | |m0|101| 1min 0s | Roslynator |
01 | ND1213● | Avoid types initialization cycles | |m0|053| 0 | |m3|032| 9 | |m0|092| 0 | |m0|051| 0min 0s | |m10|002| 1d 2h | Object Oriented Design |
01 | ND2013● | Avoid prefixing type name with parent namespace name | |m0|054| 0 | |m1|050| 4 | |m0|096| 0 | |m0|052| 0min 0s | |m0|024| 40min | Naming Conventions |
01 | ND1905● | A field must not be assigned from outside its parent hierarchy types | |m0|055| 0 | |m9|018| 24 | |m0|097| 0 | |m0|053| 0min 0s | |m7|004| 1d 0h | Immutability |
00 | ND1003● | Avoid methods too big, too complex | |m0|056| 0 | |m2|039| 7 | |m0|098| 0 | |m0|054| 0min 0s | |m4|007| 4h 31min | Code Smells |
01 | ND1701● | Potentially Dead Methods | |m0|057| 0 | |m18|008| 47 | |m0|093| 0 | |m0|055| 0min 0s | |m7|005| 1d 0h | Dead Code |
01 | MA0020✱ | Use direct methods instead of LINQ methods | |m0|058| 0 | |m0|102| 1 | |m0|094| 0 | |m0|056| 0min 0s | |m0|093| 1min 0s | Performance |
01 | RCS1077✱ | Optimize LINQ method call | |m0|059| 0 | |m0|074| 1 | |m0|095| 0 | |m0|057| 0min 0s | |m0|094| 1min 0s | Roslynator |
01 | RCS1213✱ | Remove unused member declaration | |m0|060| 0 | |m0|100| 1 | |m11|011| 1 | |m0|083| 0min 0s | |m0|092| 1min 0s | Roslynator |
01 | MA0028✱ | Optimize StringBuilder usage | |m0|061| 0 | |m0|098| 1 | |m100|000| 9 | |m0|075| 0min 0s | |m0|090| 1min 0s | Performance |
01 | CA1822✱ | Mark members as static | |m0|062| 0 | |m0|096| 1 | |m88|001| 8 | |m0|076| 0min 0s | |m0|091| 1min 0s | Performance |
01 | RCS1232✱ | Order elements in documentation comment | |m0|063| 0 | |m0|080| 1 | |m0|028| 0 | |m0|066| 0min 0s | |m0|098| 1min 0s | Roslynator |
01 | RCS1225✱ | Make class sealed | |m0|064| 0 | |m0|083| 1 | |m0|026| 0 | |m0|070| 0min 0s | |m0|099| 1min 0s | Roslynator |
01 | RCS1205✱ | Order named arguments according to the order of parameters | |m0|065| 0 | |m0|072| 1 | |m0|027| 0 | |m0|071| 0min 0s | |m0|097| 1min 0s | Roslynator |
01 | MA0015✱ | Specify the parameter name in ArgumentException | |m0|066| 0 | |m0|078| 1 | |m0|031| 0 | |m0|085| 0min 0s | |m0|095| 1min 0s | Usage |
01 | ND1806● | Constructors of abstract classes should be declared as protected or private | |m0|067| 0 | |m0|063| 2 | |m0|035| 0 | |m0|099| 0min 0s | |m0|096| 1min 0s | Visibility |
01 | ND1603● | Assemblies and Namespaces should be tested | |m0|068| 0 | |m0|093| 1 | |m0|036| 0 | |m0|100| 0min 0s | |m0|068| 4min 0s | Code Coverage |
01 | ND2022● | Nested class members should not mask outer class' static members | |m0|069| 0 | |m4|029| 11 | |m0|034| 0 | |m0|104| 0min 0s | |m0|039| 22min | Naming Conventions |
01 | ND2001● | Static fields naming convention | |m0|070| 0 | |m2|036| 7 | |m0|032| 0 | |m0|102| 0min 0s | |m0|040| 21min | Naming Conventions |
01 | MA0007✱ | Add a comma after the last value | |m0|071| 0 | |m8|020| 23 | |m0|033| 0 | |m0|103| 0min 0s | |m0|038| 23min | Style |
00 | ND1000● | Avoid types too big | |m0|072| 0 | |m0|073| 1 | |m0|025| 0 | |m0|069| 0min 0s | |m1|020| 1h 3min | Code Smells |
01 | MA0006✱ | Use String.Equals instead of equality operator | |m0|073| 0 | |m9|019| 24 | |m0|017| 0 | |m0|081| 0min 0s | |m0|037| 24min | Usage |
01 | ND1312● | Do implement methods that throw NotImplementedException | |m0|074| 0 | |m0|066| 2 | |m0|018| 0 | |m0|062| 0min 0s | |m0|044| 20min | Design |
01 | ND1605● | Namespaces almost 100% tested should be 100% tested | |m0|075| 0 | |m1|054| 3 | |m0|016| 0 | |m0|080| 0min 0s | |m1|018| 1h 12min | Code Coverage |
01 | ND2016● | Methods prefixed with 'Try' should return a boolean | |m0|076| 0 | |m0|065| 2 | |m0|015| 0 | |m0|079| 0min 0s | |m0|043| 20min | Naming Conventions |
01 | ND1304● | Classes that are candidate to be turned into structures | |m0|077| 0 | |m0|089| 1 | |m0|019| 0 | |m0|063| 0min 0s | |m0|041| 20min | Design |
01 | ND1902● | Avoid static fields with a mutable field type | |m0|078| 0 | |m0|070| 2 | |m0|023| 0 | |m0|061| 0min 0s | |m0|042| 20min | Immutability |
01 | ND1807● | Avoid public methods not publicly visible | |m0|079| 0 | |m19|007| 49 | |m0|024| 0 | |m0|065| 0min 0s | |m0|035| 24min | Visibility |
00 | ND1901● | Avoid non-readonly static fields | |m0|080| 0 | |m1|046| 5 | |m0|022| 0 | |m0|060| 0min 0s | |m0|022| 42min | Immutability |
01 | ND2003● | Abstract base class should be suffixed with 'Base' | |m0|081| 0 | |m2|038| 7 | |m0|020| 0 | |m0|064| 0min 0s | |m0|029| 35min | Naming Conventions |
01 | ND1604● | Types almost 100% tested should be 100% tested | |m0|082| 0 | |m6|022| 17 | |m22|005| 2 | |m0|073| 0min 0s | |m0|023| 41min | Code Coverage |
01 | RCS1163✱ | Unused parameter | |m0|083| 0 | |m15|009| 40 | |m11|010| 1 | |m0|082| 0min 0s | |m0|025| 40min | Roslynator |
01 | ND1201● | Base class should not use derivatives | |m0|084| 0 | |m1|051| 4 | |m0|050| 0 | |m0|088| 0min 0s | |m0|026| 39min | Object Oriented Design |
01 | ND1207● | Non-static classes should be instantiated or turned to static | |m0|085| 0 | |m5|027| 13 | |m0|054| 0 | |m0|098| 0min 0s | |m0|033| 26min | Object Oriented Design |
01 | MA0003✱ | Add parameter name to improve readability | |m0|086| 0 | |m20|005| 53 | |m0|058| 0 | |m0|058| 0min 0s | |m0|021| 53min | Style |
01 | ND1313● | Override equals and operator equals on value types | |m0|087| 0 | |m0|067| 2 | |m0|021| 0 | |m0|059| 0min 0s | |m0|032| 28min | Design |
01 | MA0084✱ | Local variables should not hide other symbols | |m0|088| 0 | |m13|013| 35 | |m0|059| 0 | |m0|027| 0min 0s | |m0|030| 35min | Design |
01 | ND3106● | Seal methods that satisfy non-public interfaces | |m0|089| 0 | |m0|091| 1 | |m0|057| 0 | |m0|095| 0min 0s | |m0|031| 30min | Security |
01 | MA0002✱ | IEqualityComparer<string> or IComparer<string> is missing | |m0|090| 0 | |m7|021| 18 | |m0|056| 0 | |m0|094| 0min 0s | |m0|046| 18min | Usage |
01 | ND2104● | Types with source files stored in the same directory, should be declared in the same namespace | |m0|091| 0 | |m0|087| 1 | |m0|040| 0 | |m0|110| 0min 0s | |m0|061| 7min | Source Files Organization |
01 | ND1300● | Avoid custom delegates | |m0|092| 0 | |m1|047| 5 | |m0|041| 0 | |m0|111| 0min 0s | |m1|014| 1h 43min | Design |
01 | RCS1058✱ | Use compound assignment | |m0|093| 0 | |m3|034| 8 | |m0|039| 0 | |m0|109| 0min 0s | |m0|060| 8min | Roslynator |
01 | MA0053✱ | Make class sealed | |m0|094| 0 | |m3|033| 8 | |m0|037| 0 | |m0|101| 0min 0s | |m0|058| 8min | Design |
01 | ND1805● | Fields should be declared as private or protected | |m0|095| 0 | |m2|043| 6 | |m0|038| 0 | |m0|105| 0min 0s | |m0|059| 8min | Visibility |
01 | RCS1192✱ | Unnecessary usage of verbatim string literal | |m0|096| 0 | |m1|045| 5 | |m0|042| 0 | |m0|106| 0min 0s | |m0|066| 5min | Roslynator |
01 | ND1203● | Class with no descendant should be sealed if possible | |m0|097| 0 | |m3|035| 8 | |m0|046| 0 | |m0|090| 0min 0s | |m0|067| 4min 0s | Object Oriented Design |
01 | ND1900● | Fields should be marked as ReadOnly when possible | |m0|098| 0 | |m0|094| 1 | |m0|045| 0 | |m0|089| 0min 0s | |m0|065| 5min | Immutability |
01 | RCS1194✱ | Implement exception constructors | |m0|099| 0 | |m2|041| 7 | |m11|009| 1 | |m0|078| 0min 0s | |m0|063| 7min | Roslynator |
01 | MA0008✱ | Add StructLayoutAttribute | |m0|100| 0 | |m2|042| 6 | |m0|044| 0 | |m0|108| 0min 0s | |m0|064| 6min | Performance |
01 | ND1204● | Overrides of Method() should call base.Method() | |m0|101| 0 | |m0|099| 1 | |m0|043| 0 | |m0|107| 0min 0s | |m0|057| 10min | Object Oriented Design |
01 | ND1002● | Avoid types with too many fields | |m0|102| 0 | |m0|079| 1 | |m0|047| 0 | |m0|091| 0min 0s | |m1|017| 1h 14min | Code Smells |
01 | MA0071✱ | Avoid using redundant else | |m0|103| 0 | |m5|024| 15 | |m0|048| 0 | |m0|086| 0min 0s | |m0|051| 15min | Style |
01 | ND1305● | Avoid namespaces with few types | |m0|104| 0 | |m1|055| 3 | |m0|055| 0 | |m0|093| 0min 0s | |m0|049| 15min | Design |
01 | ND1803● | Types that could be declared as private, nested in a parent type | |m0|105| 0 | |m2|044| 6 | |m0|049| 0 | |m0|087| 0min 0s | |m0|047| 18min | Visibility |
01 | ND1700● | Potentially Dead Types | |m0|106| 0 | |m0|092| 1 | |m0|051| 0 | |m0|092| 0min 0s | |m0|048| 15min | Dead Code |
01 | ND2000● | Instance fields naming convention | |m0|107| 0 | |m12|014| 32 | |m0|053| 0 | |m0|097| 0min 0s | |m1|015| 1h 36min | Naming Conventions |
01 | RCS1036✱ | Remove unnecessary blank line | |m0|108| 0 | |m4|030| 11 | |m0|052| 0 | |m0|096| 0min 0s | |m0|056| 11min | Roslynator |
01 | ND2102● | Avoid defining multiple types in a source file | |m0|109| 0 | |m1|049| 4 | |m11|014| 1 | |m0|084| 0min 0s | |m0|054| 12min | Source Files Organization |
01 | RCS1085✱ | Use auto-implemented property | |m0|110| 0 | |m5|025| 15 | |m0|030| 0 | |m0|068| 0min 0s | |m0|052| 15min | Roslynator |
01 | ND1007● | Avoid types with poor cohesion | |m0|111| 0 | |m0|075| 1 | |m0|029| 0 | |m0|067| 0min 0s | |m1|016| 1h 28min | Code Smells |
Size
Rules
Issues
% Coverage and % Debt
Quality Gates
Debt
No Trend Data has been logged for this Chart.Analysis Logs
Logs emitted during NDepend analysis.
Warnings can reveal potential flaws concerning the health of the build process.
A particular warning can be disabled through the NDepend interactive UI, panel Error List, tick the checkbox Disabled corresponding to the warning to disable.
Message | |
---|---|
Begin full analysis with NDepend v2024.1.0 on 20 Mar 2024 10:42:03 | |
Visual Studio solution file resolved to absolute file path: from {..\3.1.0\src\NodaTime.sln} to {C:\My\NDepend\WebSite\SampleReport\NodaTime\3.1.0\src\NodaTime.sln} | |
Output directory resolved to absolute directory path: C:\My\NDepend\WebSite\SampleReport\NodaTime\3.1.0 NDepend\NDependOut | |
Coverage file resolved to absolute file path: from {.\Coverage_27Sep2023_DetailedXml.xml} to {C:\My\NDepend\WebSite\SampleReport\NodaTime\3.1.0 NDepend\Coverage_27Sep2023_DetailedXml.xml} | |
There is no assembly directory referenced by the project file {C:\My\NDepend\WebSite\SampleReport\NodaTime\3.1.0 NDepend\NDependProject.ndproj}. You must define the .NET Profile in Project Properties > Code To Analyze > Directories, to resolve third-party assemblies. | |
Compare with project {NodaTime 3.0.0} most recent analysis result (analysis result obtained on 19 Mar 2024 10:15:27) | |
.NET Assembly resolved from the Visual Studio solution file {C:\My\NDepend\WebSite\SampleReport\NodaTime\3.1.0\src\NodaTime.sln} C:\My\NDepend\WebSite\SampleReport\NodaTime\3.1.0\src\NodaTime\bin\Debug\netstandard2.0\NodaTime.dll | |
.NET Assemblies filtered out from the Visual Studio solution file {C:\My\NDepend\WebSite\SampleReport\NodaTime\3.1.0\src\NodaTime.sln} NodaTime.Benchmarks NodaTime.Demo NodaTime.Test NodaTime.Testing NodaTime.TzdbCompiler NodaTime.TzdbCompiler.Test NodaTime.TzValidate.NodaDump NodaTime.TzValidate.NzdCompatibility NodaTime.NzdPrinter NodaTime.Tools.Common NodaTime.Tools.DumpTimeZoneInfo NodaTime.Tools.ValidateHistoricalNzd | |
Concurrent mode | |
179 source files parsed ; all source files found ; all source files in-sync with PDB | |
0 code rule has been extracted from code. | |
No dependency cycle detected in assemblies referencement graph. | |
No coverage exclusion file provided (a file with extension .runsettings). | |
Coverage file correctly parsed: C:\My\NDepend\WebSite\SampleReport\NodaTime\3.1.0 NDepend\Coverage_27Sep2023_DetailedXml.xml | |
The assembly {NodaTime} is not in sync with corresponding coverage data. The analysis found 3 methods in the assembly that have no associated coverage data. For example, one of this method is {NodaTime.TimeZones.IO.TzdbStreamField.ReadFields(Stream)} | |
Do merge code generated by compiler into application code. | |
The file C:\My\NDepend\WebSite\SampleReport\NodaTime\3.1.0\src\.sarif\NodaTime.Test.json doesn't have a JSON format. | |
821 issues emitted by 53 rules have been imported. | |
Analyze dependencies of your application. | |
No SuppressMessageAttribute found in the analyzed code base. Since NDepend v2018.2 SuppressMessageAttribute can be used to suppress NDepend issues. Don't forget to set in your projects the compilation symbol CODE_ANALYSIS to use this attribute to suppress NDepend issues. | |
Persisting code model snapshot in {C:\My\NDepend\WebSite\SampleReport\NodaTime\3.1.0 NDepend\NDependOut\NDependAnalysisResult_NodaTime_3_1_0_2024Mar20_10h42m03.ndar} | |
Log trend metrics values. | |
Execute queries and rules | |
Output report source files | |
The report lists 179 sources files (3 new and 86 modified since the baseline) on a total of 179 source files for the application analyzed. See 'Project Properties > Report' to adjust the set of source files listed in the report. | |
Output report projects | |
2 quality gates warn: - 'Critical Issues' value 9 issues greater than warn threshold 0 issues - 'New Debt since Baseline' value 0.046 man-days greater than warn threshold 0 man-days | |
3 quality gates fail: - 'New Blocker / Critical / High Issues' value 28 issues greater than fail threshold 0 issues - 'Critical Rules Violated' value 5 rules greater than fail threshold 0 rules - 'Debt Rating per Namespace' value 5 namespaces greater than fail threshold 0 namespaces | |
Building the report (standard). | |
NDepend analysis done. Duration: 00:09.407 |
Application Statistics
Stat | # Occurences | Avg | StdDev | Max |
---|---|---|---|---|
Properties on interfaces | 13 interfaces | 0.54 | 0.75 | 2 properties on NodaTime.IDateTimeZoneProvider |
Methods on interfaces | 13 interfaces | 3.46 | 2.5 | 9 methods on NodaTime.TimeZones.IO.IDateTimeZoneReader |
Arguments on methods on interfaces | 45 methods | 0.78 | 0.84 | 4 arguments on NodaTime.Calendars.IWeekYearRule.GetLocalDate(Int32,Int32,IsoDayOfWeek,CalendarSystem) |
Public properties on classes | 232 Classes | 1.11 | 2.71 | 20 public properties on NodaTime.Globalization.NodaFormatInfo |
Public methods on classes | 232 classes | 3.27 | 5.6 | 47 public methods on NodaTime.Period |
Arguments on public methods on classes | 759 methods | 0.82 | 0.97 | 6 arguments on NodaTime.TimeZones.SkippedTimeResolver.BeginInvoke(LocalDateTime,DateTimeZone,ZoneInterval,ZoneInterval,AsyncCallback,Object) |
IL instructions in non-abstract methods | 2,265 methods | 22.54 | 43.24 | 537 IL instructions in NodaTime.TimeZones.TzdbDateTimeZoneSource.Validate() |
Cyclomatic complexity on non abstract Methods | 2,265 Methods | 2.42 | 4.16 | CC = 53 for NodaTime.TimeZones.TzdbDateTimeZoneSource.Validate() |
Assemblies Metrics
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 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
NodaTime v3.1.0.0 | 7054 | 51063 | 276 | 25 | 15075 | 68.12 | 98.67 | 0 | 161 | 8.11 | 1 | 0.09 | 0.06 |
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.
Types Metrics : Code Quality
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 |
---|---|---|---|---|---|---|---|---|---|---|---|
NullableAttribute | 17.99 | 0 | 19 | - | - | - | 2 | - | 197 | 6 | System.Runtime.CompilerServices |
NullableContextAttribute | 16.1 | 0 | 7 | - | - | - | 1 | - | 169 | 6 | System.Runtime.CompilerServices |
EmbeddedAttribute | 5.92 | 0 | 4 | - | - | - | 1 | - | 4 | 3 | Microsoft.CodeAnalysis |
InvokerParameterNameAttribute | 5.64 | 0 | 4 | 0 | - | 0 | 1 | - | 90 | 3 | JetBrains.Annotations |
Preconditions | 5.39 | 32 | 297 | 22 | 40.74 | 39 | 38 | 81.25 | 89 | 21 | NodaTime.Utility |
ParseResult<T> | 4.98 | 74 | 601 | 95 | 56.21 | 56 | 67 | 100 | 67 | 30 | NodaTime.Text |
IPattern<T> | 4.58 | - | - | 21 | 100 | 0 | - | - | 51 | 6 | NodaTime.Text |
Instant | 4.55 | 107 | 700 | 436 | 80.29 | 78 | 86 | 100 | 42 | 57 | NodaTime |
Offset | 3.97 | 59 | 356 | 323 | 84.55 | 46 | 50 | 100 | 55 | 37 | NodaTime |
TrustedAttribute | 3.36 | 0 | 4 | 0 | - | 0 | 1 | - | 48 | 3 | NodaTime.Annotations |
LocalDate | 3.13 | 134 | 910 | 506 | 79.06 | 86 | 92 | 100 | 42 | 58 | NodaTime |
CalendarSystem | 3 | 129 | 815 | 417 | 76.37 | 54 | 98 | 99.22 | 48 | 46 | NodaTime |
ImmutableAttribute | 2.47 | 0 | 4 | 0 | - | 0 | 1 | - | 38 | 3 | NodaTime.Annotations |
YearMonthDayCalculator | 2.43 | 46 | 260 | 80 | 63.49 | 15 | 17 | 100 | 28 | 15 | NodaTime.Calendars |
SpecialNullHandlingAttribute | 2.38 | 0 | 4 | 0 | - | 0 | 1 | - | 30 | 3 | NodaTime.Annotations |
LocalDateTime | 2.23 | 140 | 989 | 590 | 80.82 | 91 | 97 | 99.29 | 37 | 55 | NodaTime |
NodaFormatInfo | 2.17 | 119 | 792 | 180 | 60.2 | 58 | 105 | 100 | 36 | 73 | NodaTime.Globalization |
TypeConverterBase<T> | 2.14 | 5 | 56 | 12 | 70.59 | 7 | 9 | 100 | 13 | 16 | NodaTime.Text |
PatternFields | 2.12 | - | - | 4 | 100 | 0 | - | - | 30 | 3 | NodaTime.Text.Patterns |
ZonedDateTime | 2 | 93 | 527 | 454 | 83 | 71 | 73 | 98.92 | 27 | 58 | NodaTime |
DateTimeZone | 1.93 | 95 | 655 | 274 | 74.25 | 45 | 71 | 98.95 | 27 | 44 | NodaTime |
YearMonthDay | 1.92 | 23 | 207 | 5 | 17.86 | 22 | 25 | 100 | 24 | 16 | NodaTime |
Duration | 1.77 | 194 | 1560 | 624 | 76.28 | 150 | 185 | 99.48 | 24 | 43 | NodaTime |
IsoDayOfWeek | 1.69 | - | - | 26 | 100 | 0 | - | - | 22 | 2 | NodaTime |
ParseBucket<T> | 1.69 | 0 | 4 | 6 | 100 | 0 | 1 | - | 21 | 7 | NodaTime.Text |
OffsetDateTime | 1.64 | 122 | 733 | 396 | 76.45 | 81 | 85 | 100 | 23 | 59 | NodaTime |
ZoneInterval | 1.63 | 42 | 398 | 176 | 80.73 | 40 | 45 | 100 | 22 | 22 | NodaTime.TimeZones |
LocalTime | 1.59 | 127 | 1157 | 431 | 77.24 | 127 | 112 | 88.98 | 27 | 44 | NodaTime |
Era | 1.55 | 20 | 63 | 36 | 64.29 | 12 | 12 | 100 | 25 | 8 | NodaTime.Calendars |
IsReadOnlyAttribute | 1.52 | 0 | 4 | - | - | - | 1 | - | 18 | 4 | System.Runtime.CompilerServices |
PatternBclSupport<T> | 1.51 | 8 | 39 | 2 | 20 | 3 | 3 | 100 | 24 | 11 | NodaTime.Text.Patterns |
ValueCursor | 1.49 | 114 | 742 | 90 | 44.12 | 51 | 75 | 100 | 17 | 20 | NodaTime.Text |
CalendarOrdinal | 1.26 | - | - | 1 | 100 | 0 | - | - | 15 | 2 | NodaTime |
MutableAttribute | 1.24 | 0 | 4 | 0 | - | 0 | 1 | - | 9 | 3 | NodaTime.Annotations |
RegularYearMonthDayCalculator | 1.13 | 38 | 232 | 21 | 35.59 | 14 | 20 | 100 | 11 | 11 | NodaTime.Calendars |
FixedFormatInfoPatternParser<T> | 1.12 | 4 | 37 | 2 | 33.33 | 2 | 4 | 100 | 14 | 15 | NodaTime.Text |
PureAttribute | 1.05 | 0 | 4 | 0 | - | 0 | 1 | - | 16 | 3 | JetBrains.Annotations |
IPartialPattern<T> | 1.05 | - | - | 7 | 100 | 0 | - | - | 24 | 5 | NodaTime.Text |
IZoneIntervalMap | 1.03 | - | - | 0 | - | 0 | - | - | 14 | 4 | NodaTime.TimeZones |
Period | 0.97 | 196 | 1588 | 458 | 70.03 | 113 | 125 | 100 | 13 | 40 | NodaTime |
IDateTimeZoneProvider | 0.97 | - | - | 89 | 100 | 0 | - | - | 13 | 6 | NodaTime |
HashCodeHelper | 0.92 | 13 | 168 | 22 | 62.86 | 12 | 18 | 100 | 17 | 9 | NodaTime.Utility |
TextCursor | 0.91 | 40 | 236 | 58 | 59.18 | 21 | 27 | 100 | 18 | 11 | NodaTime.Text |
YearMonthDayCalendar | 0.89 | 18 | 202 | 11 | 37.93 | 16 | 18 | 100 | 11 | 18 | NodaTime |
XmlSchemaDefinition | 0.84 | 103 | 1050 | 25 | 19.53 | 30 | 64 | 100 | 14 | 73 | NodaTime.Xml |
OffsetTime | 0.82 | 40 | 283 | 154 | 79.38 | 34 | 37 | 100 | 11 | 43 | NodaTime |
ValidatedNotNullAttribute | 0.79 | 0 | 4 | 0 | - | 0 | 1 | - | 13 | 3 | NodaTime.Annotations |
VisibleForTestingAttribute | 0.77 | 0 | 4 | 0 | - | 0 | 1 | - | 12 | 3 | NodaTime.Annotations |
LocalDateTimePattern | 0.75 | 34 | 172 | 177 | 83.89 | 25 | 29 | 100 | 8 | 28 | NodaTime.Text |
LocalDatePattern | 0.69 | 31 | 164 | 143 | 82.18 | 22 | 26 | 100 | 7 | 28 | NodaTime.Text |
OffsetDate | 0.69 | 41 | 223 | 126 | 75.45 | 31 | 33 | 100 | 9 | 42 | NodaTime |
LocalInstant | 0.67 | 44 | 263 | 114 | 72.15 | 33 | 39 | 100 | 9 | 19 | NodaTime |
InstantPattern | 0.66 | 26 | 122 | 106 | 80.3 | 17 | 18 | 100 | 5 | 25 | NodaTime.Text |
LocalDatePatternParser+LocalDatePa rseBucket | 0.65 | 80 | 618 | 42 | 34.43 | 46 | 69 | 98.75 | 13 | 29 | NodaTime.Text |
PatternCursor | 0.64 | 42 | 276 | 40 | 48.78 | 22 | 30 | 100 | 15 | 14 | NodaTime.Text.Patterns |
IPatternParser<T> | 0.63 | - | - | 0 | - | 0 | - | - | 14 | 5 | NodaTime.Text.Patterns |
IDateTimeZoneReader | 0.62 | - | - | 55 | 100 | 0 | - | - | 12 | 9 | NodaTime.TimeZones.IO |
InvalidPatternException | 0.62 | 3 | 20 | 13 | 81.25 | 3 | 3 | 100 | 15 | 10 | NodaTime.Text |
SteppedPatternBuilder<TResult ,TBucket> | 0.61 | 212 | 1720 | 103 | 32.7 | 92 | 163 | 99.06 | 14 | 56 | NodaTime.Text.Patterns |
YearMonth | 0.61 | 60 | 445 | 206 | 77.44 | 42 | 43 | 98.33 | 8 | 40 | NodaTime |
LocalTimePattern | 0.61 | 30 | 152 | 135 | 81.82 | 22 | 26 | 100 | 5 | 26 | NodaTime.Text |
OffsetPattern | 0.6 | 22 | 94 | 83 | 79.05 | 14 | 15 | 100 | 8 | 23 | NodaTime.Text |
IDatePeriodField | 0.6 | - | - | 17 | 100 | 0 | - | - | 6 | 2 | NodaTime.Fields |
DurationPattern | 0.58 | 19 | 84 | 82 | 81.19 | 13 | 14 | 100 | 4 | 23 | NodaTime.Text |
YearMonthPattern | 0.57 | 29 | 152 | 121 | 80.67 | 20 | 24 | 100 | 5 | 27 | NodaTime.Text |
AnnualDatePattern | 0.56 | 29 | 152 | 117 | 80.14 | 20 | 24 | 100 | 5 | 27 | NodaTime.Text |
DateTimeZoneCache | 0.56 | 39 | 242 | 25 | 39.06 | 18 | 23 | 100 | 3 | 28 | NodaTime.TimeZones |
BclConversions | 0.55 | 6 | 51 | 18 | 75 | 8 | 12 | 100 | 3 | 7 | NodaTime.Utility |
IDateTimeZoneSource | 0.54 | - | - | 62 | 100 | 0 | - | - | 5 | 4 | NodaTime.TimeZones |
IDateTimeZoneWriter | 0.54 | - | - | 53 | 100 | 0 | - | - | 10 | 9 | NodaTime.TimeZones.IO |
OffsetDateTimePattern | 0.53 | 28 | 137 | 161 | 85.19 | 21 | 21 | 100 | 6 | 24 | NodaTime.Text |
CharacterHandler<TResult,TBucket> | 0.52 | - | - | 0 | - | 0 | - | - | 14 | 11 | NodaTime.Text |
LocalTimePatternParser+LocalTimePa rseBucket | 0.52 | 36 | 268 | 29 | 44.62 | 17 | 21 | 100 | 10 | 16 | NodaTime.Text |
AnnualDate | 0.52 | 32 | 203 | 154 | 82.8 | 26 | 28 | 87.5 | 6 | 41 | NodaTime |
OffsetDateTime+Comparer | 0.51 | 3 | 9 | 63 | 95.45 | 3 | 3 | 100 | 5 | 11 | NodaTime |
OffsetTimePattern | 0.49 | 26 | 121 | 133 | 83.65 | 19 | 19 | 100 | 5 | 22 | NodaTime.Text |
OffsetDatePattern | 0.49 | 26 | 131 | 137 | 84.05 | 19 | 19 | 100 | 5 | 24 | NodaTime.Text |
PersianYearMonthDayCalculator | 0.48 | 35 | 220 | 21 | 37.5 | 18 | 26 | 100 | 3 | 19 | NodaTime.Calendars |
EraCalculator | 0.48 | 3 | 12 | 0 | 0 | 2 | 2 | 100 | 4 | 11 | NodaTime.Calendars |
SteppedPatternBuilder<TResult ,TBucket>+ParseAction | 0.46 | - | - | 0 | - | 0 | - | - | 6 | 11 | NodaTime.Text.Patterns |
HebrewScripturalCalculator | 0.46 | 107 | 821 | 70 | 39.55 | 52 | 97 | 100 | 2 | 10 | NodaTime.Calendars |
YearStartCacheEntry | 0.46 | 12 | 68 | 30 | 71.43 | 8 | 9 | 100 | 2 | 6 | NodaTime.Calendars |
PeriodPattern | 0.46 | 16 | 89 | 46 | 74.19 | 12 | 13 | 100 | 5 | 22 | NodaTime.Text |
ZoneLocalMapping | 0.44 | 30 | 164 | 58 | 65.91 | 22 | 24 | 90 | 5 | 21 | NodaTime.TimeZones |
PrecalculatedDateTimeZone+OffsetAg gregator | 0.42 | - | - | 0 | - | 0 | - | - | 2 | 8 | NodaTime.TimeZones |
DateTimeZoneProviders | 0.42 | 4 | 10 | 30 | 88.24 | 4 | 4 | 100 | 3 | 10 | NodaTime |
DateTimeZoneReader | 0.41 | 95 | 529 | 97 | 50.52 | 33 | 50 | 100 | 4 | 22 | NodaTime.TimeZones.IO |
DebugPreconditionException | 0.41 | 1 | 6 | 0 | 0 | 1 | 1 | 100 | 1 | 4 | NodaTime.Utility |
StringFormatMethodAttribute | 0.41 | 4 | 16 | 3 | 42.86 | 3 | 3 | 0 | 1 | 8 | JetBrains.Annotations |
ContractAnnotationAttribute | 0.41 | 9 | 38 | 0 | 0 | 6 | 6 | 0 | 1 | 11 | JetBrains.Annotations |
InvalidNodaDataException | 0.4 | 2 | 13 | 9 | 81.82 | 2 | 2 | 100 | 7 | 6 | NodaTime.Utility |
IWeekYearRule | 0.4 | - | - | 47 | 100 | 0 | - | - | 4 | 5 | NodaTime.Calendars |
ZoneLocalMappingResolver | 0.39 | - | - | 0 | - | 0 | - | - | 6 | 10 | NodaTime.TimeZones |
WindowsZones | 0.39 | 34 | 190 | 70 | 67.31 | 11 | 21 | 100 | 4 | 29 | NodaTime.TimeZones.Cldr |
TzdbDateTimeZoneSource | 0.38 | 157 | 1267 | 215 | 57.8 | 58 | 139 | 98.09 | 2 | 62 | NodaTime.TimeZones |
HebrewMonthNumbering | 0.38 | - | - | 19 | 100 | 0 | - | - | 3 | 2 | NodaTime.Calendars |
PatternFieldsExtensions | 0.38 | 2 | 12 | 6 | 75 | 2 | 2 | 100 | 4 | 4 | NodaTime.Text.Patterns |
ZonedDateTimePattern | 0.37 | 33 | 210 | 176 | 84.21 | 27 | 30 | 100 | 4 | 28 | NodaTime.Text |
ZonedDateTime+Comparer | 0.37 | 3 | 9 | 63 | 95.45 | 3 | 3 | 100 | 3 | 11 | NodaTime |
CachingZoneIntervalMap+HashArrayCa che+HashCacheNode | 0.37 | 16 | 77 | 18 | 52.94 | 6 | 7 | 100 | 2 | 15 | NodaTime.TimeZones |
TimeZoneInfoInterceptor+ITimeZoneI nfoShim | 0.36 | - | - | 0 | - | 0 | - | - | 2 | 5 | NodaTime.TimeZones |
IClock | 0.36 | - | - | 4 | 100 | 0 | - | - | 3 | 1 | NodaTime |
IslamicLeapYearPattern | 0.36 | - | - | 17 | 100 | 0 | - | - | 3 | 2 | NodaTime.Calendars |
IslamicEpoch | 0.36 | - | - | 7 | 100 | 0 | - | - | 3 | 2 | NodaTime.Calendars |
SkippedTimeException | 0.34 | 5 | 25 | 17 | 77.27 | 3 | 3 | 100 | 4 | 13 | NodaTime |
TickArithmetic | 0.33 | 14 | 132 | 34 | 70.83 | 6 | 8 | 100 | 3 | 11 | NodaTime.Utility |
XmlSerializationSettings | 0.33 | 6 | 49 | 9 | 60 | 3 | 7 | 100 | 3 | 11 | NodaTime.Xml |
DatePatternHelper | 0.33 | 68 | 603 | 24 | 26.09 | 24 | 52 | 95.59 | 7 | 36 | NodaTime.Text.Patterns |
ZonedDateTimePatternParser+ZonedDa teTimeParseBucket | 0.32 | 62 | 343 | 38 | 38 | 26 | 35 | 98.39 | 2 | 30 | NodaTime.Text |
PeriodUnits | 0.32 | - | - | 51 | 100 | 0 | - | - | 4 | 3 | NodaTime |
GJEraCalculator | 0.32 | 18 | 133 | 1 | 5.26 | 13 | 18 | 94.44 | 2 | 13 | NodaTime.Calendars |
TestExemptionCategory | 0.32 | - | - | 0 | - | 0 | - | - | 1 | 2 | NodaTime.Annotations |
GJYearMonthDayCalculator | 0.32 | 20 | 256 | 18 | 47.37 | 35 | 56 | 100 | 2 | 14 | NodaTime.Calendars |
UnparsableValueException | 0.32 | 3 | 18 | 12 | 80 | 3 | 3 | 66.67 | 1 | 7 | NodaTime.Text |
FixedDateTimeZone | 0.32 | 30 | 200 | 83 | 73.45 | 24 | 27 | 100 | 4 | 25 | NodaTime.TimeZones |
GregorianYearMonthDayCalculator | 0.31 | 65 | 551 | 31 | 32.29 | 59 | 91 | 96.92 | 3 | 18 | NodaTime.Calendars |
NodaConstants | 0.31 | 6 | 25 | 126 | 95.45 | 4 | 4 | 100 | 2 | 7 | NodaTime |
PeriodBuilder | 0.31 | 87 | 452 | 79 | 47.59 | 41 | 62 | 100 | 4 | 28 | NodaTime |
PersianYearMonthDayCalculator+Arit hmetic | 0.3 | 4 | 37 | 1 | 20 | 3 | 4 | 100 | 2 | 8 | NodaTime.Calendars |
PersianYearMonthDayCalculator+Simp le | 0.3 | 4 | 38 | 10 | 71.43 | 3 | 4 | 100 | 2 | 9 | NodaTime.Calendars |
PersianYearMonthDayCalculator+Astr onomical | 0.3 | 3 | 26 | 2 | 40 | 3 | 3 | 100 | 2 | 12 | NodaTime.Calendars |
Interval | 0.3 | 40 | 294 | 128 | 76.19 | 33 | 44 | 100 | 4 | 30 | NodaTime |
Cache<TKey,TValue> | 0.3 | 17 | 110 | 23 | 57.5 | 9 | 15 | 100 | 2 | 16 | NodaTime.Utility |
OffsetDateTime+LocalComparer | 0.3 | 9 | 67 | 3 | 25 | 7 | 9 | 100 | 2 | 19 | NodaTime |
OffsetDateTime+InstantComparer | 0.3 | 5 | 29 | 4 | 44.44 | 5 | 5 | 100 | 2 | 11 | NodaTime |
TimePatternHelper | 0.3 | 109 | 1036 | 46 | 29.68 | 38 | 102 | 100 | 6 | 27 | NodaTime.Text.Patterns |
BclDateTimeZoneSource | 0.3 | 16 | 100 | 51 | 76.12 | 10 | 15 | 100 | 1 | 25 | NodaTime.TimeZones |
FormatHelper | 0.29 | 169 | 1238 | 93 | 35.5 | 56 | 79 | 100 | 4 | 13 | NodaTime.Text |
ZonedDateTime+InstantComparer | 0.29 | 5 | 27 | 3 | 37.5 | 5 | 5 | 100 | 2 | 12 | NodaTime |
ZonedDateTime+LocalComparer | 0.29 | 5 | 27 | 3 | 37.5 | 5 | 5 | 100 | 2 | 12 | NodaTime |
TimeSpanExtensions | 0.29 | 2 | 6 | 14 | 87.5 | 2 | 2 | 100 | 3 | 5 | NodaTime.Extensions |
CachingZoneIntervalMap+HashArrayCa che | 0.29 | 14 | 87 | 20 | 58.82 | 8 | 11 | 100 | 1 | 14 | NodaTime.TimeZones |
TimePeriodField | 0.29 | 61 | 387 | 13 | 17.57 | 23 | 28 | 100 | 3 | 14 | NodaTime.Fields |
AmbiguousTimeException | 0.28 | 9 | 55 | 30 | 76.92 | 5 | 5 | 100 | 3 | 15 | NodaTime |
ZoneEqualityComparer+Options | 0.28 | - | - | 26 | 100 | 0 | - | - | 3 | 4 | NodaTime.TimeZones |
Resolvers | 0.28 | 47 | 232 | 76 | 61.79 | 11 | 27 | 95.74 | 3 | 25 | NodaTime.TimeZones |
TestExemptionAttribute | 0.27 | 3 | 11 | 0 | 0 | 2 | 2 | 100 | 2 | 6 | NodaTime.Annotations |
LocalDateTimePatternParser+LocalDa teTimeParseBucket | 0.27 | 21 | 115 | 9 | 30 | 8 | 9 | 100 | 3 | 16 | NodaTime.Text |
OffsetTimePattern+Patterns | 0.27 | 5 | 25 | 0 | 0 | 1 | 2 | 100 | 3 | 12 | NodaTime.Text |
DateTimeZoneProviders+BclHolder | 0.26 | 1 | 5 | 0 | 0 | 1 | 1 | 100 | 1 | 7 | NodaTime |
DateTimeZoneProviders+TzdbHolder | 0.26 | 1 | 5 | 1 | 50 | 1 | 1 | 100 | 1 | 7 | NodaTime |
OffsetTypeConverter | 0.26 | 1 | 6 | 0 | 0 | 1 | 1 | 100 | 1 | 6 | NodaTime.Text |
OffsetDateTimePattern+Patterns | 0.26 | 6 | 30 | 0 | 0 | 1 | 2 | 100 | 3 | 12 | NodaTime.Text |
YearsPeriodField | 0.26 | 14 | 100 | 7 | 33.33 | 7 | 11 | 100 | 1 | 15 | NodaTime.Fields |
FixedLengthDatePeriodField | 0.26 | 32 | 188 | 2 | 5.88 | 12 | 16 | 100 | 1 | 15 | NodaTime.Fields |
MonthsPeriodField | 0.26 | 6 | 35 | 0 | 0 | 3 | 3 | 100 | 1 | 10 | NodaTime.Fields |
FixedMonthYearMonthDayCalculator | 0.26 | 10 | 85 | 2 | 16.67 | 10 | 13 | 100 | 1 | 9 | NodaTime.Calendars |
ZoneYearOffset | 0.26 | 73 | 641 | 96 | 56.8 | 46 | 58 | 100 | 3 | 28 | NodaTime.TimeZones |
OffsetDatePattern+Patterns | 0.26 | 4 | 20 | 0 | 0 | 1 | 2 | 100 | 3 | 12 | NodaTime.Text |
TzdbStreamData | 0.25 | 55 | 340 | 31 | 36.05 | 15 | 38 | 98.18 | 2 | 44 | NodaTime.TimeZones.IO |
ZonedDateTimePattern+Patterns | 0.25 | 4 | 18 | 0 | 0 | 1 | 2 | 100 | 3 | 13 | NodaTime.Text |
PartialZoneIntervalMap | 0.25 | 52 | 388 | 47 | 47.47 | 23 | 28 | 96.15 | 3 | 25 | NodaTime.TimeZones |
DatePeriodFields | 0.25 | 4 | 11 | 0 | 0 | 1 | 1 | 100 | 2 | 9 | NodaTime.Fields |
JulianYearMonthDayCalculator | 0.25 | 9 | 68 | 8 | 47.06 | 5 | 6 | 100 | 1 | 9 | NodaTime.Calendars |
TzdbStreamFieldId | 0.24 | - | - | 29 | 100 | 0 | - | - | 3 | 2 | NodaTime.TimeZones.IO |
ZoneEqualityComparer+ZoneIntervalE qualityComparer | 0.24 | 36 | 413 | 9 | 20 | 22 | 55 | 100 | 2 | 25 | NodaTime.TimeZones |
OffsetTimePatternParser | 0.24 | 45 | 431 | 5 | 10 | 6 | 42 | 100 | 2 | 36 | NodaTime.Text |
InstantPatternParser | 0.24 | 13 | 83 | 3 | 18.75 | 4 | 9 | 100 | 2 | 24 | NodaTime.Text |
TimeZoneInfoInterceptor+BclShim | 0.24 | 3 | 11 | 0 | 0 | 3 | 4 | 100 | 1 | 8 | NodaTime.TimeZones |
CopticYearMonthDayCalculator | 0.24 | 9 | 63 | 7 | 43.75 | 4 | 5 | 100 | 1 | 9 | NodaTime.Calendars |
UmAlQuraYearMonthDayCalculator | 0.24 | 50 | 339 | 15 | 23.08 | 15 | 21 | 97.96 | 1 | 20 | NodaTime.Calendars |
HebrewYearMonthDayCalculator | 0.24 | 81 | 609 | 43 | 34.68 | 47 | 66 | 100 | 1 | 15 | NodaTime.Calendars |
BadiYearMonthDayCalculator | 0.24 | 85 | 552 | 28 | 24.78 | 38 | 52 | 100 | 1 | 18 | NodaTime.Calendars |
OffsetDateTimePatternParser | 0.24 | 66 | 641 | 5 | 7.04 | 6 | 66 | 98.48 | 2 | 43 | NodaTime.Text |
LocalDateTimePatternParser | 0.24 | 68 | 685 | 8 | 10.53 | 5 | 69 | 100 | 2 | 42 | NodaTime.Text |
TypeConverterSettings | 0.24 | 6 | 49 | 13 | 68.42 | 3 | 7 | 66.67 | 1 | 11 | NodaTime.Text |
LocalTimePatternParser | 0.24 | 40 | 386 | 11 | 21.57 | 5 | 38 | 100 | 2 | 33 | NodaTime.Text |
OffsetDatePatternParser | 0.24 | 42 | 378 | 5 | 10.64 | 6 | 39 | 95.24 | 2 | 40 | NodaTime.Text |
LocalDatePatternParser | 0.24 | 37 | 337 | 16 | 30.19 | 5 | 35 | 100 | 2 | 36 | NodaTime.Text |
TimeZoneInfoInterceptor | 0.23 | 6 | 18 | 8 | 57.14 | 6 | 6 | 100 | 3 | 11 | NodaTime.TimeZones |
Transition | 0.23 | 14 | 92 | 36 | 72 | 11 | 13 | 100 | 2 | 13 | NodaTime.TimeZones |
CachingZoneIntervalMap | 0.23 | 1 | 7 | 19 | 95 | 1 | 1 | 100 | 2 | 7 | NodaTime.TimeZones |
ZonedClock | 0.23 | 13 | 67 | 46 | 77.97 | 10 | 10 | 100 | 1 | 20 | NodaTime |
YearMonthPatternParser | 0.23 | 30 | 278 | 10 | 25 | 5 | 27 | 100 | 2 | 36 | NodaTime.Text |
AnnualDatePatternParser | 0.23 | 28 | 233 | 8 | 22.22 | 11 | 21 | 96.43 | 2 | 33 | NodaTime.Text |
DateTimeZoneWriter+ZoneIntervalCon stants | 0.23 | 1 | 8 | 11 | 91.67 | 1 | 1 | 100 | 2 | 4 | NodaTime.TimeZones.IO |
InstantTypeConverter | 0.23 | 1 | 6 | 0 | 0 | 1 | 1 | 100 | 1 | 6 | NodaTime.Text |
PatternResources | 0.23 | 2 | 11 | 0 | 0 | 2 | 2 | 100 | 2 | 11 | NodaTime.Globalization |
LocalTimePattern+Patterns | 0.23 | 3 | 10 | 0 | 0 | 1 | 1 | 100 | 2 | 5 | NodaTime.Text |
DurationPattern+Patterns | 0.23 | 2 | 7 | 0 | 0 | 1 | 1 | 100 | 2 | 5 | NodaTime.Text |
TzdbZone1970Location | 0.23 | 45 | 221 | 60 | 57.14 | 12 | 19 | 100 | 3 | 28 | NodaTime.TimeZones |
TzdbZoneLocation | 0.23 | 32 | 154 | 47 | 59.49 | 10 | 10 | 100 | 3 | 18 | NodaTime.TimeZones |
LocalDatePattern+Patterns | 0.23 | 2 | 7 | 0 | 0 | 1 | 1 | 100 | 2 | 5 | NodaTime.Text |
SteppedPatternBuilder<TResult ,TBucket >+IPostPatternParseFormatAction | 0.23 | - | - | 0 | - | 0 | - | - | 2 | 5 | NodaTime.Text.Patterns |
ZonedDateTimePatternParser | 0.23 | 78 | 760 | 4 | 4.88 | 11 | 76 | 98.72 | 2 | 51 | NodaTime.Text |
YearMonthPattern+Patterns | 0.22 | 1 | 4 | 0 | 0 | 1 | 1 | 100 | 2 | 6 | NodaTime.Text |
LocalDateTimePattern+Patterns | 0.22 | 5 | 16 | 0 | 0 | 1 | 1 | 100 | 2 | 5 | NodaTime.Text |
CalendarSystem+MiscellaneousCalend ars | 0.22 | 3 | 23 | 4 | 57.14 | 1 | 1 | 100 | 1 | 11 | NodaTime |
CalendarSystem+GregorianJulianCale ndars | 0.22 | 3 | 21 | 0 | 0 | 1 | 1 | 100 | 1 | 10 | NodaTime |
CalendarSystem+IslamicCalendars | 0.22 | 12 | 76 | 1 | 7.69 | 3 | 5 | 100 | 1 | 14 | NodaTime |
CalendarSystem+PersianCalendars | 0.22 | 3 | 23 | 1 | 25 | 1 | 1 | 100 | 1 | 11 | NodaTime |
SingleEraCalculator | 0.22 | 16 | 97 | 0 | 0 | 8 | 8 | 93.75 | 1 | 13 | NodaTime.Calendars |
CalendarSystem+HebrewCalendars | 0.22 | 1 | 25 | 1 | 50 | 1 | 1 | 100 | 1 | 11 | NodaTime |
ZoneRecurrence | 0.22 | 91 | 671 | 117 | 56.25 | 48 | 59 | 100 | 2 | 26 | NodaTime.TimeZones |
IslamicYearMonthDayCalculator | 0.22 | 49 | 284 | 45 | 47.87 | 21 | 45 | 100 | 1 | 15 | NodaTime.Calendars |
HebrewMonthConverter | 0.22 | 9 | 72 | 23 | 71.88 | 8 | 13 | 100 | 1 | 4 | NodaTime.Calendars |
SingleZoneIntervalMap | 0.22 | 5 | 19 | 0 | 0 | 4 | 4 | 100 | 2 | 8 | NodaTime.TimeZones |
TransitionMode | 0.21 | - | - | 9 | 100 | 0 | - | - | 2 | 2 | NodaTime.TimeZones |
StandardDaylightAlternatingMap | 0.21 | 59 | 361 | 41 | 41 | 19 | 20 | 100 | 2 | 21 | NodaTime.TimeZones |
DayOfWeekExtensions | 0.21 | 1 | 3 | 6 | 85.71 | 1 | 1 | 100 | 1 | 5 | NodaTime.Extensions |
SimpleWeekYearRule | 0.21 | 65 | 431 | 72 | 52.55 | 25 | 36 | 100 | 1 | 19 | NodaTime.Calendars |
WeekYearRules | 0.21 | 9 | 54 | 77 | 89.53 | 5 | 12 | 100 | 1 | 16 | NodaTime.Calendars |
LocalDateTypeConverter | 0.21 | 1 | 6 | 0 | 0 | 1 | 1 | 100 | 1 | 6 | NodaTime.Text |
TzdbStreamData+Builder+<>O | 0.21 | 0 | 0 | - | - | - | 0 | - | 2 | 6 | NodaTime.TimeZones.IO |
TzdbStreamField | 0.21 | 21 | 223 | 4 | 16 | 5 | 28 | 100 | 2 | 27 | NodaTime.TimeZones.IO |
MapZone | 0.21 | 35 | 228 | 81 | 69.83 | 17 | 23 | 100 | 2 | 25 | NodaTime.TimeZones.Cldr |
InstantPattern+Patterns | 0.2 | 2 | 7 | 0 | 0 | 1 | 1 | 100 | 1 | 5 | NodaTime.Text |
PeriodPattern+RoundtripPatternImpl | 0.2 | 69 | 367 | 15 | 17.86 | 28 | 37 | 100 | 1 | 19 | NodaTime.Text |
PeriodPattern+NormalizingIsoPatter nImpl | 0.2 | 95 | 566 | 19 | 16.67 | 40 | 50 | 100 | 1 | 22 | NodaTime.Text |
DateTimeZoneWriter+DateTimeZoneTyp e | 0.2 | - | - | 0 | - | 0 | - | - | 2 | 2 | NodaTime.TimeZones.IO |
DurationTypeConverter | 0.2 | 1 | 6 | 0 | 0 | 1 | 1 | 100 | 1 | 6 | NodaTime.Text |
TzdbZone1970Location+Country | 0.2 | 11 | 74 | 34 | 75.56 | 9 | 9 | 100 | 2 | 14 | NodaTime.TimeZones |
BclDateTimeZone+BclAdjustmentRule+ DaylightFakingZoneIntervalMap | 0.2 | 7 | 48 | 0 | 0 | 5 | 6 | 100 | 2 | 11 | NodaTime.TimeZones |
LocalDateTimeTypeConverter | 0.2 | 1 | 6 | 0 | 0 | 1 | 1 | 100 | 1 | 6 | NodaTime.Text |
LocalTimeTypeConverter | 0.2 | 1 | 6 | 0 | 0 | 1 | 1 | 100 | 1 | 6 | NodaTime.Text |
AnnualDatePattern+Patterns | 0.2 | 1 | 4 | 0 | 0 | 1 | 1 | 100 | 1 | 6 | NodaTime.Text |
InvalidDateTimeZoneSourceException | 0.19 | 1 | 6 | 4 | 80 | 1 | 1 | 100 | 1 | 5 | NodaTime.TimeZones |
DateTimeZoneNotFoundException | 0.19 | 1 | 6 | 4 | 80 | 1 | 1 | 100 | 1 | 5 | NodaTime.TimeZones |
ZonedDateTimeTypeConverter | 0.19 | 7 | 37 | 9 | 56.25 | 3 | 5 | 100 | 1 | 11 | NodaTime.Text |
BclDateTimeZone | 0.19 | 56 | 496 | 80 | 58.82 | 29 | 38 | 92.86 | 1 | 38 | NodaTime.TimeZones |
InstantPatternParser+LocalDateTime PatternAdapter | 0.19 | 6 | 62 | 2 | 25 | 6 | 10 | 100 | 1 | 15 | NodaTime.Text |
SkippedTimeResolver | 0.19 | - | - | 0 | - | 0 | - | - | 1 | 12 | NodaTime.TimeZones |
AmbiguousTimeResolver | 0.19 | - | - | 0 | - | 0 | - | - | 1 | 7 | NodaTime.TimeZones |
CompositePatternBuilder<T >+CompositePattern | 0.19 | 30 | 181 | 0 | 0 | 14 | 22 | 100 | 1 | 16 | NodaTime.Text |
Period+PeriodComparer | 0.19 | 11 | 82 | 2 | 15.38 | 9 | 9 | 100 | 1 | 9 | NodaTime |
Period+NormalizingPeriodEqualityCo mparer | 0.19 | 8 | 48 | 0 | 0 | 7 | 9 | 100 | 1 | 11 | NodaTime |
PeriodTypeConverter | 0.19 | 1 | 6 | 0 | 0 | 1 | 1 | 100 | 1 | 7 | NodaTime.Text |
PartialZoneIntervalMap+CombinedPar tialZoneIntervalMap | 0.19 | 15 | 95 | 4 | 21.05 | 6 | 12 | 93.33 | 1 | 19 | NodaTime.TimeZones |
ZoneEqualityComparer | 0.19 | 27 | 189 | 88 | 76.52 | 17 | 25 | 100 | 1 | 26 | NodaTime.TimeZones |
TimePatternHelper+ <CreatePeriodHandler>O__0_0 <TResult,TBucket> | 0.19 | 0 | 0 | - | - | - | 0 | - | 1 | 8 | NodaTime.Text.Patterns |
OffsetDateTimeTypeConverter | 0.19 | 1 | 6 | 0 | 0 | 1 | 1 | 100 | 1 | 6 | NodaTime.Text |
OffsetPatternParser | 0.19 | 52 | 556 | 25 | 32.47 | 26 | 56 | 100 | 1 | 35 | NodaTime.Text |
NodaFormatInfo+EraDescription | 0.19 | 20 | 152 | 9 | 31.03 | 15 | 22 | 100 | 1 | 21 | NodaTime.Globalization |
DurationPatternParser | 0.19 | 64 | 779 | 14 | 17.95 | 17 | 61 | 100 | 1 | 42 | NodaTime.Text |
ReferenceEqualityComparer<T> | 0.19 | 2 | 19 | 0 | 0 | 3 | 5 | 100 | 1 | 8 | NodaTime.Utility |
PrecalculatedDateTimeZone+<>O | 0.18 | 0 | 0 | - | - | - | 0 | - | 1 | 4 | NodaTime.TimeZones |
PrecalculatedDateTimeZone+OffsetEx tractor<T> | 0.18 | - | - | 0 | - | 0 | - | - | 1 | 9 | NodaTime.TimeZones |
OffsetTimeTypeConverter | 0.18 | 1 | 6 | 0 | 0 | 1 | 1 | 100 | 1 | 6 | NodaTime.Text |
YearMonthTypeConverter | 0.18 | 1 | 6 | 0 | 0 | 1 | 1 | 100 | 1 | 6 | NodaTime.Text |
OffsetDateTypeConverter | 0.18 | 1 | 6 | 0 | 0 | 1 | 1 | 100 | 1 | 6 | NodaTime.Text |
DateInterval | 0.18 | 40 | 399 | 128 | 76.19 | 30 | 55 | 100 | 1 | 27 | NodaTime |
AnnualDateTypeConverter | 0.18 | 1 | 6 | 0 | 0 | 1 | 1 | 100 | 1 | 6 | NodaTime.Text |
AnnualDatePatternParser+AnnualDate ParseBucket | 0.18 | 21 | 136 | 4 | 16 | 12 | 17 | 100 | 1 | 12 | NodaTime.Text |
DatePatternHelper+MonthFormatActio nHolder<TResult,TBucket> | 0.18 | 9 | 78 | 5 | 35.71 | 6 | 10 | 100 | 1 | 18 | NodaTime.Text.Patterns |
OffsetTimePatternParser+OffsetTime ParseBucket | 0.18 | 8 | 49 | 0 | 0 | 3 | 4 | 100 | 1 | 14 | NodaTime.Text |
YearMonthPatternParser+YearMonthPa rseBucket | 0.18 | 6 | 41 | 0 | 0 | 3 | 4 | 100 | 1 | 13 | NodaTime.Text |
OffsetPatternParser+<>O | 0.18 | 0 | 0 | - | - | - | 0 | - | 1 | 6 | NodaTime.Text |
OffsetPatternParser+ZPrefixPattern | 0.18 | 10 | 77 | 0 | 0 | 9 | 13 | 100 | 1 | 15 | NodaTime.Text |
OffsetPatternParser+OffsetParseBuc ket | 0.18 | 4 | 36 | 18 | 81.82 | 2 | 3 | 100 | 1 | 11 | NodaTime.Text |
CompositePatternBuilder<T> | 0.18 | 12 | 83 | 16 | 57.14 | 6 | 8 | 100 | 1 | 23 | NodaTime.Text |
DateTimeExtensions | 0.18 | 2 | 6 | 13 | 86.67 | 2 | 2 | 100 | 1 | 5 | NodaTime.Extensions |
BclDateTimeZone+BclAdjustmentRule | 0.17 | 82 | 613 | 85 | 50.9 | 45 | 53 | 82.93 | 1 | 36 | NodaTime.TimeZones |
OffsetDatePatternParser+OffsetDate ParseBucket | 0.17 | 8 | 49 | 0 | 0 | 3 | 4 | 100 | 1 | 14 | NodaTime.Text |
SteppedPatternBuilder<TResult ,TBucket>+SteppedPattern | 0.17 | 39 | 199 | 10 | 20.41 | 13 | 16 | 100 | 1 | 20 | NodaTime.Text.Patterns |
SteppedPatternBuilder<TResult ,TBucket>+<>O | 0.17 | 0 | 0 | - | - | - | 0 | - | 1 | 9 | NodaTime.Text.Patterns |
OffsetDateTimePatternParser+Offset DateTimeParseBucket | 0.17 | 9 | 52 | 0 | 0 | 3 | 4 | 100 | 1 | 16 | NodaTime.Text |
CachedDateTimeZone | 0.17 | 9 | 57 | 20 | 68.97 | 6 | 8 | 100 | 1 | 16 | NodaTime.TimeZones |
TzdbStreamData+Builder | 0.17 | 52 | 324 | 4 | 7.14 | 16 | 32 | 100 | 1 | 26 | NodaTime.TimeZones.IO |
PrecalculatedDateTimeZone | 0.17 | 71 | 481 | 55 | 43.65 | 22 | 36 | 98.59 | 1 | 27 | NodaTime.TimeZones |
DurationPatternParser+DurationPars eBucket | 0.17 | 11 | 94 | 4 | 26.67 | 10 | 13 | 100 | 1 | 17 | NodaTime.Text |
DateTimeZoneProviderExtensions | 0.17 | 3 | 31 | 6 | 66.67 | 1 | 3 | 100 | 1 | 15 | NodaTime.Extensions |
XmlSchemaDefinition+<>O | 0.17 | 0 | 0 | - | - | - | 0 | - | 1 | 6 | NodaTime.Xml |
ZonedDateTimePatternParser+<>O | 0.17 | 0 | 0 | - | - | - | 0 | - | 1 | 6 | NodaTime.Text |
SystemClock | 0.17 | 4 | 19 | 11 | 73.33 | 4 | 4 | 100 | 1 | 12 | NodaTime |
TzdbDateTimeZoneSource+DefaultHold er | 0.17 | 4 | 27 | 0 | 0 | 2 | 4 | 100 | 1 | 11 | NodaTime.TimeZones |
IsoDayOfWeekExtensions | 0.15 | 1 | 3 | 6 | 85.71 | 1 | 1 | 100 | 0 | 5 | NodaTime.Extensions |
DateTimeOffsetExtensions | 0.15 | 3 | 9 | 19 | 86.36 | 3 | 3 | 100 | 0 | 6 | NodaTime.Extensions |
TimeAdjusters | 0.15 | 9 | 38 | 12 | 57.14 | 4 | 7 | 100 | 0 | 9 | NodaTime |
StopwatchExtensions | 0.15 | 2 | 12 | 5 | 71.43 | 1 | 1 | 100 | 0 | 10 | NodaTime.Extensions |
RefSafetyRulesAttribute | 0.15 | 0 | 7 | - | - | - | 1 | - | 0 | 6 | System.Runtime.CompilerServices |
ClockExtensions | 0.15 | 7 | 39 | 40 | 85.11 | 5 | 5 | 100 | 0 | 11 | NodaTime.Extensions |
DateAdjusters | 0.15 | 30 | 289 | 80 | 72.73 | 20 | 42 | 100 | 0 | 18 | NodaTime |
TextErrorMessages | 0.15 | 0 | 0 | 0 | - | 0 | 0 | - | 0 | 4 | NodaTime.Text |
AssemblyInfo | 0.15 | 0 | 0 | 0 | - | 0 | 0 | - | 0 | 3 | NodaTime.Properties |
DateTimeZoneWriter | 0.15 | 74 | 511 | 81 | 52.26 | 32 | 42 | 100 | 0 | 30 | NodaTime.TimeZones.IO |
WeekYearRuleExtensions | 0.15 | 2 | 16 | 22 | 91.67 | 2 | 2 | 100 | 0 | 12 | NodaTime.Calendars |
Types Metrics : Code Members and Inheritance
Type Name | # Instance Methods | Nb Static Methods | Nb Properties | # Fields | # Children Classes | Depth Of Inheritance Tree | Type Namespace |
---|---|---|---|---|---|---|---|
NullableAttribute | 2 | 0 | 0 | 1 | 0 | 2 | System.Runtime.CompilerServices |
NullableContextAttribute | 1 | 0 | 0 | 1 | 0 | 2 | System.Runtime.CompilerServices |
EmbeddedAttribute | 1 | 0 | 0 | 0 | 0 | 2 | Microsoft.CodeAnalysis |
InvokerParameterNameAttribute | 1 | 0 | 0 | 0 | 0 | 2 | JetBrains.Annotations |
Preconditions | 0 | 15 | 0 | 0 | 0 | 1 | NodaTime.Utility |
ParseResult<T> | 10 | 41 | 4 | 5 | 0 | 1 | NodaTime.Text |
IPattern<T> | 3 | 0 | 0 | 0 | - | - | NodaTime.Text |
Instant | 35 | 28 | 6 | 13 | - | - | NodaTime |
Offset | 18 | 24 | 4 | 14 | - | - | NodaTime |
TrustedAttribute | 1 | 0 | 0 | 0 | 0 | 2 | NodaTime.Annotations |
LocalDate | 49 | 23 | 14 | 1 | - | - | NodaTime |
CalendarSystem | 28 | 20 | 22 | 35 | 0 | 1 | NodaTime |
ImmutableAttribute | 1 | 0 | 0 | 0 | 0 | 2 | NodaTime.Annotations |
YearMonthDayCalculator | 21 | 0 | 3 | 5 | 14 | 1 | NodaTime.Calendars |
SpecialNullHandlingAttribute | 1 | 0 | 0 | 0 | 0 | 2 | NodaTime.Annotations |
LocalDateTime | 63 | 19 | 21 | 2 | - | - | NodaTime |
NodaFormatInfo | 40 | 8 | 32 | 26 | 0 | 1 | NodaTime.Globalization |
TypeConverterBase<T> | 4 | 0 | 0 | 1 | 13 | 2 | NodaTime.Text |
PatternFields | - | - | - | - | - | - | NodaTime.Text.Patterns |
ZonedDateTime | 53 | 10 | 22 | 2 | - | - | NodaTime |
DateTimeZone | 20 | 4 | 5 | 10 | 4 | 1 | NodaTime |
YearMonthDay | 12 | 7 | 3 | 3 | - | - | NodaTime |
Duration | 41 | 51 | 25 | 12 | - | - | NodaTime |
IsoDayOfWeek | - | - | - | - | - | - | NodaTime |
ParseBucket<T> | 2 | 0 | 0 | 0 | 11 | 1 | NodaTime.Text |
OffsetDateTime | 56 | 10 | 22 | 4 | - | - | NodaTime |
ZoneInterval | 24 | 2 | 13 | 7 | 0 | 1 | NodaTime.TimeZones |
LocalTime | 36 | 30 | 13 | 4 | - | - | NodaTime |
Era | 4 | 8 | 9 | 9 | 0 | 1 | NodaTime.Calendars |
IsReadOnlyAttribute | 1 | 0 | 0 | 0 | 0 | 2 | System.Runtime.CompilerServices |
PatternBclSupport<T> | 2 | 0 | 0 | 2 | 0 | 1 | NodaTime.Text.Patterns |
ValueCursor | 11 | 0 | 0 | 0 | 0 | 2 | NodaTime.Text |
CalendarOrdinal | - | - | - | - | - | - | NodaTime |
MutableAttribute | 1 | 0 | 0 | 0 | 0 | 2 | NodaTime.Annotations |
RegularYearMonthDayCalculator | 5 | 0 | 0 | 1 | 11 | 2 | NodaTime.Calendars |
FixedFormatInfoPatternParser<T> | 2 | 0 | 0 | 2 | 0 | 1 | NodaTime.Text |
PureAttribute | 1 | 0 | 0 | 0 | 0 | 2 | JetBrains.Annotations |
IPartialPattern<T> | 1 | 0 | 0 | 0 | - | - | NodaTime.Text |
IZoneIntervalMap | 3 | 0 | 2 | 0 | - | - | NodaTime.TimeZones |
Period | 23 | 32 | 15 | 11 | 0 | 1 | NodaTime |
IDateTimeZoneProvider | 5 | 0 | 2 | 0 | - | - | NodaTime |
HashCodeHelper | 3 | 3 | 1 | 3 | - | - | NodaTime.Utility |
TextCursor | 14 | 0 | 6 | 5 | 2 | 1 | NodaTime.Text |
YearMonthDayCalendar | 11 | 3 | 4 | 11 | - | - | NodaTime |
XmlSchemaDefinition | 0 | 23 | 2 | 24 | 0 | 1 | NodaTime.Xml |
OffsetTime | 28 | 3 | 13 | 3 | - | - | NodaTime |
ValidatedNotNullAttribute | 1 | 0 | 0 | 0 | 0 | 2 | NodaTime.Annotations |
VisibleForTestingAttribute | 1 | 0 | 0 | 0 | 0 | 2 | NodaTime.Annotations |
LocalDateTimePattern | 12 | 11 | 9 | 7 | 0 | 1 | NodaTime.Text |
LocalDatePattern | 12 | 8 | 6 | 7 | 0 | 1 | NodaTime.Text |
OffsetDate | 24 | 3 | 10 | 2 | - | - | NodaTime |
LocalInstant | 14 | 7 | 4 | 3 | - | - | NodaTime |
InstantPattern | 10 | 7 | 5 | 7 | 0 | 1 | NodaTime.Text |
LocalDatePatternParser+LocalDatePa rseBucket | 7 | 0 | 0 | 9 | 0 | 2 | NodaTime.Text |
PatternCursor | 4 | 0 | 0 | 2 | 0 | 2 | NodaTime.Text.Patterns |
IPatternParser<T> | 1 | 0 | 0 | 0 | - | - | NodaTime.Text.Patterns |
IDateTimeZoneReader | 9 | 0 | 1 | 0 | - | - | NodaTime.TimeZones.IO |
InvalidPatternException | 3 | 0 | 0 | 0 | 0 | 4 | NodaTime.Text |
SteppedPatternBuilder<TResult ,TBucket> | 26 | 5 | 2 | 6 | 0 | 1 | NodaTime.Text.Patterns |
YearMonth | 27 | 7 | 9 | 1 | - | - | NodaTime |
LocalTimePattern | 11 | 9 | 7 | 6 | 0 | 1 | NodaTime.Text |
OffsetPattern | 7 | 7 | 4 | 6 | 0 | 1 | NodaTime.Text |
IDatePeriodField | 2 | 0 | 0 | 0 | - | - | NodaTime.Fields |
DurationPattern | 6 | 7 | 3 | 3 | 0 | 1 | NodaTime.Text |
YearMonthPattern | 11 | 7 | 5 | 8 | 0 | 1 | NodaTime.Text |
AnnualDatePattern | 11 | 7 | 5 | 7 | 0 | 1 | NodaTime.Text |
DateTimeZoneCache | 7 | 0 | 2 | 4 | 0 | 1 | NodaTime.TimeZones |
BclConversions | 0 | 2 | 0 | 0 | 0 | 1 | NodaTime.Utility |
IDateTimeZoneSource | 4 | 0 | 1 | 0 | - | - | NodaTime.TimeZones |
IDateTimeZoneWriter | 8 | 0 | 0 | 0 | - | - | NodaTime.TimeZones.IO |
OffsetDateTimePattern | 12 | 9 | 7 | 5 | 0 | 1 | NodaTime.Text |
CharacterHandler<TResult,TBucket> | 4 | 0 | 0 | 0 | 0 | 3 | NodaTime.Text |
LocalTimePatternParser+LocalTimePa rseBucket | 4 | 0 | 0 | 9 | 0 | 2 | NodaTime.Text |
AnnualDate | 15 | 7 | 2 | 1 | - | - | NodaTime |
OffsetDateTime+Comparer | 4 | 2 | 2 | 0 | 2 | 1 | NodaTime |
OffsetTimePattern | 11 | 8 | 6 | 5 | 0 | 1 | NodaTime.Text |
OffsetDatePattern | 12 | 7 | 5 | 5 | 0 | 1 | NodaTime.Text |
PersianYearMonthDayCalculator | 7 | 2 | 0 | 6 | 3 | 3 | NodaTime.Calendars |
EraCalculator | 7 | 0 | 1 | 1 | 2 | 1 | NodaTime.Calendars |
SteppedPatternBuilder<TResult ,TBucket>+ParseAction | 4 | 0 | 0 | 0 | 0 | 3 | NodaTime.Text.Patterns |
HebrewScripturalCalculator | 0 | 12 | 0 | 6 | 0 | 1 | NodaTime.Calendars |
YearStartCacheEntry | 3 | 4 | 1 | 8 | - | - | NodaTime.Calendars |
PeriodPattern | 4 | 7 | 2 | 3 | 0 | 1 | NodaTime.Text |
ZoneLocalMapping | 10 | 0 | 5 | 5 | 0 | 1 | NodaTime.TimeZones |
PrecalculatedDateTimeZone+OffsetAg gregator | 4 | 0 | 0 | 0 | 0 | 3 | NodaTime.TimeZones |
DateTimeZoneProviders | 0 | 4 | 3 | 0 | 0 | 1 | NodaTime |
DateTimeZoneReader | 14 | 0 | 1 | 3 | 0 | 1 | NodaTime.TimeZones.IO |
DebugPreconditionException | 1 | 0 | 0 | 0 | 0 | 2 | NodaTime.Utility |
StringFormatMethodAttribute | 3 | 0 | 1 | 1 | 0 | 2 | JetBrains.Annotations |
ContractAnnotationAttribute | 6 | 0 | 2 | 2 | 0 | 2 | JetBrains.Annotations |
InvalidNodaDataException | 2 | 0 | 0 | 0 | 0 | 2 | NodaTime.Utility |
IWeekYearRule | 4 | 0 | 0 | 0 | - | - | NodaTime.Calendars |
ZoneLocalMappingResolver | 4 | 0 | 0 | 0 | 0 | 3 | NodaTime.TimeZones |
WindowsZones | 8 | 1 | 5 | 5 | 0 | 1 | NodaTime.TimeZones.Cldr |
TzdbDateTimeZoneSource | 18 | 3 | 10 | 6 | 0 | 1 | NodaTime.TimeZones |
HebrewMonthNumbering | - | - | - | - | - | - | NodaTime.Calendars |
PatternFieldsExtensions | 0 | 2 | 0 | 0 | 0 | 1 | NodaTime.Text.Patterns |
ZonedDateTimePattern | 16 | 8 | 8 | 7 | 0 | 1 | NodaTime.Text |
ZonedDateTime+Comparer | 4 | 2 | 2 | 0 | 2 | 1 | NodaTime |
CachingZoneIntervalMap+HashArrayCa che+HashCacheNode | 4 | 1 | 3 | 3 | 0 | 1 | NodaTime.TimeZones |
TimeZoneInfoInterceptor+ITimeZoneI nfoShim | 3 | 0 | 1 | 0 | - | - | NodaTime.TimeZones |
IClock | 1 | 0 | 0 | 0 | - | - | NodaTime |
IslamicLeapYearPattern | - | - | - | - | - | - | NodaTime.Calendars |
IslamicEpoch | - | - | - | - | - | - | NodaTime.Calendars |
SkippedTimeException | 3 | 0 | 2 | 2 | 0 | 1 | NodaTime |
TickArithmetic | 0 | 4 | 0 | 0 | 0 | 1 | NodaTime.Utility |
XmlSerializationSettings | 0 | 3 | 1 | 2 | 0 | 1 | NodaTime.Xml |
DatePatternHelper | 0 | 5 | 0 | 0 | 0 | 1 | NodaTime.Text.Patterns |
ZonedDateTimePatternParser+ZonedDa teTimeParseBucket | 4 | 1 | 0 | 6 | 0 | 2 | NodaTime.Text |
PeriodUnits | - | - | - | - | - | - | NodaTime |
GJEraCalculator | 6 | 1 | 0 | 2 | 0 | 2 | NodaTime.Calendars |
TestExemptionCategory | - | - | - | - | - | - | NodaTime.Annotations |
GJYearMonthDayCalculator | 5 | 2 | 0 | 4 | 2 | 3 | NodaTime.Calendars |
UnparsableValueException | 3 | 0 | 0 | 0 | 0 | 4 | NodaTime.Text |
FixedDateTimeZone | 13 | 3 | 2 | 1 | 0 | 2 | NodaTime.TimeZones |
GregorianYearMonthDayCalculator | 7 | 4 | 0 | 10 | 0 | 4 | NodaTime.Calendars |
NodaConstants | 0 | 4 | 3 | 35 | 0 | 1 | NodaTime |
PeriodBuilder | 28 | 1 | 10 | 10 | 0 | 1 | NodaTime |
PersianYearMonthDayCalculator+Arit hmetic | 2 | 0 | 0 | 0 | 0 | 4 | NodaTime.Calendars |
PersianYearMonthDayCalculator+Simp le | 2 | 0 | 0 | 3 | 0 | 4 | NodaTime.Calendars |
PersianYearMonthDayCalculator+Astr onomical | 2 | 1 | 0 | 1 | 0 | 4 | NodaTime.Calendars |
Interval | 17 | 3 | 6 | 2 | - | - | NodaTime |
Cache<TKey,TValue> | 5 | 0 | 2 | 4 | 0 | 1 | NodaTime.Utility |
OffsetDateTime+LocalComparer | 4 | 1 | 0 | 1 | 0 | 2 | NodaTime |
OffsetDateTime+InstantComparer | 4 | 1 | 0 | 1 | 0 | 2 | NodaTime |
TimePatternHelper | 0 | 5 | 0 | 0 | 0 | 1 | NodaTime.Text.Patterns |
BclDateTimeZoneSource | 6 | 1 | 1 | 0 | 0 | 1 | NodaTime.TimeZones |
FormatHelper | 0 | 8 | 0 | 2 | 0 | 1 | NodaTime.Text |
ZonedDateTime+InstantComparer | 4 | 1 | 0 | 1 | 0 | 2 | NodaTime |
ZonedDateTime+LocalComparer | 4 | 1 | 0 | 1 | 0 | 2 | NodaTime |
TimeSpanExtensions | 0 | 2 | 0 | 0 | 0 | 1 | NodaTime.Extensions |
CachingZoneIntervalMap+HashArrayCa che | 4 | 0 | 2 | 5 | 0 | 1 | NodaTime.TimeZones |
TimePeriodField | 7 | 1 | 0 | 9 | 0 | 1 | NodaTime.Fields |
AmbiguousTimeException | 5 | 0 | 4 | 2 | 0 | 1 | NodaTime |
ZoneEqualityComparer+Options | - | - | - | - | - | - | NodaTime.TimeZones |
Resolvers | 0 | 11 | 9 | 9 | 0 | 1 | NodaTime.TimeZones |
TestExemptionAttribute | 2 | 0 | 1 | 1 | 0 | 2 | NodaTime.Annotations |
LocalDateTimePatternParser+LocalDa teTimeParseBucket | 2 | 1 | 0 | 2 | 0 | 2 | NodaTime.Text |
OffsetTimePattern+Patterns | 0 | 1 | 0 | 4 | 0 | 1 | NodaTime.Text |
DateTimeZoneProviders+BclHolder | 0 | 1 | 0 | 1 | 0 | 1 | NodaTime |
DateTimeZoneProviders+TzdbHolder | 0 | 1 | 0 | 1 | 0 | 1 | NodaTime |
OffsetTypeConverter | 1 | 0 | 0 | 0 | 0 | 3 | NodaTime.Text |
OffsetDateTimePattern+Patterns | 0 | 1 | 0 | 5 | 0 | 1 | NodaTime.Text |
YearsPeriodField | 3 | 0 | 0 | 0 | 0 | 1 | NodaTime.Fields |
FixedLengthDatePeriodField | 3 | 0 | 0 | 1 | 0 | 1 | NodaTime.Fields |
MonthsPeriodField | 3 | 0 | 0 | 0 | 0 | 1 | NodaTime.Fields |
FixedMonthYearMonthDayCalculator | 7 | 0 | 0 | 2 | 1 | 3 | NodaTime.Calendars |
ZoneYearOffset | 12 | 2 | 3 | 7 | 0 | 1 | NodaTime.TimeZones |
OffsetDatePattern+Patterns | 0 | 1 | 0 | 3 | 0 | 1 | NodaTime.Text |
TzdbStreamData | 7 | 3 | 5 | 9 | 0 | 1 | NodaTime.TimeZones.IO |
ZonedDateTimePattern+Patterns | 0 | 1 | 0 | 3 | 0 | 1 | NodaTime.Text |
PartialZoneIntervalMap | 7 | 3 | 3 | 3 | 0 | 1 | NodaTime.TimeZones |
DatePeriodFields | 0 | 1 | 0 | 4 | 0 | 1 | NodaTime.Fields |
JulianYearMonthDayCalculator | 3 | 0 | 0 | 1 | 0 | 4 | NodaTime.Calendars |
TzdbStreamFieldId | - | - | - | - | - | - | NodaTime.TimeZones.IO |
ZoneEqualityComparer+ZoneIntervalE qualityComparer | 7 | 0 | 0 | 2 | 0 | 1 | NodaTime.TimeZones |
OffsetTimePatternParser | 2 | 2 | 0 | 2 | 0 | 1 | NodaTime.Text |
InstantPatternParser | 2 | 0 | 0 | 4 | 0 | 1 | NodaTime.Text |
TimeZoneInfoInterceptor+BclShim | 4 | 0 | 1 | 0 | 0 | 1 | NodaTime.TimeZones |
CopticYearMonthDayCalculator | 2 | 0 | 0 | 0 | 0 | 4 | NodaTime.Calendars |
UmAlQuraYearMonthDayCalculator | 8 | 1 | 0 | 9 | 0 | 3 | NodaTime.Calendars |
HebrewYearMonthDayCalculator | 16 | 0 | 0 | 4 | 0 | 2 | NodaTime.Calendars |
BadiYearMonthDayCalculator | 13 | 4 | 0 | 13 | 0 | 2 | NodaTime.Calendars |
OffsetDateTimePatternParser | 2 | 2 | 0 | 2 | 0 | 1 | NodaTime.Text |
LocalDateTimePatternParser | 2 | 1 | 0 | 3 | 0 | 1 | NodaTime.Text |
TypeConverterSettings | 0 | 3 | 1 | 2 | 0 | 1 | NodaTime.Text |
LocalTimePatternParser | 2 | 1 | 0 | 2 | 0 | 1 | NodaTime.Text |
OffsetDatePatternParser | 2 | 2 | 0 | 2 | 0 | 1 | NodaTime.Text |
LocalDatePatternParser | 2 | 1 | 0 | 3 | 0 | 1 | NodaTime.Text |
TimeZoneInfoInterceptor | 0 | 6 | 2 | 1 | 0 | 1 | NodaTime.TimeZones |
Transition | 7 | 2 | 2 | 2 | - | - | NodaTime.TimeZones |
CachingZoneIntervalMap | 0 | 1 | 0 | 0 | 0 | 1 | NodaTime.TimeZones |
ZonedClock | 10 | 0 | 3 | 3 | 0 | 1 | NodaTime |
YearMonthPatternParser | 2 | 1 | 0 | 2 | 0 | 1 | NodaTime.Text |
AnnualDatePatternParser | 2 | 2 | 0 | 2 | 0 | 1 | NodaTime.Text |
DateTimeZoneWriter+ZoneIntervalCon stants | 0 | 1 | 0 | 6 | 0 | 1 | NodaTime.TimeZones.IO |
InstantTypeConverter | 1 | 0 | 0 | 0 | 0 | 3 | NodaTime.Text |
PatternResources | 0 | 2 | 1 | 1 | 0 | 1 | NodaTime.Globalization |
LocalTimePattern+Patterns | 0 | 1 | 0 | 3 | 0 | 1 | NodaTime.Text |
DurationPattern+Patterns | 0 | 1 | 0 | 2 | 0 | 1 | NodaTime.Text |
TzdbZone1970Location | 7 | 1 | 5 | 5 | 0 | 1 | NodaTime.TimeZones |
TzdbZoneLocation | 8 | 1 | 6 | 6 | 0 | 1 | NodaTime.TimeZones |
LocalDatePattern+Patterns | 0 | 1 | 0 | 2 | 0 | 1 | NodaTime.Text |
SteppedPatternBuilder<TResult ,TBucket >+IPostPatternParseFormatAction | 1 | 0 | 0 | 0 | - | - | NodaTime.Text.Patterns |
ZonedDateTimePatternParser | 2 | 5 | 0 | 4 | 0 | 1 | NodaTime.Text |
YearMonthPattern+Patterns | 0 | 1 | 0 | 1 | 0 | 1 | NodaTime.Text |
LocalDateTimePattern+Patterns | 0 | 1 | 0 | 5 | 0 | 1 | NodaTime.Text |
CalendarSystem+MiscellaneousCalend ars | 0 | 1 | 0 | 3 | 0 | 1 | NodaTime |
CalendarSystem+GregorianJulianCale ndars | 0 | 1 | 0 | 2 | 0 | 1 | NodaTime |
CalendarSystem+IslamicCalendars | 0 | 1 | 0 | 1 | 0 | 1 | NodaTime |
CalendarSystem+PersianCalendars | 0 | 1 | 0 | 3 | 0 | 1 | NodaTime |
SingleEraCalculator | 7 | 0 | 0 | 3 | 0 | 2 | NodaTime.Calendars |
CalendarSystem+HebrewCalendars | 0 | 1 | 0 | 1 | 0 | 1 | NodaTime |
ZoneRecurrence | 19 | 1 | 6 | 7 | 0 | 1 | NodaTime.TimeZones |
IslamicYearMonthDayCalculator | 7 | 4 | 0 | 12 | 0 | 3 | NodaTime.Calendars |
HebrewMonthConverter | 0 | 2 | 0 | 0 | 0 | 1 | NodaTime.Calendars |
SingleZoneIntervalMap | 4 | 0 | 2 | 1 | 0 | 1 | NodaTime.TimeZones |
TransitionMode | - | - | - | - | - | - | NodaTime.TimeZones |
StandardDaylightAlternatingMap | 9 | 1 | 2 | 3 | 0 | 1 | NodaTime.TimeZones |
DayOfWeekExtensions | 0 | 1 | 0 | 0 | 0 | 1 | NodaTime.Extensions |
SimpleWeekYearRule | 7 | 0 | 0 | 3 | 0 | 1 | NodaTime.Calendars |
WeekYearRules | 0 | 5 | 1 | 1 | 0 | 1 | NodaTime.Calendars |
LocalDateTypeConverter | 1 | 0 | 0 | 0 | 0 | 3 | NodaTime.Text |
TzdbStreamData+Builder+<>O | 0 | 0 | 0 | 1 | 0 | 1 | NodaTime.TimeZones.IO |
TzdbStreamField | 4 | 1 | 1 | 2 | 0 | 1 | NodaTime.TimeZones.IO |
MapZone | 10 | 1 | 3 | 5 | 0 | 1 | NodaTime.TimeZones.Cldr |
InstantPattern+Patterns | 0 | 1 | 0 | 2 | 0 | 1 | NodaTime.Text |
PeriodPattern+RoundtripPatternImpl | 4 | 0 | 0 | 0 | 0 | 1 | NodaTime.Text |
PeriodPattern+NormalizingIsoPatter nImpl | 4 | 0 | 0 | 0 | 0 | 1 | NodaTime.Text |
DateTimeZoneWriter+DateTimeZoneTyp e | - | - | - | - | - | - | NodaTime.TimeZones.IO |
DurationTypeConverter | 1 | 0 | 0 | 0 | 0 | 3 | NodaTime.Text |
TzdbZone1970Location+Country | 7 | 0 | 2 | 2 | 0 | 1 | NodaTime.TimeZones |
BclDateTimeZone+BclAdjustmentRule+ DaylightFakingZoneIntervalMap | 4 | 0 | 2 | 2 | 0 | 1 | NodaTime.TimeZones |
LocalDateTimeTypeConverter | 1 | 0 | 0 | 0 | 0 | 3 | NodaTime.Text |
LocalTimeTypeConverter | 1 | 0 | 0 | 0 | 0 | 3 | NodaTime.Text |
AnnualDatePattern+Patterns | 0 | 1 | 0 | 1 | 0 | 1 | NodaTime.Text |
InvalidDateTimeZoneSourceException | 1 | 0 | 0 | 0 | 0 | 2 | NodaTime.TimeZones |
DateTimeZoneNotFoundException | 1 | 0 | 0 | 0 | 0 | 1 | NodaTime.TimeZones |
ZonedDateTimeTypeConverter | 1 | 1 | 0 | 1 | 0 | 3 | NodaTime.Text |
BclDateTimeZone | 4 | 5 | 2 | 3 | 0 | 2 | NodaTime.TimeZones |
InstantPatternParser+LocalDateTime PatternAdapter | 4 | 0 | 0 | 1 | 0 | 1 | NodaTime.Text |
SkippedTimeResolver | 4 | 0 | 0 | 0 | 0 | 3 | NodaTime.TimeZones |
AmbiguousTimeResolver | 4 | 0 | 0 | 0 | 0 | 3 | NodaTime.TimeZones |
CompositePatternBuilder<T >+CompositePattern | 6 | 0 | 0 | 2 | 0 | 1 | NodaTime.Text |
Period+PeriodComparer | 2 | 0 | 0 | 1 | 0 | 1 | NodaTime |
Period+NormalizingPeriodEqualityCo mparer | 3 | 1 | 0 | 1 | 0 | 1 | NodaTime |
PeriodTypeConverter | 1 | 0 | 0 | 0 | 0 | 3 | NodaTime.Text |
PartialZoneIntervalMap+CombinedPar tialZoneIntervalMap | 4 | 0 | 2 | 3 | 0 | 1 | NodaTime.TimeZones |
ZoneEqualityComparer | 7 | 2 | 2 | 3 | 0 | 1 | NodaTime.TimeZones |
TimePatternHelper+ <CreatePeriodHandler>O__0_0 <TResult,TBucket> | 0 | 0 | 0 | 1 | 0 | 1 | NodaTime.Text.Patterns |
OffsetDateTimeTypeConverter | 1 | 0 | 0 | 0 | 0 | 3 | NodaTime.Text |
OffsetPatternParser | 3 | 8 | 0 | 1 | 0 | 1 | NodaTime.Text |
NodaFormatInfo+EraDescription | 3 | 2 | 2 | 2 | 0 | 1 | NodaTime.Globalization |
DurationPatternParser | 2 | 8 | 0 | 1 | 0 | 1 | NodaTime.Text |
ReferenceEqualityComparer<T> | 3 | 0 | 0 | 0 | 0 | 1 | NodaTime.Utility |
PrecalculatedDateTimeZone+<>O | 0 | 0 | 0 | 2 | 0 | 1 | NodaTime.TimeZones |
PrecalculatedDateTimeZone+OffsetEx tractor<T> | 4 | 0 | 0 | 0 | 0 | 3 | NodaTime.TimeZones |
OffsetTimeTypeConverter | 1 | 0 | 0 | 0 | 0 | 3 | NodaTime.Text |
YearMonthTypeConverter | 1 | 0 | 0 | 0 | 0 | 3 | NodaTime.Text |
OffsetDateTypeConverter | 1 | 0 | 0 | 0 | 0 | 3 | NodaTime.Text |
DateInterval | 17 | 2 | 4 | 2 | 0 | 1 | NodaTime |
AnnualDateTypeConverter | 1 | 0 | 0 | 0 | 0 | 3 | NodaTime.Text |
AnnualDatePatternParser+AnnualDate ParseBucket | 3 | 0 | 0 | 4 | 0 | 2 | NodaTime.Text |
DatePatternHelper+MonthFormatActio nHolder<TResult,TBucket> | 3 | 0 | 0 | 3 | 0 | 1 | NodaTime.Text.Patterns |
OffsetTimePatternParser+OffsetTime ParseBucket | 2 | 0 | 0 | 2 | 0 | 2 | NodaTime.Text |
YearMonthPatternParser+YearMonthPa rseBucket | 2 | 0 | 0 | 1 | 0 | 2 | NodaTime.Text |
OffsetPatternParser+<>O | 0 | 0 | 0 | 2 | 0 | 1 | NodaTime.Text |
OffsetPatternParser+ZPrefixPattern | 5 | 0 | 0 | 1 | 0 | 1 | NodaTime.Text |
OffsetPatternParser+OffsetParseBuc ket | 2 | 0 | 0 | 4 | 0 | 2 | NodaTime.Text |
CompositePatternBuilder<T> | 6 | 0 | 0 | 2 | 0 | 1 | NodaTime.Text |
DateTimeExtensions | 0 | 2 | 0 | 0 | 0 | 1 | NodaTime.Extensions |
BclDateTimeZone+BclAdjustmentRule | 9 | 6 | 5 | 5 | 0 | 1 | NodaTime.TimeZones |
OffsetDatePatternParser+OffsetDate ParseBucket | 2 | 0 | 0 | 2 | 0 | 2 | NodaTime.Text |
SteppedPatternBuilder<TResult ,TBucket>+SteppedPattern | 5 | 0 | 0 | 5 | 0 | 1 | NodaTime.Text.Patterns |
SteppedPatternBuilder<TResult ,TBucket>+<>O | 0 | 0 | 0 | 3 | 0 | 1 | NodaTime.Text.Patterns |
OffsetDateTimePatternParser+Offset DateTimeParseBucket | 2 | 0 | 0 | 3 | 0 | 2 | NodaTime.Text |
CachedDateTimeZone | 3 | 1 | 1 | 2 | 0 | 2 | NodaTime.TimeZones |
TzdbStreamData+Builder | 9 | 1 | 0 | 7 | 0 | 1 | NodaTime.TimeZones.IO |
PrecalculatedDateTimeZone | 3 | 3 | 0 | 4 | 0 | 2 | NodaTime.TimeZones |
DurationPatternParser+DurationPars eBucket | 7 | 1 | 1 | 3 | 0 | 2 | NodaTime.Text |
DateTimeZoneProviderExtensions | 0 | 1 | 0 | 0 | 0 | 1 | NodaTime.Extensions |
XmlSchemaDefinition+<>O | 0 | 0 | 0 | 14 | 0 | 1 | NodaTime.Xml |
ZonedDateTimePatternParser+<>O | 0 | 0 | 0 | 1 | 0 | 1 | NodaTime.Text |
SystemClock | 2 | 2 | 1 | 1 | 0 | 1 | NodaTime |
TzdbDateTimeZoneSource+DefaultHold er | 0 | 2 | 0 | 1 | 0 | 1 | NodaTime.TimeZones |
IsoDayOfWeekExtensions | 0 | 1 | 0 | 0 | 0 | 1 | NodaTime.Extensions |
DateTimeOffsetExtensions | 0 | 3 | 0 | 0 | 0 | 1 | NodaTime.Extensions |
TimeAdjusters | 0 | 4 | 3 | 3 | 0 | 1 | NodaTime |
StopwatchExtensions | 0 | 1 | 0 | 0 | 0 | 1 | NodaTime.Extensions |
RefSafetyRulesAttribute | 1 | 0 | 0 | 1 | 0 | 2 | System.Runtime.CompilerServices |
ClockExtensions | 0 | 5 | 0 | 0 | 0 | 1 | NodaTime.Extensions |
DateAdjusters | 0 | 10 | 2 | 2 | 0 | 1 | NodaTime |
TextErrorMessages | 0 | 0 | 0 | 62 | 0 | 1 | NodaTime.Text |
AssemblyInfo | 0 | 0 | 0 | 1 | 0 | 1 | NodaTime.Properties |
DateTimeZoneWriter | 13 | 0 | 0 | 2 | 0 | 1 | NodaTime.TimeZones.IO |
WeekYearRuleExtensions | 0 | 2 | 0 | 0 | 0 | 1 | NodaTime.Calendars |
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 |
---|---|---|---|---|
NullableAttribute | 0 | 0 | 1 | System.Runtime.CompilerServices |
NullableContextAttribute | 0 | 0 | 1 | System.Runtime.CompilerServices |
EmbeddedAttribute | 0 | 0 | 1 | Microsoft.CodeAnalysis |
InvokerParameterNameAttribute | 0 | 0 | 1 | JetBrains.Annotations |
Preconditions | 0 | 0 | 14 | NodaTime.Utility |
ParseResult<T> | 0.91 | 0.93 | 15 | NodaTime.Text |
IPattern<T> | - | - | 0 | NodaTime.Text |
Instant | 0 | 0 | 66 | NodaTime |
Offset | 0 | 0 | 20 | NodaTime |
TrustedAttribute | 0 | 0 | 1 | NodaTime.Annotations |
LocalDate | 0 | 0 | 74 | NodaTime |
CalendarSystem | 0.77 | 0.8 | 57 | NodaTime |
ImmutableAttribute | 0 | 0 | 1 | NodaTime.Annotations |
YearMonthDayCalculator | 0.75 | 0.86 | 13 | NodaTime.Calendars |
SpecialNullHandlingAttribute | 0 | 0 | 1 | NodaTime.Annotations |
LocalDateTime | 0 | 0 | 104 | NodaTime |
NodaFormatInfo | 0.96 | 1.03 | 71 | NodaTime.Globalization |
TypeConverterBase<T> | 0.25 | 0.33 | 9 | NodaTime.Text |
PatternFields | - | - | 0 | NodaTime.Text.Patterns |
ZonedDateTime | 0.82 | 0.84 | 83 | NodaTime |
DateTimeZone | 0 | 0 | 50 | NodaTime |
YearMonthDay | 0 | 0 | 10 | NodaTime |
Duration | 0 | 0 | 53 | NodaTime |
IsoDayOfWeek | - | - | 0 | NodaTime |
ParseBucket<T> | 0 | 0 | 1 | NodaTime.Text |
OffsetDateTime | 0.75 | 0.77 | 88 | NodaTime |
ZoneInterval | 0.85 | 0.92 | 26 | NodaTime.TimeZones |
LocalTime | 0 | 0 | 36 | NodaTime |
Era | 0 | 0 | 1 | NodaTime.Calendars |
IsReadOnlyAttribute | 0 | 0 | 1 | System.Runtime.CompilerServices |
PatternBclSupport<T> | 0 | 0 | 6 | NodaTime.Text.Patterns |
ValueCursor | 0 | 0 | 19 | NodaTime.Text |
CalendarOrdinal | - | - | 0 | NodaTime |
MutableAttribute | 0 | 0 | 1 | NodaTime.Annotations |
RegularYearMonthDayCalculator | 0.2 | 0.25 | 14 | NodaTime.Calendars |
FixedFormatInfoPatternParser<T> | 0 | 0 | 6 | NodaTime.Text |
PureAttribute | 0 | 0 | 1 | JetBrains.Annotations |
IPartialPattern<T> | - | - | 0 | NodaTime.Text |
IZoneIntervalMap | - | - | 0 | NodaTime.TimeZones |
Period | 0 | 0 | 56 | NodaTime |
IDateTimeZoneProvider | - | - | 0 | NodaTime |
HashCodeHelper | 0 | 0 | 1 | NodaTime.Utility |
TextCursor | 0 | 0 | 6 | NodaTime.Text |
YearMonthDayCalendar | 0 | 0 | 10 | NodaTime |
XmlSchemaDefinition | 0 | 0 | 96 | NodaTime.Xml |
OffsetTime | 0 | 0 | 24 | NodaTime |
ValidatedNotNullAttribute | 0 | 0 | 1 | NodaTime.Annotations |
VisibleForTestingAttribute | 0 | 0 | 1 | NodaTime.Annotations |
LocalDateTimePattern | 0 | 0 | 22 | NodaTime.Text |
LocalDatePattern | 0 | 0 | 19 | NodaTime.Text |
OffsetDate | 0 | 0 | 37 | NodaTime |
LocalInstant | 0 | 0 | 22 | NodaTime |
InstantPattern | 0.67 | 0.73 | 16 | NodaTime.Text |
LocalDatePatternParser+LocalDatePa rseBucket | 0.62 | 0.72 | 44 | NodaTime.Text |
PatternCursor | 0 | 0 | 15 | NodaTime.Text.Patterns |
IPatternParser<T> | - | - | 0 | NodaTime.Text.Patterns |
IDateTimeZoneReader | - | - | 0 | NodaTime.TimeZones.IO |
InvalidPatternException | 0 | 0 | 4 | NodaTime.Text |
SteppedPatternBuilder<TResult ,TBucket> | 0.91 | 0.94 | 108 | NodaTime.Text.Patterns |
YearMonth | 0.84 | 0.88 | 45 | NodaTime |
LocalTimePattern | 0 | 0 | 19 | NodaTime.Text |
OffsetPattern | 0 | 0 | 12 | NodaTime.Text |
IDatePeriodField | - | - | 0 | NodaTime.Fields |
DurationPattern | 0.6 | 0.67 | 14 | NodaTime.Text |
YearMonthPattern | 0 | 0 | 17 | NodaTime.Text |
AnnualDatePattern | 0 | 0 | 17 | NodaTime.Text |
DateTimeZoneCache | 0.38 | 0.5 | 25 | NodaTime.TimeZones |
BclConversions | 0 | 0 | 2 | NodaTime.Utility |
IDateTimeZoneSource | - | - | 0 | NodaTime.TimeZones |
IDateTimeZoneWriter | - | - | 0 | NodaTime.TimeZones.IO |
OffsetDateTimePattern | 0.71 | 0.77 | 18 | NodaTime.Text |
CharacterHandler<TResult,TBucket> | - | - | 0 | NodaTime.Text |
LocalTimePatternParser+LocalTimePa rseBucket | 0.5 | 0.67 | 12 | NodaTime.Text |
AnnualDate | 0.7 | 0.74 | 28 | NodaTime |
OffsetDateTime+Comparer | 0 | 0 | 3 | NodaTime |
OffsetTimePattern | 0.69 | 0.75 | 16 | NodaTime.Text |
OffsetDatePattern | 0.71 | 0.77 | 16 | NodaTime.Text |
PersianYearMonthDayCalculator | 0.78 | 0.88 | 9 | NodaTime.Calendars |
EraCalculator | 0 | 0 | 2 | NodaTime.Calendars |
SteppedPatternBuilder<TResult ,TBucket>+ParseAction | - | - | 0 | NodaTime.Text.Patterns |
HebrewScripturalCalculator | 0 | 0 | 7 | NodaTime.Calendars |
YearStartCacheEntry | 0 | 0 | 0 | NodaTime.Calendars |
PeriodPattern | 0.56 | 0.62 | 10 | NodaTime.Text |
ZoneLocalMapping | 0 | 0 | 9 | NodaTime.TimeZones |
PrecalculatedDateTimeZone+OffsetAg gregator | - | - | 0 | NodaTime.TimeZones |
DateTimeZoneProviders | 0 | 0 | 4 | NodaTime |
DateTimeZoneReader | 0.85 | 0.92 | 21 | NodaTime.TimeZones.IO |
DebugPreconditionException | 0 | 0 | 1 | NodaTime.Utility |
StringFormatMethodAttribute | 0 | 0 | 1 | JetBrains.Annotations |
ContractAnnotationAttribute | 0 | 0 | 2 | JetBrains.Annotations |
InvalidNodaDataException | 0 | 0 | 2 | NodaTime.Utility |
IWeekYearRule | - | - | 0 | NodaTime.Calendars |
ZoneLocalMappingResolver | - | - | 0 | NodaTime.TimeZones |
WindowsZones | 0 | 0 | 24 | NodaTime.TimeZones.Cldr |
TzdbDateTimeZoneSource | 0.82 | 0.9 | 92 | NodaTime.TimeZones |
HebrewMonthNumbering | - | - | 0 | NodaTime.Calendars |
PatternFieldsExtensions | 0 | 0 | 1 | NodaTime.Text.Patterns |
ZonedDateTimePattern | 0.75 | 0.8 | 18 | NodaTime.Text |
ZonedDateTime+Comparer | 0 | 0 | 3 | NodaTime |
CachingZoneIntervalMap+HashArrayCa che+HashCacheNode | 0 | 0 | 8 | NodaTime.TimeZones |
TimeZoneInfoInterceptor+ITimeZoneI nfoShim | - | - | 0 | NodaTime.TimeZones |
IClock | - | - | 0 | NodaTime |
IslamicLeapYearPattern | - | - | 0 | NodaTime.Calendars |
IslamicEpoch | - | - | 0 | NodaTime.Calendars |
SkippedTimeException | 0 | 0 | 4 | NodaTime |
TickArithmetic | 0 | 0 | 3 | NodaTime.Utility |
XmlSerializationSettings | 0 | 0 | 5 | NodaTime.Xml |
DatePatternHelper | 0 | 0 | 42 | NodaTime.Text.Patterns |
ZonedDateTimePatternParser+ZonedDa teTimeParseBucket | 0.6 | 0.75 | 39 | NodaTime.Text |
PeriodUnits | - | - | 0 | NodaTime |
GJEraCalculator | 0.57 | 0.67 | 9 | NodaTime.Calendars |
TestExemptionCategory | - | - | 0 | NodaTime.Annotations |
GJYearMonthDayCalculator | 0 | 0 | 4 | NodaTime.Calendars |
UnparsableValueException | 0 | 0 | 3 | NodaTime.Text |
FixedDateTimeZone | 0.79 | 0.85 | 29 | NodaTime.TimeZones |
GregorianYearMonthDayCalculator | 0 | 0 | 16 | NodaTime.Calendars |
NodaConstants | 0 | 0 | 2 | NodaTime |
PeriodBuilder | 0 | 0 | 23 | NodaTime |
PersianYearMonthDayCalculator+Arit hmetic | 0 | 0 | 1 | NodaTime.Calendars |
PersianYearMonthDayCalculator+Simp le | 0 | 0 | 1 | NodaTime.Calendars |
PersianYearMonthDayCalculator+Astr onomical | 0 | 0 | 2 | NodaTime.Calendars |
Interval | 0.43 | 0.46 | 25 | NodaTime |
Cache<TKey,TValue> | 0.17 | 0.25 | 15 | NodaTime.Utility |
OffsetDateTime+LocalComparer | 0 | 0 | 11 | NodaTime |
OffsetDateTime+InstantComparer | 0 | 0 | 5 | NodaTime |
TimePatternHelper | 0 | 0 | 35 | NodaTime.Text.Patterns |
BclDateTimeZoneSource | 0 | 0 | 17 | NodaTime.TimeZones |
FormatHelper | 0 | 0 | 11 | NodaTime.Text |
ZonedDateTime+InstantComparer | 0 | 0 | 6 | NodaTime |
ZonedDateTime+LocalComparer | 0 | 0 | 6 | NodaTime |
TimeSpanExtensions | 0 | 0 | 2 | NodaTime.Extensions |
CachingZoneIntervalMap+HashArrayCa che | 0 | 0 | 11 | NodaTime.TimeZones |
TimePeriodField | 0.58 | 0.67 | 19 | NodaTime.Fields |
AmbiguousTimeException | 0 | 0 | 7 | NodaTime |
ZoneEqualityComparer+Options | - | - | 0 | NodaTime.TimeZones |
Resolvers | 0 | 0 | 27 | NodaTime.TimeZones |
TestExemptionAttribute | 0 | 0 | 2 | NodaTime.Annotations |
LocalDateTimePatternParser+LocalDa teTimeParseBucket | 0.33 | 0.5 | 17 | NodaTime.Text |
OffsetTimePattern+Patterns | 0 | 0 | 6 | NodaTime.Text |
DateTimeZoneProviders+BclHolder | 0 | 0 | 2 | NodaTime |
DateTimeZoneProviders+TzdbHolder | 0 | 0 | 2 | NodaTime |
OffsetTypeConverter | 0 | 0 | 2 | NodaTime.Text |
OffsetDateTimePattern+Patterns | 0 | 0 | 6 | NodaTime.Text |
YearsPeriodField | 0 | 0 | 16 | NodaTime.Fields |
FixedLengthDatePeriodField | 0 | 0 | 22 | NodaTime.Fields |
MonthsPeriodField | 0 | 0 | 8 | NodaTime.Fields |
FixedMonthYearMonthDayCalculator | 0 | 0 | 7 | NodaTime.Calendars |
ZoneYearOffset | 0.45 | 0.5 | 37 | NodaTime.TimeZones |
OffsetDatePattern+Patterns | 0 | 0 | 6 | NodaTime.Text |
TzdbStreamData | 0.6 | 0.75 | 47 | NodaTime.TimeZones.IO |
ZonedDateTimePattern+Patterns | 0 | 0 | 4 | NodaTime.Text |
PartialZoneIntervalMap | 0.43 | 0.5 | 30 | NodaTime.TimeZones |
DatePeriodFields | 0 | 0 | 3 | NodaTime.Fields |
JulianYearMonthDayCalculator | 0 | 0 | 2 | NodaTime.Calendars |
TzdbStreamFieldId | - | - | 0 | NodaTime.TimeZones.IO |
ZoneEqualityComparer+ZoneIntervalE qualityComparer | 0.43 | 0.5 | 27 | NodaTime.TimeZones |
OffsetTimePatternParser | 0.5 | 0.67 | 54 | NodaTime.Text |
InstantPatternParser | 0 | 0 | 12 | NodaTime.Text |
TimeZoneInfoInterceptor+BclShim | 0 | 0 | 4 | NodaTime.TimeZones |
CopticYearMonthDayCalculator | 0 | 0 | 2 | NodaTime.Calendars |
UmAlQuraYearMonthDayCalculator | 0 | 0 | 8 | NodaTime.Calendars |
HebrewYearMonthDayCalculator | 0.56 | 0.6 | 25 | NodaTime.Calendars |
BadiYearMonthDayCalculator | 0 | 0 | 23 | NodaTime.Calendars |
OffsetDateTimePatternParser | 0.5 | 0.67 | 83 | NodaTime.Text |
LocalDateTimePatternParser | 0.33 | 0.5 | 84 | NodaTime.Text |
TypeConverterSettings | 0 | 0 | 5 | NodaTime.Text |
LocalTimePatternParser | 0.33 | 0.5 | 46 | NodaTime.Text |
OffsetDatePatternParser | 0.5 | 0.67 | 59 | NodaTime.Text |
LocalDatePatternParser | 0.33 | 0.5 | 52 | NodaTime.Text |
TimeZoneInfoInterceptor | 0 | 0 | 4 | NodaTime.TimeZones |
Transition | 0 | 0 | 4 | NodaTime.TimeZones |
CachingZoneIntervalMap | 0 | 0 | 1 | NodaTime.TimeZones |
ZonedClock | 0 | 0 | 8 | NodaTime |
YearMonthPatternParser | 0.33 | 0.5 | 44 | NodaTime.Text |
AnnualDatePatternParser | 0.5 | 0.67 | 38 | NodaTime.Text |
DateTimeZoneWriter+ZoneIntervalCon stants | 0 | 0 | 1 | NodaTime.TimeZones.IO |
InstantTypeConverter | 0 | 0 | 2 | NodaTime.Text |
PatternResources | 0 | 0 | 4 | NodaTime.Globalization |
LocalTimePattern+Patterns | 0 | 0 | 1 | NodaTime.Text |
DurationPattern+Patterns | 0 | 0 | 1 | NodaTime.Text |
TzdbZone1970Location | 0 | 0 | 23 | NodaTime.TimeZones |
TzdbZoneLocation | 0 | 0 | 10 | NodaTime.TimeZones |
LocalDatePattern+Patterns | 0 | 0 | 1 | NodaTime.Text |
SteppedPatternBuilder<TResult ,TBucket >+IPostPatternParseFormatAction | - | - | 0 | NodaTime.Text.Patterns |
ZonedDateTimePatternParser | 0.71 | 0.83 | 95 | NodaTime.Text |
YearMonthPattern+Patterns | 0 | 0 | 1 | NodaTime.Text |
LocalDateTimePattern+Patterns | 0 | 0 | 1 | NodaTime.Text |
CalendarSystem+MiscellaneousCalend ars | 0 | 0 | 8 | NodaTime |
CalendarSystem+GregorianJulianCale ndars | 0 | 0 | 7 | NodaTime |
CalendarSystem+IslamicCalendars | 0 | 0 | 7 | NodaTime |
CalendarSystem+PersianCalendars | 0 | 0 | 6 | NodaTime |
SingleEraCalculator | 0.57 | 0.67 | 7 | NodaTime.Calendars |
CalendarSystem+HebrewCalendars | 0 | 0 | 5 | NodaTime |
ZoneRecurrence | 0.79 | 0.85 | 42 | NodaTime.TimeZones |
IslamicYearMonthDayCalculator | 0.82 | 0.9 | 8 | NodaTime.Calendars |
HebrewMonthConverter | 0 | 0 | 1 | NodaTime.Calendars |
SingleZoneIntervalMap | 0 | 0 | 2 | NodaTime.TimeZones |
TransitionMode | - | - | 0 | NodaTime.TimeZones |
StandardDaylightAlternatingMap | 0.25 | 0.29 | 33 | NodaTime.TimeZones |
DayOfWeekExtensions | 0 | 0 | 2 | NodaTime.Extensions |
SimpleWeekYearRule | 0.48 | 0.56 | 22 | NodaTime.Calendars |
WeekYearRules | 0 | 0 | 5 | NodaTime.Calendars |
LocalDateTypeConverter | 0 | 0 | 2 | NodaTime.Text |
TzdbStreamData+Builder+<>O | 0 | 0 | 0 | NodaTime.TimeZones.IO |
TzdbStreamField | 0.5 | 0.67 | 13 | NodaTime.TimeZones.IO |
MapZone | 0 | 0 | 20 | NodaTime.TimeZones.Cldr |
InstantPattern+Patterns | 0 | 0 | 1 | NodaTime.Text |
PeriodPattern+RoundtripPatternImpl | 0 | 0 | 39 | NodaTime.Text |
PeriodPattern+NormalizingIsoPatter nImpl | 0 | 0 | 51 | NodaTime.Text |
DateTimeZoneWriter+DateTimeZoneTyp e | - | - | 0 | NodaTime.TimeZones.IO |
DurationTypeConverter | 0 | 0 | 2 | NodaTime.Text |
TzdbZone1970Location+Country | 0 | 0 | 7 | NodaTime.TimeZones |
BclDateTimeZone+BclAdjustmentRule+ DaylightFakingZoneIntervalMap | 0 | 0 | 11 | NodaTime.TimeZones |
LocalDateTimeTypeConverter | 0 | 0 | 2 | NodaTime.Text |
LocalTimeTypeConverter | 0 | 0 | 2 | NodaTime.Text |
AnnualDatePattern+Patterns | 0 | 0 | 1 | NodaTime.Text |
InvalidDateTimeZoneSourceException | 0 | 0 | 1 | NodaTime.TimeZones |
DateTimeZoneNotFoundException | 0 | 0 | 1 | NodaTime.TimeZones |
ZonedDateTimeTypeConverter | 0 | 0 | 5 | NodaTime.Text |
BclDateTimeZone | 0.71 | 0.83 | 50 | NodaTime.TimeZones |
InstantPatternParser+LocalDateTime PatternAdapter | 0 | 0 | 15 | NodaTime.Text |
SkippedTimeResolver | - | - | 0 | NodaTime.TimeZones |
AmbiguousTimeResolver | - | - | 0 | NodaTime.TimeZones |
CompositePatternBuilder<T >+CompositePattern | 0.5 | 0.6 | 14 | NodaTime.Text |
Period+PeriodComparer | 0 | 0 | 7 | NodaTime |
Period+NormalizingPeriodEqualityCo mparer | 0 | 0 | 5 | NodaTime |
PeriodTypeConverter | 0 | 0 | 2 | NodaTime.Text |
PartialZoneIntervalMap+CombinedPar tialZoneIntervalMap | 0 | 0 | 14 | NodaTime.TimeZones |
ZoneEqualityComparer | 0.43 | 0.5 | 19 | NodaTime.TimeZones |
TimePatternHelper+ <CreatePeriodHandler>O__0_0 <TResult,TBucket> | 0 | 0 | 0 | NodaTime.Text.Patterns |
OffsetDateTimeTypeConverter | 0 | 0 | 2 | NodaTime.Text |
OffsetPatternParser | 0 | 0 | 51 | NodaTime.Text |
NodaFormatInfo+EraDescription | 0 | 0 | 20 | NodaTime.Globalization |
DurationPatternParser | 0 | 0 | 54 | NodaTime.Text |
ReferenceEqualityComparer<T> | 0 | 0 | 2 | NodaTime.Utility |
PrecalculatedDateTimeZone+<>O | 0 | 0 | 0 | NodaTime.TimeZones |
PrecalculatedDateTimeZone+OffsetEx tractor<T> | - | - | 0 | NodaTime.TimeZones |
OffsetTimeTypeConverter | 0 | 0 | 2 | NodaTime.Text |
YearMonthTypeConverter | 0 | 0 | 2 | NodaTime.Text |
OffsetDateTypeConverter | 0 | 0 | 2 | NodaTime.Text |
DateInterval | 0 | 0 | 20 | NodaTime |
AnnualDateTypeConverter | 0 | 0 | 2 | NodaTime.Text |
AnnualDatePatternParser+AnnualDate ParseBucket | 0.42 | 0.62 | 13 | NodaTime.Text |
DatePatternHelper+MonthFormatActio nHolder<TResult,TBucket> | 0.33 | 0.5 | 11 | NodaTime.Text.Patterns |
OffsetTimePatternParser+OffsetTime ParseBucket | 0 | 0 | 12 | NodaTime.Text |
YearMonthPatternParser+YearMonthPa rseBucket | 0 | 0 | 11 | NodaTime.Text |
OffsetPatternParser+<>O | 0 | 0 | 0 | NodaTime.Text |
OffsetPatternParser+ZPrefixPattern | 0 | 0 | 13 | NodaTime.Text |
OffsetPatternParser+OffsetParseBuc ket | 0.5 | 1 | 4 | NodaTime.Text |
CompositePatternBuilder<T> | 0.25 | 0.3 | 11 | NodaTime.Text |
DateTimeExtensions | 0 | 0 | 2 | NodaTime.Extensions |
BclDateTimeZone+BclAdjustmentRule | 0 | 0 | 74 | NodaTime.TimeZones |
OffsetDatePatternParser+OffsetDate ParseBucket | 0 | 0 | 12 | NodaTime.Text |
SteppedPatternBuilder<TResult ,TBucket>+SteppedPattern | 0.52 | 0.65 | 22 | NodaTime.Text.Patterns |
SteppedPatternBuilder<TResult ,TBucket>+<>O | 0 | 0 | 0 | NodaTime.Text.Patterns |
OffsetDateTimePatternParser+Offset DateTimeParseBucket | 0 | 0 | 13 | NodaTime.Text |
CachedDateTimeZone | 0.33 | 0.5 | 8 | NodaTime.TimeZones |
TzdbStreamData+Builder | 0.8 | 0.89 | 22 | NodaTime.TimeZones.IO |
PrecalculatedDateTimeZone | 0.54 | 0.65 | 46 | NodaTime.TimeZones |
DurationPatternParser+DurationPars eBucket | 0.33 | 0.4 | 15 | NodaTime.Text |
DateTimeZoneProviderExtensions | 0 | 0 | 6 | NodaTime.Extensions |
XmlSchemaDefinition+<>O | 0 | 0 | 0 | NodaTime.Xml |
ZonedDateTimePatternParser+<>O | 0 | 0 | 0 | NodaTime.Text |
SystemClock | 0 | 0 | 5 | NodaTime |
TzdbDateTimeZoneSource+DefaultHold er | 0 | 0 | 6 | NodaTime.TimeZones |
IsoDayOfWeekExtensions | 0 | 0 | 2 | NodaTime.Extensions |
DateTimeOffsetExtensions | 0 | 0 | 3 | NodaTime.Extensions |
TimeAdjusters | 0 | 0 | 6 | NodaTime |
StopwatchExtensions | 0 | 0 | 3 | NodaTime.Extensions |
RefSafetyRulesAttribute | 0 | 0 | 1 | System.Runtime.CompilerServices |
ClockExtensions | 0 | 0 | 6 | NodaTime.Extensions |
DateAdjusters | 0 | 0 | 17 | NodaTime |
TextErrorMessages | 0 | 0 | 0 | NodaTime.Text |
AssemblyInfo | 0 | 0 | 0 | NodaTime.Properties |
DateTimeZoneWriter | 0.77 | 0.83 | 27 | NodaTime.TimeZones.IO |
WeekYearRuleExtensions | 0 | 0 | 5 | NodaTime.Calendars |
Namespaces Metrics
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 |
---|---|---|---|---|---|---|---|---|
Microsoft.CodeAnalysis | 0 | 4 | 1 | - | - | - | 1 | 2 |
NodaTime.dll::System.Runtime .CompilerServices | 0 | 37 | 4 | - | - | - | 14 | 3 |
JetBrains.Annotations | 13 | 62 | 4 | 79 | 85.87 | - | 12 | 5 |
NodaTime | 1974 | 13965 | 49 | 7246 | 78.59 | 98.78 | 10 | 25 |
NodaTime.Xml | 109 | 1099 | 3 | 45 | 29.22 | 100 | 1 | 17 |
NodaTime.Utility | 87 | 796 | 8 | 196 | 69.26 | 93.1 | 12 | 11 |
NodaTime.Globalization | 141 | 955 | 3 | 206 | 59.37 | 100 | 2 | 19 |
NodaTime.Fields | 117 | 721 | 6 | 64 | 35.36 | 100 | 1 | 7 |
NodaTime.Extensions | 21 | 109 | 8 | 149 | 87.65 | 100 | 3 | 10 |
NodaTime.Calendars | 769 | 5387 | 29 | 940 | 55 | 99.35 | 6 | 13 |
NodaTime.Properties | 0 | 0 | 1 | 3 | 100 | - | 0 | 2 |
NodaTime.Annotations | 3 | 35 | 8 | 57 | 95 | 100 | 10 | 3 |
NodaTime.TimeZones | 1092 | 7855 | 43 | 2067 | 65.43 | 97.25 | 4 | 22 |
NodaTime.TimeZones.IO | 298 | 1935 | 11 | 404 | 57.55 | 99.66 | 2 | 15 |
NodaTime.TimeZones.Cldr | 69 | 418 | 2 | 169 | 71.01 | 100 | 2 | 12 |
NodaTime.Text | 1872 | 13722 | 82 | 2577 | 57.92 | 99.47 | 4 | 21 |
NodaTime.Text.Patterns | 489 | 3963 | 14 | 274 | 35.91 | 98.98 | 3 | 16 |
Quality Gates 723 |
|
Quality Gate Pass: Percentage Coverage |
Scalar Result: 98.67 %
Quality Gate Pass: Percentage Coverage on New Code |
Scalar Result: 95.52 %
Quality Gate Pass: Percentage Coverage on Refactored Code |
Scalar Result: 96.89 %
Quality Gate Pass: Blocker Issues |
No issue matched
Quality Gate Warn: Critical Issues |
9 issues matched
9 issues | Severity | Debt | Annual Interest | Full Name |
---|---|---|---|---|
Critical issue on: NodaTime .CalendarSystem..cctor() | 2Critical | |m100|4| 1h 20min | 24h 0min | Rule violated: Avoid types initialization cycles |
Critical issue on: NodaTime .CalendarSystem+PersianCalendars. .cctor() | 3Critical | |m100|2| 1h 20min | 34h 0min | Rule violated: Avoid types initialization cycles |
Critical issue on: NodaTime .CalendarSystem+IslamicCalendars. .cctor() | 0Critical | |m100|3| 1h 20min | 04h 0min | Rule violated: Avoid types initialization cycles |
Critical issue on: NodaTime .CalendarSystem+MiscellaneousCalen dars..cctor() | 1Critical | |m100|0| 1h 20min | 14h 0min | Rule violated: Avoid types initialization cycles |
Critical issue on: NodaTime .CalendarSystem+GregorianJulianCal endars..cctor() | 4Critical | |m100|1| 1h 20min | 44h 0min | Rule violated: Avoid types initialization cycles |
Critical issue on: NodaTime .CalendarSystem+HebrewCalendars. .cctor() | 7Critical | |m100|5| 1h 20min | 74h 0min | Rule violated: Avoid types initialization cycles |
Critical issue on: NodaTime .Text.LocalDateTimePattern ..cctor() | 8Critical | |m0|7| 50min | 84h 0min | Rule violated: Avoid types initialization cycles |
Critical issue on: NodaTime .Text .LocalDateTimePattern+Patterns. .cctor() | 5Critical | |m0|8| 50min | 54h 0min | Rule violated: Avoid types initialization cycles |
Critical issue on: NodaTime .Text .LocalDateTimePatternParser. .cctor () | 6Critical | |m0|6| 50min | 64h 0min | Rule violated: Avoid types initialization cycles |
Quality Gate Fail: New Blocker / Critical / High Issues |
28 issues matched
28 issues | Severity | Debt | Annual Interest | Full Name |
---|---|---|---|---|
High issue on: NodaTime.Period | 06High | |m100|00| 1h 48min | 0023min | Rule violated: Avoid types with too many methods |
High issue on: NodaTime.Text .UnparsableValueException..ctor (String,Exception) | 05High | |m0|03| 2min 0s | 0320min | Rule violated: New Types and Methods should be tested |
High issue on: NodaTime .TimeZones .BclDateTimeZone+BclAdjustmentRule .FromUnixAdjustmentRule (TimeZoneInfo ,TimeZoneInfo+AdjustmentRule) | 07High | |m7|01| 9min | 0120min | Rule violated: Methods refactored should be tested |
High issue on: NodaTime.Text .UnparsableValueException..ctor (String,Exception) | 09High | |m0|02| 2min 0s | 0220min | Rule violated: Types that used to be 100% covered by tests should still be 100% covered |
Period.cs L380 | 08High | |m0|08| 1min 0s | 081min 0s | Rule violated: Remove trailing white-space |
BclDateTimeZone.cs L271 | 01High | |m0|09| 1min 0s | 091min 0s | Rule violated: Remove trailing white-space |
YearMonth.cs L159 | 00High | |m0|04| 1min 0s | 041min 0s | Rule violated: Remove trailing white-space |
NodaFormatInfo.cs L458 | 02High | |m0|05| 1min 0s | 051min 0s | Rule violated: Fix TODO comment |
BclDateTimeZone.cs L142 | 04High | |m0|06| 1min 0s | 061min 0s | Rule violated: Fix TODO comment |
StandardDaylightAlternatingMap .cs L131 | 03High | |m0|07| 1min 0s | 071min 0s | Rule violated: Do not use implicit culture-sensitive ToString in interpolated strings |
FormatHelper.cs L90 | 16High | |m0|17| 1min 0s | 171min 0s | Rule violated: Prefer 'AsSpan' over 'Substring' |
FxCopAttributes.cs L13 | 15High | |m0|16| 1min 0s | 161min 0s | Rule violated: File name must match type name |
BclDateTimeZone.cs L275 | 17High | |m0|19| 1min 0s | 191min 0s | Rule violated: Method is too long |
XmlSchemaDefinition.cs L67 | 19High | |m0|18| 1min 0s | 181min 0s | Rule violated: Method is too long |
MapZone.cs L175 | 18High | |m0|15| 1min 0s | 151min 0s | Rule violated: Optimize string method usage |
Period.cs L738 | 11High | |m0|12| 1min 0s | 121min 0s | Rule violated: Use Explicit enum value instead of 0 |
Period.cs L740 | 10High | |m0|11| 1min 0s | 111min 0s | Rule violated: Use Explicit enum value instead of 0 |
Period.cs L741 | 12High | |m0|14| 1min 0s | 141min 0s | Rule violated: Use Explicit enum value instead of 0 |
YearMonth.cs L363 | 14High | |m0|13| 1min 0s | 131min 0s | Rule violated: Make member readonly |
NodaFormatInfo.cs L340 | 13High | |m0|10| 1min 0s | 101min 0s | Rule violated: Avoid closure by using an overload with the 'factoryArgument' parameter |
Quality Gate Fail: Critical Rules Violated |
5 rules matched
5 rules | issues | Full Name |
---|---|---|
Avoid types too big | |m0|4| 1 issue
| Rule |
Avoid methods too big, too complex | |m2|1| First 5 of 7 issues
| Rule |
Avoid methods with too many parameters | |m0|3| 3 issues
| Rule |
Avoid namespaces mutually dependent | |m100|0| First 5 of 258 issues
| Rule |
Avoid non-readonly static fields | |m1|2| 5 issues
| Rule |
Quality Gate Pass: Treat Compiler Warnings as Error |
No issue matched
Quality Gate Pass: Percentage Debt |
Scalar Result: 13.88 %
Quality Gate Warn: New Debt since Baseline |
Scalar Result: 0.046 man-days
Quality Gate Fail: Debt Rating per Namespace |
5 namespaces matched
5 namespaces | debtRating | debtRatio | devTimeInManDay | debtInManDay | issues | Full Name |
---|---|---|---|---|---|---|
JetBrains.Annotations | 0E | |m100|0| 55.22 | |m0|3| 5h 2min | |m2|3| 2h 47min | |m2|3| First 5 of 17 issues
| JetBrains.Annotations |
NodaTime ● | 1D | |m0|3| 22.92 | |m100|0| 63d | |m100|0| 14d 5h | |m100|0| First 5 of 638 issues
| NodaTime |
NodaTime.Globalization ● | 2D | |m0|4| 22.9 | |m7|2| 4d 6h | |m7|2| 1d 0h | |m8|2| First 5 of 56 issues
| NodaTime.Globalization |
NodaTime.Properties | 3D | |m24|2| 30.86 | |m0|4| 25min | |m0|4| 8min | |m0|4| 2 issues
| NodaTime.Properties |
NodaTime.Text.Patterns ● | 4D | |m41|1| 36.26 | |m17|1| 11d 0h | |m27|1| 4d 0h | |m16|1| First 5 of 109 issues
| NodaTime.Text.Patterns |
Quality Gate Pass: New Annual Interest since Baseline |
Scalar Result: -0.04 man-days
Hot Spots 000 |
Code Smells 000 |
Code Smells Regression 000 |
Object Oriented Design 000 |
Design 000 |
Architecture 000 |
API Breaking Changes 000 |
Code Coverage 000 |
Dead Code 000 |
Security 000 |
Visibility 000 |
Immutability 000 |
Naming Conventions 000 |
Source Files Organization 000 |
.NET Framework Usage 000 |
API Usage 000 |
Defining JustMyCode 000 |
Trend Metrics 000 |
Code Diff Summary 000 |
Roslyn Analyzers 000 |
Rules extracted from Source Code 000 |
Project Rules 107545 |
Code Smells 053 |
|
Rule Violated: ND1001 Avoid types with too many methods |
• How to Fix Issues of this Rule: To refactor properly a God Class please read HowToFix advices from the default rule Types too Big. The estimated Debt, which means the effort to fix such issue, varies linearly from 1 hour for a type with 20 methods, up to 10 hours for a type with 200 or more methods. In Debt and Interest computation, this rule takes account of the fact that static types with no mutable fields are just a collection of static methods that can be easily split and moved from one type to another.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1001:AvoidTypesWithTooManyMethods", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
13 types matched |
Formatting: bold✱ means added ● means code was changed |
Rule Violated: ND1005 Avoid methods with too many overloads |
• How to Fix Issues of this Rule: In such situation, the C# language feature optional parameters, named arguments or parameter array (with the params keyword) can be used instead. The estimated Debt, which means the effort to fix such issue, is of 3 minutes per method overload.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1005:AvoidMethodsWithTooManyOverloads", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
2 methods matched |
Formatting: bold✱ means added ● means code was changed |
2 methods | overloadsPruned | nbOverloads | Debt | Severity | Full Name |
---|---|---|---|---|---|
Between(LocalDateTime ,LocalDateTime,PeriodUnits) ● | |m0|0| First 5 of 8 methods | |m0|0| 8 | |m0|0| 24min | 0Medium | NodaTime.Period.Between (LocalDateTime,LocalDateTime ,PeriodUnits) |
.ctor(LocalInstant) | |m0|1| First 5 of 8 methods
| |m0|1| 8 | |m0|1| 24min | 1Medium | NodaTime.LocalDateTime..ctor (LocalInstant) |
Critical Rule Violated: ND1003 Avoid methods too big, too complex |
• How to Fix Issues of this Rule: A large and complex method should be split in smaller methods, or even one or several classes can be created for that. During this process it is important to question the scope of each variable local to the method. This can be an indication if such local variable will become an instance field of the newly created class(es). Large switch…case structures might be refactored through the help of a set of types that implement a common interface, the interface polymorphism playing the role of the switch cases tests. Unit Tests can help: write tests for each method before extracting it to ensure you don't break functionality. The estimated Debt, which means the effort to fix such issue, varies from 20 minutes to 3 hours, linearly from a weighted complexity score.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1003:AvoidMethodsTooBigTooComplex", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
7 methods matched |
Formatting: bold✱ means added ● means code was changed |
7 methods | # lines of code (LOC) | Cyclomatic Complexity (CC) | IL Cyclomatic Complexity (ILCC) | IL Nesting Depth | complexityScore | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|---|---|
Parse(String) | |m100|0| 66 | |m100|0| 31 | |m44|3| 37 | |m85|1| 9 | |m100|0| 103 | |m100|0| 51min | 018min | NodaTime.Text .PeriodPattern+NormalizingIsoPatte rnImpl.Parse(String) |
Parse(String) | |m71|2| 49 | |m46|2| 24 | |m24|4| 31 | |m100|0| 10 | |m72|1| 88 | |m72|1| 45min | 114min | NodaTime.Text .PeriodPattern+RoundtripPatternImp l.Parse(String) |
Validate() | |m86|1| 58 | |m30|4| 22 | |m100|0| 53 | |m0|6| 3 | |m52|2| 77 | |m52|2| 40min | 212min | NodaTime.TimeZones .TzdbDateTimeZoneSource.Validate() |
Between(LocalDateTime ,LocalDateTime,PeriodUnits) ● | |m70|3| 48 | |m15|5| 20 | |m17|5| 29 | |m57|2| 7 | |m47|3| 74 | |m47|3| 39min | 311min | NodaTime.Period.Between (LocalDateTime,LocalDateTime ,PeriodUnits) |
GetGregorianYearMonthDayCalendar Fr omDaysSinceEpoch(Int32) | |m20|5| 18 | |m76|1| 28 | |m82|1| 48 | |m28|4| 5 | |m36|4| 68 | |m36|4| 36min | 410min | NodaTime.Calendars .GregorianYearMonthDayCalculator .GetGregorianYearMonthDayCalendarF romDaysSinceEpoch(Int32) |
GetYearMonthDay(Int32,Int32) | |m0|6| 6 | |m46|3| 24 | |m58|2| 41 | |m28|3| 5 | |m12|5| 55 | |m12|5| 30min | 57min | NodaTime.Calendars .GJYearMonthDayCalculator .GetYearMonthDay(Int32,Int32) |
DetermineYear(PatternFields ,String ,Type) | |m33|4| 26 | |m0|6| 18 | |m0|6| 24 | |m0|5| 3 | |m0|6| 48 | |m0|6| 27min | 66min | NodaTime.Text .LocalDatePatternParser+LocalDateP arseBucket.DetermineYear (PatternFields,String,Type) |
Critical Rule Violated: ND1004 Avoid methods with too many parameters |
• How to Fix Issues of this Rule: More properties/fields can be added to the declaring type to handle numerous states. An alternative is to provide a class or a structure dedicated to handle arguments passing. For example see the class System.Diagnostics.ProcessStartInfo and the method System.Diagnostics.Process.Start(ProcessStartInfo). The estimated Debt, which means the effort to fix such issue, varies linearly from 1 hour for a method with 8 parameters, up to 6 hours for a methods with 40 or more parameters.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1004:AvoidMethodsWithTooManyParameters", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
3 methods matched |
Formatting: bold✱ means added ● means code was changed |
3 methods | # Parameters | Debt | Annual Interest | Full Name |
---|---|---|---|---|
.ctor(Int32,Int32,Int32,Int32 ,Int64,Int64,Int64,Int64,Int64 ,Int64) | |m100|0| 10 | |m100|0| 1h 18min | 016min | NodaTime.Period..ctor(Int32,Int32 ,Int32,Int32,Int64,Int64,Int64 ,Int64,Int64,Int64) |
.ctor(Int32,Int32,Int32,Int32 ,Int32,Int32,Int32,CalendarSystem ) | |m0|1| 8 | |m0|1| 1h 0min | 12min 0s | NodaTime.LocalDateTime..ctor(Int32 ,Int32,Int32,Int32,Int32,Int32 ,Int32,CalendarSystem) |
TimeComponentsBetween(Int64 ,PeriodUnits,Int64&,Int64&,Int64& ,Int64&,Int64&,Int64&) | |m0|2| 8 | |m0|2| 1h 0min | 22min 0s | NodaTime.Period .TimeComponentsBetween(Int64 ,PeriodUnits,Int64&,Int64&,Int64& ,Int64&,Int64&,Int64&) |
Rule Violated: ND1007 Avoid types with poor cohesion |
• How to Fix Issues of this Rule: To refactor a poorly cohesive type and increase code quality and maintainability, certainly you'll have to split the type into several smaller and more cohesive types that together, implement the same logic. For each matched type, you can right-click it then click the menu "Show on the Dependency Graph". This way you can visualize how the fields are used by methods and plan the refactoring based on this information. The estimated Debt, which means the effort to fix such issue, varies linearly from 5 minutes for a type with a low poorCohesionScore, up to 4 hours for a type with high poorCohesionScore.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1007:AvoidTypesWithPoorCohesion", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 type matched |
Formatting: bold✱ means added ● means code was changed |
1 type | Lack of Cohesion Of Methods (LCOM) | methods | fields | poorCohesionScore | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|---|
NodaFormatInfo ● | |m0|0| 0.96 | |m0|0| First 5 of 13 methods
| |m0|0| First 5 of 20 fields | |m0|0| 21.05 | |m0|0| 1h 28min | 029min | NodaTime.Globalization .NodaFormatInfo |
Rule Violated: ND1006 Avoid methods potentially poorly commented |
• How to Fix Issues of this Rule: Typically add more comment. But code commenting is subject to controversy. While poorly written and designed code would needs a lot of comment to be understood, clean code doesn't need that much comment, especially if variables and methods are properly named and convey enough information. Unit-Test code can also play the role of code commenting. However, even when writing clean and well-tested code, one will have to write hacks at a point, usually to circumvent some API limitations or bugs. A hack is a non-trivial piece of code, that doesn't make sense at first glance, and that took time and web research to be found. In such situation comments must absolutely be used to express the intention, the need for the hacks and the source where the solution has been found. The estimated Debt, which means the effort to comment such method, varies linearly from 2 minutes for 10 lines of code not commented, up to 20 minutes for 200 or more, lines of code not commented.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1006:AvoidMethodsPotentiallyPoorlyCommented", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 method matched |
Formatting: bold✱ means added ● means code was changed |
1 method | Percentage Comment | # lines of code (LOC) | # lines of comment | nbLinesOfCodeNotCommented | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|---|
FormatInvariant(Int64 ,StringBuilder) | |m0|0| 3.23 | |m0|0| 30 | |m0|0| 1 | |m0|0| 29 | |m0|0| 2min 54s | 013min | NodaTime.Text.FormatHelper .FormatInvariant(Int64 ,StringBuilder) |
Rule Violated: ND1002 Avoid types with too many fields |
• How to Fix Issues of this Rule: To refactor such type and increase code quality and maintainability, certainly you'll have to group subsets of fields into smaller types and dispatch the logic implemented into the methods into these smaller types. More refactoring advices can be found in the default rule Types to Big, HowToFix section. The estimated Debt, which means the effort to fix such issue, varies linearly from 1 hour for a type with 15 fields, to up to 10 hours for a type with 200 or more fields.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1002:AvoidTypesWithTooManyFields", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 type matched |
Formatting: bold✱ means added ● means code was changed |
1 type | instanceFields | staticFields | nbFields | methodsAssigningFields | Size of instance | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|---|---|
NodaFormatInfo ● | |m0|0| First 5 of 20 fields | 0no field | |m0|0| 20 | |m0|0| First 5 of 18 methods
| |m0|0| 88 | |m0|0| 1h 14min | 08min | NodaTime.Globalization .NodaFormatInfo |
Critical Rule Violated: ND1000 Avoid types too big |
• How to Fix Issues of this Rule: Types with many lines of code should be split in a group of smaller types. To refactor a God Class you'll need patience, and you might even need to recreate everything from scratch. Here are a few refactoring advices: • The logic in the God Class must be split in smaller classes. These smaller classes can eventually become private classes nested in the original God Class, whose instances objects become composed of instances of smaller nested classes. • Smaller classes partitioning should be driven by the multiple responsibilities handled by the God Class. To identify these responsibilities it often helps to look for subsets of methods strongly coupled with subsets of fields. • If the God Class contains way more logic than states, a good option can be to define one or several static classes that contains no static field but only pure static methods. A pure static method is a function that computes a result only from inputs parameters, it doesn't read nor assign any static or instance field. The main advantage of pure static methods is that they are easily testable. • Try to maintain the interface of the God Class at first and delegate calls to the new extracted classes. In the end the God Class should be a pure facade without its own logic. Then you can keep it for convenience or throw it away and start to use the new classes only. • Unit Tests can help: write tests for each method before extracting it to ensure you don't break functionality. The estimated Debt, which means the effort to fix such issue, varies linearly from 1 hour for a 200 lines of code type, up to 10 hours for a type with 2.000 or more lines of code. In Debt and Interest computation, this rule takes account of the fact that static types with no mutable fields are just a collection of static methods that can be easily split and moved from one type to another.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1000:AvoidTypesTooBig", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 type matched |
Formatting: bold✱ means added ● means code was changed |
Code Smells Regression 810 |
|
Rule Violated: ND1106 Avoid adding methods to a type that already had many methods |
• How to Fix Issues of this Rule: To refactor such type and increase code quality and maintainability, certainly you'll have to split the type into several smaller types that together, implement the same logic. The estimated Debt, which means the effort to fix such issue, is equal to 10 minutes per method added. Issues of this rule have a High severity, because it is important to focus on these issues now, before such code gets released in production.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1106:AvoidAddingMethodsToATypeThatAlreadyHadManyMethods", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 type matched |
Formatting: bold✱ means added ● means code was changed |
1 type | nbOldMethods | nbNewMethods | addedMethods | removedMethods | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|---|
LocalDateTime ● | |m0|0| 72 | |m0|0| 74 | |m0|0| 2 methods | 0no method | |m0|0| 20min | 02min 47s | NodaTime.LocalDateTime |
Object Oriented Design 770 |
Rule Violated: ND1207 Non-static classes should be instantiated or turned to static |
• How to Fix Issues of this Rule: First it is important to investigate why the class is never instantiated. If the reason is the class hosts only static methods then the class can be safely declared as static. Others reasons like, the class is meant to be instantiated via reflection, or is meant to be instantiated only by client code should lead to adapt this rule code to avoid these matches.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1207:NonStaticClassesShouldBeInstantiatedOrTurnedToStatic", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
13 types matched |
Formatting: bold✱ means added ● means code was changed |
13 types | Visibility | Debt | Severity | Full Name |
---|---|---|---|---|
AnnualDateTypeConverter | 03internal | |m0|03| 2min 0s | 03Medium | NodaTime.Text .AnnualDateTypeConverter |
DurationTypeConverter | 04internal | |m0|04| 2min 0s | 04Medium | NodaTime.Text .DurationTypeConverter |
InstantTypeConverter | 05internal | |m0|05| 2min 0s | 05Medium | NodaTime.Text.InstantTypeConverter |
LocalDateTimeTypeConverter | 00internal | |m0|00| 2min 0s | 00Medium | NodaTime.Text .LocalDateTimeTypeConverter |
LocalDateTypeConverter | 01internal | |m0|01| 2min 0s | 01Medium | NodaTime.Text .LocalDateTypeConverter |
LocalTimeTypeConverter | 02internal | |m0|02| 2min 0s | 02Medium | NodaTime.Text .LocalTimeTypeConverter |
OffsetTypeConverter | 06internal | |m0|06| 2min 0s | 06Medium | NodaTime.Text.OffsetTypeConverter |
OffsetDateTimeTypeConverter | 10internal | |m0|10| 2min 0s | 10Medium | NodaTime.Text .OffsetDateTimeTypeConverter |
OffsetDateTypeConverter | 11internal | |m0|11| 2min 0s | 11Medium | NodaTime.Text .OffsetDateTypeConverter |
OffsetTimeTypeConverter | 12internal | |m0|12| 2min 0s | 12Medium | NodaTime.Text .OffsetTimeTypeConverter |
PeriodTypeConverter | 07internal | |m0|07| 2min 0s | 07Medium | NodaTime.Text.PeriodTypeConverter |
YearMonthTypeConverter | 08internal | |m0|08| 2min 0s | 08Medium | NodaTime.Text .YearMonthTypeConverter |
ZonedDateTimeTypeConverter | 09internal | |m0|09| 2min 0s | 09Medium | NodaTime.Text .ZonedDateTimeTypeConverter |
Rule Violated: ND1213 Avoid types initialization cycles |
• How to Fix Issues of this Rule: Types initialization cycles create confusion and unexpected behaviors. If several states hold by several classes must be initialized during the first access of any of those classes, a better design option is to create a dedicated class whose responsibility is to initialize and hold all these states. The estimated Debt, which means the effort to fix such issue, is equal to 20 minutes per cycle plus 10 minutes per type class constructor involved in the cycle.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1213:AvoidTypesInitializationCycles", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
9 methods matched |
Formatting: bold✱ means added ● means code was changed |
Rule Violated: ND1203 Class with no descendant should be sealed if possible |
• How to Fix Issues of this Rule: For each matched class, take the time to assess if it is really meant to be subclassed. Certainly most matched class will end up being declared as sealed.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1203:ClassWithNoDescendantShouldBeSealedIfPossible", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
8 types matched |
Formatting: bold✱ means added ● means code was changed |
8 types | # lines of code (LOC) | Debt | Severity | Full Name |
---|---|---|---|---|
TzdbStreamData+Builder ● | |m100|0| 52 | |m0|2| 0min 30s | 2Medium | NodaTime.TimeZones.IO .TzdbStreamData+Builder |
NodaFormatInfo+EraDescription ● | |m37|1| 20 | |m0|3| 0min 30s | 3Medium | NodaTime.Globalization .NodaFormatInfo+EraDescription |
PartialZoneIntervalMap+CombinedP ar tialZoneIntervalMap ● | |m27|2| 15 | |m0|0| 0min 30s | 0Medium | NodaTime.TimeZones .PartialZoneIntervalMap+CombinedPa rtialZoneIntervalMap |
PersianYearMonthDayCalculator+Si mp le ● | |m5|3| 4 | |m0|1| 0min 30s | 1Medium | NodaTime.Calendars .PersianYearMonthDayCalculator+Sim ple |
PersianYearMonthDayCalculator+Ar it hmetic | |m5|4| 4 | |m0|6| 0min 30s | 6Medium | NodaTime.Calendars .PersianYearMonthDayCalculator+Ari thmetic |
PersianYearMonthDayCalculator+As tr onomical | |m3|6| 3 | |m0|7| 0min 30s | 7Medium | NodaTime.Calendars .PersianYearMonthDayCalculator+Ast ronomical |
TimeZoneInfoInterceptor+BclShim | |m3|5| 3 | |m0|4| 0min 30s | 4Medium | NodaTime.TimeZones .TimeZoneInfoInterceptor+BclShim |
DebugPreconditionException | |m0|7| 1 | |m0|5| 0min 30s | 5Medium | NodaTime.Utility .DebugPreconditionException |
Rule Violated: ND1201 Base class should not use derivatives |
• How to Fix Issues of this Rule: Understand the need for using derivatives, then imagine a new design, and then refactor. Typically an algorithm in the base class needs to access something from derived classes. You can try to encapsulate this access behind an abstract or a virtual method. If you see in the base class some conditions on typeof(DerivedClass) not only urgent refactoring is needed. Such condition can easily be replaced through an abstract or a virtual method. Sometime you'll see a base class that creates instance of some derived classes. In such situation, certainly using the factory method pattern http://en.wikipedia.org/wiki/Factory_method_pattern or the abstract factory pattern http://en.wikipedia.org/wiki/Abstract_factory_pattern will improve the design. The estimated Debt, which means the effort to fix such issue, is equal to 3 minutes per derived class used by the base class + 3 minutes per member of a derived class used by the base class.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1201:BaseClassShouldNotUseDerivatives", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
4 types matched |
Formatting: bold✱ means added ● means code was changed |
4 types | derivedClassesUsed | derivedClassesMemberUsed | Debt | Severity | Full Name |
---|---|---|---|---|---|
OffsetDateTime+Comparer | |m50|1| 2 types | |m100|1| 2 fields | |m100|1| 12min | 1High | NodaTime.OffsetDateTime+Comparer |
ZonedDateTime+Comparer | |m50|2| 2 types | |m100|0| 2 fields | |m100|0| 12min | 0High | NodaTime.ZonedDateTime+Comparer |
DateTimeZone | |m0|3| 1 type | |m50|2| 1 method | |m0|3| 6min | 3High | NodaTime.DateTimeZone |
PersianYearMonthDayCalculator ● | |m100|0| 3 types | 3no member | |m50|2| 9min | 2High | NodaTime.Calendars .PersianYearMonthDayCalculator |
Rule Violated: ND1208 Methods should be declared static if possible |
• How to Fix Issues of this Rule: Declare matched methods as static. Since such method doesn't use any instance fields and methods of its type and base-types, you should consider if it makes sense, to move such a method to a static utility class.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1208:MethodsShouldBeDeclaredStaticIfPossible", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
2 methods matched |
Formatting: bold✱ means added ● means code was changed |
2 methods | staticFieldsUsed | methodsCallingMe | Debt | Severity | Full Name |
---|---|---|---|---|---|
ForId(String) | 0no field | |m0|0| 1 method | |m0|0| 1min 0s | 0Medium | NodaTime.TimeZones .BclDateTimeZoneSource.ForId (String) |
DummyMethod(TResult ,StringBuilder) | 1no field | |m0|1| 1 method | |m0|1| 1min 0s | 1Medium | NodaTime.Text.Patterns .DatePatternHelper+MonthFormatActi onHolder<TResult,TBucket> .DummyMethod(TResult,StringBuilder ) |
Rule Violated: ND1204 Overrides of Method() should call base.Method() |
• How to Fix Issues of this Rule: You should investigate if inheritance is the right choice to bind the base class implementation with the derived classes implementations. Does presenting the method with polymorphic behavior through an interface, would be a better design choice? In such situation, often using the design pattern template method http://en.wikipedia.org/wiki/Template_method_pattern might help improving the design.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1204:OverridesOfMethodShouldCallBaseMethod", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 method matched |
Formatting: bold✱ means added ● means code was changed |
1 method | shouldCall | definedInBaseClass | Debt | Severity | Full Name |
---|---|---|---|---|---|
MapLocal(LocalDateTime) | 0NodaTime.DateTimeZone.MapLocal (LocalDateTime) | 0NodaTime.DateTimeZone | |m0|0| 10min | 0Medium | NodaTime.TimeZones .FixedDateTimeZone.MapLocal (LocalDateTime) |
Rule Violated: ND1209 Constructor should not call a virtual method |
• How to Fix Issues of this Rule: Issues reported can be solved by re-designing object initialisation or by declaring the parent class as sealed, if possible. A constructor should primarily focus on initializing the state of its own class. Additional setup can be handled in constructors of derived classes or in dedicated methods called after object construction.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1209:ConstructorShouldNotCallAVirtualMethod", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 method matched |
Formatting: bold✱ means added ● means code was changed |
1 method | virtualMethodsCalled | DerivedTypes | Debt | Severity | Full Name |
---|---|---|---|---|---|
.ctor(Int32) | |m0|0| 1 method | |m0|0| 3 types | |m0|0| 4min 0s | 0High | NodaTime.Calendars .PersianYearMonthDayCalculator. .ctor(Int32) |
Design 660 |
|
Rule Violated: ND1306 Nested types should not be visible |
• How to Fix Issues of this Rule: If you do not intend the nested type to be externally visible, change the type's accessibility. Otherwise, remove the nested type from its parent and make it non-nested. If the purpose of the nesting is to group some nested types, use a namespace to create the hierarchy instead. The estimated Debt, which means the effort to fix such issue, is 2 minutes per nested type plus 4 minutes per outer type using such nesting type.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1306:NestedTypesShouldNotBeVisible", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
29 types matched |
Formatting: bold✱ means added ● means code was changed |
29 types | Visibility | typesUser | Debt | Severity | Full Name |
---|---|---|---|---|---|
BclDateTimeZone+BclAdjustmentRul e ● | 05internal | 16no type | |m0|16| 2min 0s | 06Medium | NodaTime.TimeZones .BclDateTimeZone+BclAdjustmentRule |
OffsetDateTime+Comparer | 16public | |m16|01| 2 types | |m16|01| 10min | 05Medium | NodaTime.OffsetDateTime+Comparer |
ZonedDateTime+Comparer | 19public | 15no type | |m0|15| 2min 0s | 07Medium | NodaTime.ZonedDateTime+Comparer |
PersianYearMonthDayCalculator+Si mp le ● | 04internal | |m8|06| 1 type | |m8|06| 6min | 09Medium | NodaTime.Calendars .PersianYearMonthDayCalculator+Sim ple |
PersianYearMonthDayCalculator+Ar it hmetic | 07internal | |m8|07| 1 type | |m8|07| 6min | 08Medium | NodaTime.Calendars .PersianYearMonthDayCalculator+Ari thmetic |
PersianYearMonthDayCalculator+As tr onomical | 06internal | |m8|08| 1 type | |m8|08| 6min | 01Medium | NodaTime.Calendars .PersianYearMonthDayCalculator+Ast ronomical |
TimeZoneInfoInterceptor+ITimeZon eI nfoShim | 01internal | 17no type | |m0|17| 2min 0s | 00Medium | NodaTime.TimeZones .TimeZoneInfoInterceptor+ITimeZone InfoShim |
TzdbZone1970Location+Country | 17public | |m8|03| 1 type | |m8|03| 6min | 02Medium | NodaTime.TimeZones .TzdbZone1970Location+Country |
ZoneEqualityComparer+Options | 18public | |m8|04| 1 type | |m8|04| 6min | 04Medium | NodaTime.TimeZones .ZoneEqualityComparer+Options |
ZoneEqualityComparer+ZoneInterva lE qualityComparer | 00internal | |m8|05| 1 type | |m8|05| 6min | 03Medium | NodaTime.TimeZones .ZoneEqualityComparer+ZoneInterval EqualityComparer |
DateTimeZoneWriter+DateTimeZoneT yp e | 03internal | |m8|09| 1 type | |m8|09| 6min | 16Medium | NodaTime.TimeZones.IO .DateTimeZoneWriter+DateTimeZoneTy pe |
DateTimeZoneWriter+ZoneIntervalC on stants | 02internal | |m8|14| 1 type | |m8|14| 6min | 15Medium | NodaTime.TimeZones.IO .DateTimeZoneWriter+ZoneIntervalCo nstants |
TzdbStreamData+Builder ● | 15internal | 19no type | |m0|19| 2min 0s | 17Medium | NodaTime.TimeZones.IO .TzdbStreamData+Builder |
AnnualDatePatternParser+AnnualDa te ParseBucket | 14internal | 18no type | |m0|18| 2min 0s | 19Medium | NodaTime.Text .AnnualDatePatternParser+AnnualDat eParseBucket |
DurationPattern+Patterns | 13internal | |m8|11| 1 type | |m8|11| 6min | 18Medium | NodaTime.Text .DurationPattern+Patterns |
LocalDatePattern+Patterns | 09internal | |m8|10| 1 type | |m8|10| 6min | 11Medium | NodaTime.Text .LocalDatePattern+Patterns |
LocalDatePatternParser+LocalDate Pa rseBucket | 08internal | |m100|00| First 5 of 12 types | |m100|00| 50min | 10Medium | NodaTime.Text .LocalDatePatternParser+LocalDateP arseBucket |
LocalDateTimePattern+Patterns | 10internal | |m8|13| 1 type | |m8|13| 6min | 12Medium | NodaTime.Text .LocalDateTimePattern+Patterns |
LocalDateTimePatternParser+Local Da teTimeParseBucket | 12internal | |m16|02| 2 types | |m16|02| 10min | 14Medium | NodaTime.Text .LocalDateTimePatternParser+LocalD ateTimeParseBucket |
LocalTimePattern+Patterns | 11internal | |m8|12| 1 type | |m8|12| 6min | 13Medium | NodaTime.Text .LocalTimePattern+Patterns |
Rule Violated: ND1300 Avoid custom delegates |
• How to Fix Issues of this Rule: Remove custom delegates and replace them with generic delegates shown in the replaceWith column. The estimated Debt, which means the effort to fix such issue, is 5 minutes per custom delegates plus 3 minutes per method using such custom delegate.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1300:AvoidCustomDelegates", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
5 types matched |
Formatting: bold✱ means added ● means code was changed |
Rule Violated: ND1305 Avoid namespaces with few types |
• How to Fix Issues of this Rule: To fix a violation of this rule, try to combine namespaces that contain just a few types into a single namespace.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1305:AvoidNamespacesWithFewTypes", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
3 namespaces matched |
Formatting: bold✱ means added ● means code was changed |
3 namespaces | types | Debt | Severity | Full Name |
---|---|---|---|---|
NodaTime.Properties | |m0|2| 1 type | |m0|0| 5min | 0Low | NodaTime.Properties |
NodaTime.TimeZones.Cldr | |m50|1| 2 types | |m0|1| 5min | 1Low | NodaTime.TimeZones.Cldr |
NodaTime.Globalization ● | |m100|0| 3 types | |m0|2| 5min | 2Low | NodaTime.Globalization |
Rule Violated: ND1313 Override equals and operator equals on value types |
• How to Fix Issues of this Rule: To fix a violation of this rule, provide an implementation of Equals() and GetHashCode() and implement the equality and inequality operators. Alternatively transform it into a record struct. The estimated Debt, which means the effort to fix such issue, is equal to 15 minutes plus 2 minutes per instance field.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1313:OverrideEqualsAndOperatorEqualsOnValueTypes", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
2 types matched |
Formatting: bold✱ means added ● means code was changed |
2 types | InstanceFields | Debt | Severity | Full Name |
---|---|---|---|---|
HashCodeHelper | |m0|0| 1 field | |m0|0| 14min | 0High | NodaTime.Utility.HashCodeHelper |
YearStartCacheEntry | |m0|1| 1 field | |m0|1| 14min | 1High | NodaTime.Calendars .YearStartCacheEntry |
Rule Violated: ND1312 Do implement methods that throw NotImplementedException |
• How to Fix Issues of this Rule: Investigate why NotImplementedException is still thrown. Such issue has a High severity if the method code consists only in throwing NotImplementedException. Such situation means either that the method should be implemented, either that what should be a compile time error is a run-time error by-design, and this is not good design. Sometime this situation also pinpoints a method stub that can be safely removed. If NotImplementedException is thrown from a method with significant logic, the severity is considered as Medium, because often the fix consists in throwing another exception type, like InvalidOperationException.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1312:DoImplementMethodsThatThrowNotImplementedException", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
2 methods matched |
Formatting: bold✱ means added ● means code was changed |
2 methods | # lines of code (LOC) | Debt | Severity | Full Name |
---|---|---|---|---|
CalculateStartOfYearDays(Int32) | |m0|0| 1 | |m0|0| 10min | 0High | NodaTime.Calendars .PersianYearMonthDayCalculator .CalculateStartOfYearDays(Int32) |
CalculateStartOfYearDays(Int32) | |m0|1| 1 | |m0|1| 10min | 1High | NodaTime.Calendars .UmAlQuraYearMonthDayCalculator .CalculateStartOfYearDays(Int32) |
Rule Violated: ND1304 Classes that are candidate to be turned into structures |
• How to Fix Issues of this Rule: Just use the keyword struct instead of the keyword class. CAUTION: Before applying this rule, make sure to understand the deep implications of transforming a class into a structure explained in this article: https://blog.ndepend.com/class-vs-struct-in-c-making-informed-choices/ The estimated Debt, which means the effort to fix such issue, is 5 minutes per class matched plus one minute per method using such class transformed into a structure.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1304:ClassesThatAreCandidateToBeTurnedIntoStructures", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 type matched |
Formatting: bold✱ means added ● means code was changed |
1 type | Size of instance | InstanceFields | methodsUser | Debt | Severity | Full Name |
---|---|---|---|---|---|---|
TimePeriodField | |m0|0| 0 | |m0|0| 3 fields | |m0|0| First 5 of 15 methods | |m0|0| 20min | 0Low | NodaTime.Fields.TimePeriodField |
Architecture 611 |
|
Critical Rule Violated: ND1400 Avoid namespaces mutually dependent |
• How to Fix Issues of this Rule: Refactor the code to make sure that the low-level namespace doesn't use the high-level namespace. The rule lists in detail which low-level types and methods shouldn't use which high-level types and methods. The refactoring patterns that help getting rid of each listed dependency include: • Moving one or several types from the low-level namespaces to the high-level one, or do the opposite. • Use Dependency Inversion Principle (DIP): https://blog.ndepend.com/solid-design-the-dependency-inversion-principle-dip This consists in creating new interfaces in the low-level namespace, implemented by classes in the high-level namespace. This way low-level code can consume high-level code through interfaces, without using directly high-level implementations. Interfaces can be passed to low-level code through the high-level namespace code, or through even higher-level code. In related documentations you can see these interfaces named as callbacks, and the overall pattern is also known as Dependency Injection (DI): http://en.wikipedia.org/wiki/Dependency_injection That rule might not be applicable for libraries that present public namespaces mutually dependent. In such situation the cost to break the API can be higher than the cost to let the code entangled. - The estimated Debt, which means the effort to fix such issue to make sure that the first namespace doesn't rely anymore on the second one, depends on the number of types and methods used. Because both namespace are now forming a super-component that cannot be partitioned in smaller components, the cost to unfix each issue is proportional to the size of this super-component. As a consequence, the estimated Annual Interest, which means the annual cost to let both namespaces mutually dependend, is equal to an hour plus a number of minutes proportional to the size (in lines of code) of both namespaces. The obtained Annual Interest value is then divided by the number of detailled issues listed. Often the estimated Annual Interest for each listed issue is higher than the Debt, which means that leaving such issue unfixed for a year costs more than taking the time to fix issue once. -- To explore the coupling between the two namespaces mutually dependent: 1) from the becauseNamespace right-click menu choose Copy to Matrix Columns to export this low-level namespace to the horizontal header of the dependency matrix. 2) from the shouldntUseNamespace right-click menu choose Copy to Matrix Rows to export this high-level namespace to the vertical header of the dependency matrix. 3) double-click the black matrix cell (it is black because of the mutual dependency). 4) in the matrix command bar, click the button: Remove empty Row(s) and Column(s). At this point, the dependency matrix shows types involved into the coupling. • Blue cells represent types from low-level namespace using types from high-level namespace • Green cells represent types from high-level namespace using types from low-level namespace • Black cells represent types from low-level and high-level namespaces that use each other. There are more green cells than blue and black cells because green cell represents correct coupling from high-level to low-level. The goal is to eliminate incorrect dependencies represented by blue and black cells.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1400:AvoidNamespacesMutuallyDependent", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
296 members matched |
Formatting: bold✱ means added ● means code was changed |
296 types and methods | shouldntUse | becauseNamespace | shouldntUseNamespace | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|
ToString() ✱ | |m0|14| 1 field | 06NodaTime | 06NodaTime.Text | |m0|14| 15min | 172min 0s | NodaTime.YearMonth.ToString() |
Between(YearMonth,YearMonth ,PeriodUnits) ✱ | |m9|07| 1 method 2 fields | 05NodaTime | 05NodaTime.Fields | |m22|07| 25min | 053min 38s | NodaTime.Period.Between(YearMonth ,YearMonth,PeriodUnits) |
ContractAnnotationAttribute | |m0|13| 1 type | 07JetBrains.Annotations | 07NodaTime.Utility | |m0|13| 15min | 0330min | JetBrains.Annotations .ContractAnnotationAttribute |
.ctor(String,Boolean) | |m0|12| 1 method | 09JetBrains.Annotations | 09NodaTime.Utility | |m0|12| 15min | 0430min | JetBrains.Annotations .ContractAnnotationAttribute..ctor (String,Boolean) |
BclConversions | |m0|15| 1 type | 08NodaTime.Utility | 08NodaTime | |m0|15| 15min | 0231min | NodaTime.Utility.BclConversions |
ToDayOfWeek(IsoDayOfWeek) | |m0|18| 1 field | 01NodaTime.Utility | 01NodaTime | |m0|18| 15min | 0031min | NodaTime.Utility.BclConversions .ToDayOfWeek(IsoDayOfWeek) |
ToIsoDayOfWeek(DayOfWeek) | |m0|19| 1 field | 00NodaTime.Utility | 00NodaTime | |m0|19| 15min | 0131min | NodaTime.Utility.BclConversions .ToIsoDayOfWeek(DayOfWeek) |
AnnualDate | |m4|10| 2 types | 02NodaTime | 02NodaTime.Calendars | |m11|10| 20min | 162min 9s | NodaTime.AnnualDate |
CalendarSystem | |m9|09| 3 types | 04NodaTime | 04NodaTime.Text | |m22|09| 25min | 182min 0s | NodaTime.CalendarSystem |
CalendarSystem+PersianCalendars | |m0|16| 1 type | 03NodaTime | 03NodaTime.Xml | |m0|16| 15min | 072min 57s | NodaTime .CalendarSystem+PersianCalendars |
CalendarSystem+IslamicCalendars | |m38|00| First 5 of 9 types | 16NodaTime | 16NodaTime.Calendars | |m88|00| 55min | 132min 9s | NodaTime .CalendarSystem+IslamicCalendars |
CalendarSystem+MiscellaneousCale nd ars | |m19|02| 5 types | 15NodaTime | 15NodaTime.Calendars | |m44|02| 35min | 142min 9s | NodaTime .CalendarSystem+MiscellaneousCalen dars |
CalendarSystem+GregorianJulianCa le ndars | |m19|03| 5 types | 17NodaTime | 17NodaTime.Calendars | |m44|03| 35min | 152min 9s | NodaTime .CalendarSystem+GregorianJulianCal endars |
CalendarSystem+HebrewCalendars | |m19|01| 5 types | 19NodaTime | 19NodaTime.Calendars | |m44|01| 35min | 102min 9s | NodaTime .CalendarSystem+HebrewCalendars |
LocalDate ● | |m14|04| 4 types | 18NodaTime | 18NodaTime.Calendars | |m33|04| 30min | 092min 9s | NodaTime.LocalDate |
LocalDateTime ● | |m14|06| 4 types | 11NodaTime | 11NodaTime.Calendars | |m33|06| 30min | 122min 9s | NodaTime.LocalDateTime |
OffsetDate | |m14|05| 4 types | 10NodaTime | 10NodaTime.Calendars | |m33|05| 30min | 112min 9s | NodaTime.OffsetDate |
OffsetDateTime | |m9|08| 3 types | 12NodaTime | 12NodaTime.Text | |m22|08| 25min | 192min 0s | NodaTime.OffsetDateTime |
YearMonth ● | |m0|17| 1 type | 14NodaTime | 14NodaTime.Xml | |m0|17| 15min | 082min 57s | NodaTime.YearMonth |
ZonedDateTime | |m4|11| 2 types | 13NodaTime | 13NodaTime.Fields | |m11|11| 20min | 063min 38s | NodaTime.ZonedDateTime |
Rule Violated: ND1401 Avoid namespaces dependency cycles |
• How to Fix Issues of this Rule: Removing first pairs of mutually dependent namespaces will eliminate most namespaces dependency cycles. This is why it is recommended to focus first on matches of the default rule Avoid namespaces mutually dependent before attempting to fix issues of the present rule. Once all mutually dependent namespaces occurrences are solved, remaining cycles matched by the present rule necessarily involve 3 or more namespaces like in: A is using B is using C is using A. To browse a cycle on the dependency graph or the dependency matrix, right click a cycle cell in the result of the present rule and export the matched namespaces to the dependency graph or matrix. This is illustrated here: https://www.ndepend.com/docs/visual-studio-dependency-graph#Entangled With such a cycle graph visualized, you can determine which dependencies should be discarded to break the cycle. To do so, you need to identify which namespace should be at low-level and which one should be at high-level. In the A is using B is using C is using A cycle example, if A should be at low level then C should be at a higher-level than A. As a consequence C shouldn't use A and this dependency should be removed. To remove a dependency you can refer to patterns described in the HowToFix section of the rule Avoid namespaces mutually dependent. Notice that the dependency matrix can also help visualizing and breaking cycles. In the matrix cycles are represented with red squares and black cells. To easily browse dependency cycles, the dependency matrix comes with an option: Display Direct and Indirect Dependencies. See related documentation here: https://www.ndepend.com/docs/dependency-structure-matrix-dsm#Cycle https://www.ndepend.com/docs/dependency-structure-matrix-dsm#Mutual The estimated Debt, which means the effort to fix such issue, doesn't depend on the cycle length. First because fixing the rule Avoid namespaces mutually dependent will fix most cycle reported here, second because even a long cycle can be broken by removing a single or a few dependencies.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1401:AvoidNamespacesDependencyCycles", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 namespace matched |
Formatting: bold✱ means added ● means code was changed |
1 namespace | cycle | Debt | Severity | Full Name |
---|---|---|---|---|
JetBrains.Annotations | |m0|0| First 5 of 13 namespaces | |m0|0| 2h 0min | 0High | JetBrains.Annotations |
Code Coverage 280 |
Rule Violated: ND1600 Code should be tested |
• How to Fix Issues of this Rule: Write unit tests to test and cover the methods and their parent types matched by this rule.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1600:CodeShouldBeTested", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
53 methods matched |
Formatting: bold✱ means added ● means code was changed |
53 methods | Percentage Coverage | # lines of code (LOC) | # lines of code not covered | Cyclomatic Complexity (CC) | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|---|
ConvertUnixRuleToBclAdjustmentRu le (TimeZoneInfo+AdjustmentRule ,String,String,TimeSpan,TimeSpan ,Boolean) ✱ | |c77|05| 77.27% | |m36|00| 22 | |m50|01| 5 | |m42|01| 10 | |m62|01| 31min | 132min 8s | NodaTime.TimeZones .BclDateTimeZone+BclAdjustmentRule .ConvertUnixRuleToBclAdjustmentRul e(TimeZoneInfo+AdjustmentRule ,String,String,TimeSpan,TimeSpan ,Boolean) |
.ctor(String,Exception) ✱ | |c0|15| 0% | |m0|18| 1 | |m0|10| 1 | |m0|18| 1 | |m0|18| 2min 17s | 152min 0s | NodaTime.Text .UnparsableValueException..ctor (String,Exception) |
CheckArgumentRange(String,Int32 ,Int32,Int32) | |c50|11| 50% | |m1|14| 2 | |m0|09| 1 | |m9|12| 3 | |m4|13| 4min 10s | 0010min | NodaTime.Utility.Preconditions .CheckArgumentRange(String,Int32 ,Int32,Int32) |
DebugCheckArgument(Boolean ,String ,String,Object[]) ● | |c33|14| 33.33% | |m3|11| 3 | |m12|04| 2 | |m9|13| 3 | |m11|05| 7min | 019min | NodaTime.Utility.Preconditions .DebugCheckArgument(Boolean,String ,String,Object[]) |
CheckArgumentRange(String,Int64 ,Int64,Int64) | |c50|12| 50% | |m1|15| 2 | |m0|07| 1 | |m9|10| 3 | |m4|12| 4min 10s | 028min | NodaTime.Utility.Preconditions .CheckArgumentRange(String,Int64 ,Int64,Int64) |
.ctor(Int32,Int64) | |c80|04| 80% | |m7|08| 5 | |m0|11| 1 | |m9|11| 3 | |m2|16| 3min 20s | 037min | NodaTime.Duration..ctor(Int32 ,Int64) |
CheckArgumentRange(String,Double ,Double,Double) | |c50|13| 50% | |m1|16| 2 | |m0|08| 1 | |m14|07| 4 | |m7|09| 5min | 047min | NodaTime.Utility.Preconditions .CheckArgumentRange(String,Double ,Double,Double) |
ValidateGregorianYearMonthDay (Int32,Int32,Int32) ● | |c75|06| 75% | |m12|04| 8 | |m12|05| 2 | |m47|00| 11 | |m24|03| 13min | 057min | NodaTime.Calendars .GregorianYearMonthDayCalculator .ValidateGregorianYearMonthDay (Int32,Int32,Int32) |
FromTimeZoneInfo(TimeZoneInfo) ● | |c73|08| 73.33% | |m24|01| 15 | |m37|02| 4 | |m14|09| 4 | |m25|02| 14min | 066min | NodaTime.TimeZones.BclDateTimeZone .FromTimeZoneInfo(TimeZoneInfo) |
ForOrdinal(CalendarOrdinal) | |c85|01| 85.71% | |m10|05| 7 | |m0|06| 1 | |m14|08| 4 | |m3|14| 3min 48s | 075min | NodaTime.CalendarSystem.ForOrdinal (CalendarOrdinal) |
FromUnixAdjustmentRule (TimeZoneInfo ,TimeZoneInfo+AdjustmentRule) ● | |c0|17| 0% | |m14|03| 9 | |m100|00| 9 | |m28|04| 7 | |m100|00| 49min | 084min 36s | NodaTime.TimeZones .BclDateTimeZone+BclAdjustmentRule .FromUnixAdjustmentRule (TimeZoneInfo ,TimeZoneInfo+AdjustmentRule) |
ValidateEra(Era) ● | |c66|10| 66.67% | |m3|12| 3 | |m0|16| 1 | |m9|14| 3 | |m4|11| 4min 27s | 093min 19s | NodaTime.Calendars.GJEraCalculator .ValidateEra(Era) |
ValidateEra(Era) | |c66|09| 66.67% | |m3|13| 3 | |m0|19| 1 | |m4|15| 2 | |m3|15| 3min 34s | 103min 1s | NodaTime.Calendars .SingleEraCalculator.ValidateEra (Era) |
.ctor(Int32,Int32) | |c75|07| 75% | |m5|10| 4 | |m0|18| 1 | |m19|06| 5 | |m8|08| 6min | 112min 58s | NodaTime.LocalTime..ctor(Int32 ,Int32) |
.ctor(Int32,Int32,Int32) | |c80|03| 80% | |m7|07| 5 | |m0|13| 1 | |m28|03| 7 | |m10|06| 7min | 122min 36s | NodaTime.LocalTime..ctor(Int32 ,Int32,Int32) |
.ctor(Int32,Int32,Int32,Int32 ) | |c83|02| 83.33% | |m8|06| 6 | |m0|12| 1 | |m38|02| 9 | |m10|07| 7min | 142min 3s | NodaTime.LocalTime..ctor(Int32 ,Int32,Int32,Int32) |
CompareTo(Object) | |c0|19| 0% | |m5|09| 4 | |m37|03| 4 | |m4|16| 2 | |m19|04| 11min | 182min 0s | NodaTime.AnnualDate.CompareTo (Object) |
AtStartOfDay(LocalDate) | |c90|00| 90% | |m15|02| 10 | |m0|15| 1 | |m23|05| 6 | |m7|10| 5min | 192min 0s | NodaTime.DateTimeZone.AtStartOfDay (LocalDate) |
ToString() | |c0|18| 0% | |m0|19| 1 | |m0|14| 1 | |m0|19| 1 | |m0|19| 2min 17s | 172min 0s | NodaTime.LocalDateTime.ToString() |
get_Noon() | |c0|16| 0% | |m0|17| 1 | |m0|17| 1 | |m0|17| 1 | |m0|17| 2min 17s | 162min 0s | NodaTime.LocalTime.get_Noon() |
Rule Violated: ND1608 Types 100% covered should be tagged with FullCoveredAttribute |
• How to Fix Issues of this Rule: Just tag types 100% covered by tests with the FullCoveredAttribute class that can be found in NDepend.API.dll, or by an attribute of yours with this name defined in any namespace in your own code.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1608:Types100PercentCoveredShouldBeTaggedWithFullCoveredAttribute", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
186 types matched |
Formatting: bold✱ means added ● means code was changed |
186 types | # lines of code (LOC) | Debt | Severity | Full Name |
---|---|---|---|---|
YearMonthPattern ● | |m14|09| 29 | |m0|06| 3min 0s | 06Low | NodaTime.Text.YearMonthPattern |
AmbiguousTimeException | |m4|11| 9 | |m0|05| 3min 0s | 05Low | NodaTime.AmbiguousTimeException |
CalendarSystem+PersianCalendars | |m1|14| 3 | |m0|07| 3min 0s | 07Low | NodaTime .CalendarSystem+PersianCalendars |
CalendarSystem+IslamicCalendars | |m5|10| 12 | |m0|09| 3min 0s | 09Low | NodaTime .CalendarSystem+IslamicCalendars |
CalendarSystem+MiscellaneousCale nd ars | |m1|15| 3 | |m0|08| 3min 0s | 08Low | NodaTime .CalendarSystem+MiscellaneousCalen dars |
CalendarSystem+GregorianJulianCa le ndars | |m1|16| 3 | |m0|01| 3min 0s | 01Low | NodaTime .CalendarSystem+GregorianJulianCal endars |
CalendarSystem+HebrewCalendars | |m0|19| 1 | |m0|00| 3min 0s | 00Low | NodaTime .CalendarSystem+HebrewCalendars |
DateAdjusters | |m14|08| 30 | |m0|02| 3min 0s | 02Low | NodaTime.DateAdjusters |
DateInterval ● | |m20|06| 40 | |m0|04| 3min 0s | 04Low | NodaTime.DateInterval |
DateTimeZoneProviders | |m1|13| 4 | |m0|03| 3min 0s | 03Low | NodaTime.DateTimeZoneProviders |
DateTimeZoneProviders+TzdbHolder | |m0|17| 1 | |m0|16| 3min 0s | 16Low | NodaTime .DateTimeZoneProviders+TzdbHolder |
DateTimeZoneProviders+BclHolder | |m0|18| 1 | |m0|15| 3min 0s | 15Low | NodaTime .DateTimeZoneProviders+BclHolder |
Instant ● | |m54|02| 107 | |m0|17| 3min 0s | 17Low | NodaTime.Instant |
Interval | |m20|07| 40 | |m0|19| 3min 0s | 19Low | NodaTime.Interval |
LocalDate ● | |m68|00| 134 | |m0|18| 3min 0s | 18Low | NodaTime.LocalDate |
LocalInstant | |m22|04| 44 | |m0|11| 3min 0s | 11Low | NodaTime.LocalInstant |
NodaConstants ● | |m2|12| 6 | |m0|10| 3min 0s | 10Low | NodaTime.NodaConstants |
Offset | |m29|03| 59 | |m0|12| 3min 0s | 12Low | NodaTime.Offset |
OffsetDate | |m20|05| 41 | |m0|14| 3min 0s | 14Low | NodaTime.OffsetDate |
OffsetDateTime | |m62|01| 122 | |m0|13| 3min 0s | 13Low | NodaTime.OffsetDateTime |
Rule Violated: ND1606 Types that used to be 100% covered by tests should still be 100% covered |
• How to Fix Issues of this Rule: Write more unit-tests dedicated to cover code not covered anymore. If you find some hard-to-test code, it is certainly a sign that this code is not well designed and hence, needs refactoring. You'll find code impossible to cover by unit-tests, like calls to MessageBox.Show(). An infrastructure must be defined to be able to mock such code at test-time.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1606:TypesThatUsedToBe100PercentCoveredByTestsShouldStillBe100PercentCovered", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 method matched |
Formatting: bold✱ means added ● means code was changed |
1 method | Percentage Coverage | Debt | Severity | Full Name |
---|---|---|---|---|
.ctor(String,Exception) ✱ | |c0|0| 0% | |m0|0| 2min 0s | 0High | NodaTime.Text .UnparsableValueException..ctor (String,Exception) |
Rule Violated: ND1601 New Types and Methods should be tested |
• How to Fix Issues of this Rule: Write unit-tests to cover the code of most methods and types added since the baseline.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1601:NewMethodsShouldBeTested", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 method matched |
Formatting: bold✱ means added ● means code was changed |
1 method | Percentage Coverage | # lines of code (LOC) | # lines of code not covered | Cyclomatic Complexity (CC) | Debt | Severity | Full Name |
---|---|---|---|---|---|---|---|
.ctor(String,Exception) ✱ | |c0|0| 0% | |m0|0| 1 | |m0|0| 1 | |m0|0| 1 | |m0|0| 2min 0s | 0High | NodaTime.Text .UnparsableValueException..ctor (String,Exception) |
Rule Violated: ND1602 Methods refactored should be tested |
• How to Fix Issues of this Rule: Write unit-tests to cover the code of most methods and classes refactored.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1602:MethodsRefactoredShouldBeTested", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 method matched |
Formatting: bold✱ means added ● means code was changed |
1 method | Percentage Coverage | # lines of code (LOC) | # lines of code not covered | Debt | Severity | Full Name |
---|---|---|---|---|---|---|
FromUnixAdjustmentRule (TimeZoneInfo ,TimeZoneInfo+AdjustmentRule) ● | |c0|0| 0% | |m0|0| 9 | |m0|0| 9 | |m0|0| 9min | 0High | NodaTime.TimeZones .BclDateTimeZone+BclAdjustmentRule .FromUnixAdjustmentRule (TimeZoneInfo ,TimeZoneInfo+AdjustmentRule) |
Rule Violated: ND1604 Types almost 100% tested should be 100% tested |
• How to Fix Issues of this Rule: Write more unit-tests dedicated to cover code not covered yet. If you find some hard-to-test code, it is certainly a sign that this code is not well designed and hence, needs refactoring.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1604:TypesAlmost100PercentTestedShouldBe100PercentTested", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
17 types matched |
Formatting: bold✱ means added ● means code was changed |
17 types | Percentage Coverage | # lines of code (LOC) | # lines of code not covered | methodsCulprit | Debt | Severity | Full Name |
---|---|---|---|---|---|---|---|
TzdbDateTimeZoneSource ● | |c98|09| 98.09% | |m100|00| 157 | |m100|01| 3 | |m50|04| 1 method | |m100|01| 3min 53s | 05High | NodaTime.TimeZones .TzdbDateTimeZoneSource |
DateTimeZone | |c98|00| 98.95% | |m51|01| 95 | |m0|09| 1 | |m50|05| 1 method | |m0|09| 2min 0s | 04High | NodaTime.DateTimeZone |
ZonedDateTime | |c98|01| 98.92% | |m50|02| 93 | |m0|10| 1 | |m50|06| 1 method | |m0|10| 2min 0s | 07High | NodaTime.ZonedDateTime |
LocalDatePatternParser+LocalDate Pa rseBucket | |c98|02| 98.75% | |m40|03| 80 | |m0|06| 1 | |m50|03| 1 method | |m0|06| 2min 0s | 06High | NodaTime.Text .LocalDatePatternParser+LocalDateP arseBucket |
ZonedDateTimePatternParser | |c98|03| 98.72% | |m38|04| 78 | |m0|07| 1 | 13no method | |m0|07| 2min 0s | 01High | NodaTime.Text .ZonedDateTimePatternParser |
PrecalculatedDateTimeZone ● | |c98|04| 98.59% | |m33|05| 71 | |m0|11| 1 | |m50|01| 1 method | |m0|11| 2min 0s | 00High | NodaTime.TimeZones .PrecalculatedDateTimeZone |
DatePatternHelper | |c95|15| 95.59% | |m31|06| 68 | |m100|00| 3 | |m100|00| 2 methods
| |m100|00| 3min 53s | 03High | NodaTime.Text.Patterns .DatePatternHelper |
OffsetDateTimePatternParser | |c98|05| 98.48% | |m29|07| 66 | |m0|16| 1 | 15no method | |m0|16| 2min 0s | 02High | NodaTime.Text .OffsetDateTimePatternParser |
GregorianYearMonthDayCalculator ● | |c96|11| 96.92% | |m28|08| 65 | |m50|03| 2 | |m50|02| 1 method | |m49|03| 2min 56s | 08High | NodaTime.Calendars .GregorianYearMonthDayCalculator |
ZonedDateTimePatternParser+Zoned Da teTimeParseBucket ● | |c98|06| 98.39% | |m26|09| 62 | |m0|14| 1 | |m50|07| 1 method | |m0|14| 2min 0s | 14High | NodaTime.Text .ZonedDateTimePatternParser+ZonedD ateTimeParseBucket |
YearMonth ● | |c98|07| 98.33% | |m24|10| 60 | |m0|12| 1 | 16no method | |m0|12| 2min 0s | 13High | NodaTime.YearMonth |
TzdbStreamData ● | |c98|08| 98.18% | |m20|11| 55 | |m0|13| 1 | |m50|12| 1 method | |m0|13| 2min 0s | 16High | NodaTime.TimeZones.IO .TzdbStreamData |
PartialZoneIntervalMap ● | |c96|13| 96.15% | |m18|12| 52 | |m50|02| 2 | |m50|08| 1 method | |m49|02| 2min 56s | 15High | NodaTime.TimeZones .PartialZoneIntervalMap |
UmAlQuraYearMonthDayCalculator | |c97|10| 97.96% | |m17|13| 50 | |m0|15| 1 | |m50|09| 1 method | |m0|15| 2min 0s | 10High | NodaTime.Calendars .UmAlQuraYearMonthDayCalculator |
Resolvers | |c95|14| 95.74% | |m14|14| 47 | |m50|04| 2 | |m50|10| 1 method | |m49|04| 2min 56s | 09High | NodaTime.TimeZones.Resolvers |
OffsetDatePatternParser | |c95|16| 95.24% | |m10|15| 42 | |m50|05| 2 | 14no method | |m49|05| 2min 56s | 12High | NodaTime.Text .OffsetDatePatternParser |
AnnualDatePatternParser | |c96|12| 96.43% | |m0|16| 28 | |m0|08| 1 | |m50|11| 1 method | |m0|08| 2min 0s | 11High | NodaTime.Text .AnnualDatePatternParser |
Rule Violated: ND1605 Namespaces almost 100% tested should be 100% tested |
• How to Fix Issues of this Rule: Write more unit-tests dedicated to cover code not covered yet in the namespace. If you find some hard-to-test code, it is certainly a sign that this code is not well designed and hence, needs refactoring.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1605:NamespacesAlmost100PercentTestedShouldBe100PercentTested", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
3 namespaces matched |
Formatting: bold✱ means added ● means code was changed |
Rule Violated: ND1603 Assemblies and Namespaces should be tested |
• How to Fix Issues of this Rule: Write unit and integration tests to cover, even partially, code elements matched by this rule. Then use issues of the rules Code should be tested, New Types and Methods should be tested and Methods refactored should be tested to write more tests where it matters most, and eventually refactor some code to make it more testable.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1603:AssembliesNamespacesAndTypesShouldBeTested", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 namespace matched |
Formatting: bold✱ means added ● means code was changed |
1 namespace | # lines of code not covered | Debt | Severity | Full Name |
---|---|---|---|---|
JetBrains.Annotations | |m0|0| 13 | |m0|0| 4min 0s | 0Low | JetBrains.Annotations |
Dead Code 220 |
|
Rule Violated: ND1701 Potentially Dead Methods |
• How to Fix Issues of this Rule: Static analysis cannot provide an exact list of dead methods, because there are several ways to invoke a method dynamically (like through reflection). For each method matched by this query, first investigate if the method is invoked somehow (like through reflection). If the method is really never invoked, it is important to remove it to avoid maintaining useless code. If you estimate the code of the method might be used in the future, at least comment it, and provide an explanatory comment about the future intentions. If a method is invoked somehow, but still is matched by this rule, you can tag it with the attribute IsNotDeadCodeAttribute found in NDepend.API.dll to avoid matching the method again. You can also provide your own attribute for this need, but then you'll need to adapt this code rule. Issues of this rule have a Debt equal to 10 minutes because it only takes a short while to investigate if a method can be safely discarded. On top of these 10 minutes, the depth of usage of such method adds up 3 minutes per unity because dead method only called by dead code takes a bit more time to be investigated. The Annual Interest of issues of this rule, the annual cost to not fix such issue, is proportional to the type #lines of code, because the bigger the method is, the more it slows down maintenance.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1701:PotentiallyDeadMethods", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
47 methods matched |
Formatting: bold✱ means added ● means code was changed |
47 methods | depth | MethodsCallingMe | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|
get_LocalDateTime() | |m0|08| 0 | 08no method | |m0|08| 10min | 119min | NodaTime.AmbiguousTimeException .get_LocalDateTime() |
get_OneWeek() | |m0|07| 0 | 07no method | |m0|07| 10min | 109min | NodaTime.Duration.get_OneWeek() |
get_OneDay() | |m0|10| 0 | 10no method | |m0|10| 10min | 099min | NodaTime.Duration.get_OneDay() |
get_TimeSinceEpoch() | |m0|09| 0 | 09no method | |m0|09| 10min | 129min | NodaTime.Instant .get_TimeSinceEpoch() |
get_YearMonthDayCalendar() | |m0|03| 0 | 03no method | |m0|03| 10min | 079min | NodaTime.LocalDate .get_YearMonthDayCalendar() |
op_Inequality(LocalInstant ,LocalInstant) | |m0|06| 0 | 06no method | |m0|06| 10min | 089min | NodaTime.LocalInstant .op_Inequality(LocalInstant ,LocalInstant) |
Parse(String) ● | |m0|04| 0 | 04no method | |m0|04| 10min | 0213min | NodaTime.YearMonthDay.Parse(String ) |
op_LessThan(YearMonthDay ,YearMonthDay) | |m0|05| 0 | 05no method | |m0|05| 10min | 179min | NodaTime.YearMonthDay.op_LessThan (YearMonthDay,YearMonthDay) |
op_GreaterThan(YearMonthDay ,YearMonthDay) | |m0|11| 0 | 11no method | |m0|11| 10min | 189min | NodaTime.YearMonthDay .op_GreaterThan(YearMonthDay ,YearMonthDay) |
Parse(String) ● | |m0|17| 0 | 17no method | |m0|17| 10min | 0313min | NodaTime.YearMonthDayCalendar .Parse(String) |
op_Inequality (YearMonthDayCalendar ,YearMonthDayCalendar) | |m0|16| 0 | 16no method | |m0|16| 10min | 169min | NodaTime.YearMonthDayCalendar .op_Inequality (YearMonthDayCalendar ,YearMonthDayCalendar) |
get_Count() | |m0|19| 0 | 19no method | |m0|19| 10min | 139min | NodaTime.Utility.Cache<TKey,TValue >.get_Count() |
get_Keys() | |m0|18| 0 | 18no method | |m0|18| 10min | 0510min | NodaTime.Utility.Cache<TKey,TValue >.get_Keys() |
Clear() | |m100|02| 1 | |m100|02| 1 method | |m100|02| 13min | 0610min | NodaTime.Utility.Cache<TKey,TValue >.Clear() |
ClearCache() | |m0|13| 0 | 13no method | |m0|13| 10min | 149min | NodaTime.Globalization .NodaFormatInfo.ClearCache() |
Write(IDateTimeZoneWriter) | |m0|12| 0 | 12no method | |m0|12| 10min | 0411min | NodaTime.TimeZones .FixedDateTimeZone.Write (IDateTimeZoneWriter) |
Write(IDateTimeZoneWriter) | |m0|15| 0 | 15no method | |m0|15| 10min | 0024min | NodaTime.TimeZones .PrecalculatedDateTimeZone.Write (IDateTimeZoneWriter) |
Write(IDateTimeZoneWriter) | |m100|00| 1 | |m100|00| 1 method | |m100|00| 13min | 0115min | NodaTime.TimeZones .StandardDaylightAlternatingMap .Write(IDateTimeZoneWriter) |
op_Equality(Transition ,Transition) | |m100|01| 1 | |m100|01| 1 method | |m100|01| 13min | 159min | NodaTime.TimeZones.Transition .op_Equality(Transition,Transition ) |
op_Inequality(Transition ,Transition) | |m0|14| 0 | 14no method | |m0|14| 10min | 199min | NodaTime.TimeZones.Transition .op_Inequality(Transition ,Transition) |
Rule Violated: ND1700 Potentially Dead Types |
• How to Fix Issues of this Rule: Static analysis cannot provide an exact list of dead types, because there are several ways to use a type dynamically (like through reflection). For each type matched by this query, first investigate if the type is used somehow (like through reflection). If the type is really never used, it is important to remove it to avoid maintaining useless code. If you estimate the code of the type might be used in the future, at least comment it, and provide an explanatory comment about the future intentions. If a type is used somehow, but still is matched by this rule, you can tag it with the attribute IsNotDeadCodeAttribute found in NDepend.API.dll to avoid matching the type again. You can also provide your own attribute for this need, but then you'll need to adapt this code rule. Issues of this rule have a Debt equal to 15 minutes because it only takes a short while to investigate if a type can be safely discarded. The Annual Interest of issues of this rule, the annual cost to not fix such issue, is proportional to the type #lines of code, because the bigger the type is, the more it slows down maintenance.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1700:PotentiallyDeadTypes", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 type matched |
Formatting: bold✱ means added ● means code was changed |
1 type | depth | TypesUsingMe | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|
DateTimeZoneWriter | |m0|0| 0 | 0no type | |m0|0| 15min | 01h 24min | NodaTime.TimeZones.IO .DateTimeZoneWriter |
Security 810 |
|
Rule Violated: ND3106 Seal methods that satisfy non-public interfaces |
• How to Fix Issues of this Rule: You can: - seal the parent class, - or change the accessibility of the parent class to non-public, - or implement the method without using the virtual modifier, - or change the accessibility of the method to non-public. If after a careful check such situation doesn't represent a security threat, you can suppress the issue.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND3106:SealMethodsThatSatisfyNonPublicInterfaces", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 method matched |
Formatting: bold✱ means added ● means code was changed |
1 method | overridenInterface | Debt | Severity | Full Name |
---|---|---|---|---|
GetZoneInterval(Instant) | 0NodaTime.TimeZones .IZoneIntervalMap | |m0|0| 30min | 0High | NodaTime.DateTimeZone .GetZoneInterval(Instant) |
Visibility 290 |
Rule Violated: ND1800 Methods that could have a lower visibility |
• How to Fix Issues of this Rule: Declare each matched method with the specified optimal visibility in the CouldBeDeclared rule result column. By default, this rule matches public methods. If you are publishing an API many public methods matched should remain public. In such situation, you can opt for the coarse solution to this problem by adding in the rule source code && !m.IsPubliclyVisible or you can prefer the finer solution by tagging each concerned method with CannotDecreaseVisibilityAttribute.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1800:MethodsThatCouldHaveALowerVisibility", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
44 methods matched |
Formatting: bold✱ means added ● means code was changed |
44 methods | Visibility | CouldBeDeclared | MethodsCallingMe | Debt | Severity | Full Name |
---|---|---|---|---|---|---|
FixUnixTransitions (BclDateTimeZone+BclAdjustmentRule []) ✱ | 06internal | 06private | |m0|11| 1 method | |m0|06| 0min 30s | 06Medium | NodaTime.TimeZones.BclDateTimeZone .FixUnixTransitions (BclDateTimeZone+BclAdjustmentRule []) |
BuildMap (BclDateTimeZone+BclAdjustmentRule [],Offset,String) | 05internal | 05private | |m0|12| 1 method | |m0|05| 0min 30s | 05Medium | NodaTime.TimeZones.BclDateTimeZone .BuildMap (BclDateTimeZone+BclAdjustmentRule [],Offset,String) |
get_StandardOffset() | 07internal | 07private | |m11|07| 2 methods | |m0|07| 0min 30s | 07Medium | NodaTime.TimeZones .BclDateTimeZone+BclAdjustmentRule .get_StandardOffset() |
.ctor(ZoneInterval) ✱ | 09internal | 09private | |m0|13| 1 method | |m0|09| 0min 30s | 09Medium | NodaTime.TimeZones .BclDateTimeZone+BclAdjustmentRule ..ctor(ZoneInterval) |
ConvertUnixRuleToBclAdjustmentRu le (TimeZoneInfo+AdjustmentRule ,String,String,TimeSpan,TimeSpan ,Boolean) ✱ | 08internal | 08private | |m0|10| 1 method | |m0|08| 0min 30s | 08Medium | NodaTime.TimeZones .BclDateTimeZone+BclAdjustmentRule .ConvertUnixRuleToBclAdjustmentRul e(TimeZoneInfo+AdjustmentRule ,String,String,TimeSpan,TimeSpan ,Boolean) |
.ctor(String,ZoneInterval[] ,IZoneIntervalMap) ✱ | 01internal | 01private | |m0|14| 1 method | |m0|01| 0min 30s | 01Medium | NodaTime.TimeZones .PrecalculatedDateTimeZone..ctor (String,ZoneInterval[] ,IZoneIntervalMap) |
DebugValidateYearMonthDay (YearMonthDay) | 00internal | 00private | |m33|02| 4 methods | |m0|00| 0min 30s | 00Medium | NodaTime.CalendarSystem .DebugValidateYearMonthDay (YearMonthDay) |
ForOrdinalUncached (CalendarOrdinal ) | 02internal | 02private | |m0|18| 1 method | |m0|02| 0min 30s | 02Medium | NodaTime.CalendarSystem .ForOrdinalUncached (CalendarOrdinal) |
get_EndDate() | 04internal | 04private | |m0|19| 1 method | |m0|04| 0min 30s | 04Medium | NodaTime.YearMonth.get_EndDate() |
.ctor(Int32) | 03internal | 03private | |m11|09| 2 methods | |m0|03| 0min 30s | 03Medium | NodaTime.Utility.HashCodeHelper. .ctor(Int32) |
get_CultureInfo() | 17public | 16private | |m100|00| First 5 of 10 methods
| |m0|16| 0min 30s | 16Medium | NodaTime.Globalization .NodaFormatInfo.get_CultureInfo() |
.ctor(CultureInfo) | 15internal | 15private | |m11|05| 2 methods | |m0|15| 0min 30s | 15Medium | NodaTime.Globalization .NodaFormatInfo..ctor(CultureInfo) |
.ctor(CultureInfo ,DateTimeFormatInfo) | 16internal | 17private | |m11|06| 2 methods | |m0|17| 0min 30s | 17Medium | NodaTime.Globalization .NodaFormatInfo..ctor(CultureInfo ,DateTimeFormatInfo) |
GetDaysInAyyamiHa(Int32) | 13internal | 19private | |m77|01| First 5 of 8 methods
| |m0|19| 0min 30s | 19Medium | NodaTime.Calendars .BadiYearMonthDayCalculator .GetDaysInAyyamiHa(Int32) |
IsInAyyamiHa(YearMonthDay) | 10internal | 18private | |m11|08| 2 methods | |m0|18| 0min 30s | 18Medium | NodaTime.Calendars .BadiYearMonthDayCalculator .IsInAyyamiHa(YearMonthDay) |
.ctor(String,String) | 11internal | 11private | |m0|15| 1 method | |m0|11| 0min 30s | 11Medium | NodaTime.Calendars.Era..ctor (String,String) |
AreWindowsStyleRules (TimeZoneInfo+AdjustmentRule[]) ● | 12internal | 10private | |m0|16| 1 method | |m0|10| 0min 30s | 10Medium | NodaTime.TimeZones.BclDateTimeZone .AreWindowsStyleRules (TimeZoneInfo+AdjustmentRule[]) |
get_Offset() | 19public | 12private | |m22|04| 3 methods | |m0|12| 0min 30s | 12Medium | NodaTime.TimeZones .FixedDateTimeZone.get_Offset() |
get_Name() | 18public | 14private | |m22|03| 3 methods | |m0|14| 0min 30s | 14Medium | NodaTime.TimeZones .FixedDateTimeZone.get_Name() |
.ctor(String,Offset) | 14internal | 13private | |m0|17| 1 method | |m0|13| 0min 30s | 13Medium | NodaTime.TimeZones .FixedDateTimeZone..ctor(String ,Offset) |
Rule Violated: ND1804 Avoid publicly visible constant fields |
• How to Fix Issues of this Rule: Declare matched fields as static readonly instead of constant. This way, the field value is safely changeable without the need to recompile client assemblies.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1804:AvoidPubliclyVisibleConstantFields", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
32 fields matched |
Formatting: bold✱ means added ● means code was changed |
32 fields | Debt | Severity | Full Name |
---|---|---|---|
NanosecondsPerMicrosecond ✱ | |m0|06| 0min 30s | 06Medium | NodaTime.NodaConstants .NanosecondsPerMicrosecond |
MicrosecondsPerSecond ✱ | |m0|05| 0min 30s | 05Medium | NodaTime.NodaConstants .MicrosecondsPerSecond |
NanosecondsPerTick | |m0|07| 0min 30s | 07Medium | NodaTime.NodaConstants .NanosecondsPerTick |
NanosecondsPerMillisecond | |m0|09| 0min 30s | 09Medium | NodaTime.NodaConstants .NanosecondsPerMillisecond |
NanosecondsPerSecond | |m0|08| 0min 30s | 08Medium | NodaTime.NodaConstants .NanosecondsPerSecond |
NanosecondsPerMinute | |m0|01| 0min 30s | 01Medium | NodaTime.NodaConstants .NanosecondsPerMinute |
NanosecondsPerHour | |m0|00| 0min 30s | 00Medium | NodaTime.NodaConstants .NanosecondsPerHour |
NanosecondsPerDay | |m0|02| 0min 30s | 02Medium | NodaTime.NodaConstants .NanosecondsPerDay |
NanosecondsPerWeek | |m0|04| 0min 30s | 04Medium | NodaTime.NodaConstants .NanosecondsPerWeek |
TicksPerMillisecond | |m0|03| 0min 30s | 03Medium | NodaTime.NodaConstants .TicksPerMillisecond |
TicksPerSecond | |m0|16| 0min 30s | 16Medium | NodaTime.NodaConstants .TicksPerSecond |
TicksPerMinute | |m0|15| 0min 30s | 15Medium | NodaTime.NodaConstants .TicksPerMinute |
TicksPerHour | |m0|17| 0min 30s | 17Medium | NodaTime.NodaConstants .TicksPerHour |
TicksPerDay | |m0|19| 0min 30s | 19Medium | NodaTime.NodaConstants.TicksPerDay |
TicksPerWeek | |m0|18| 0min 30s | 18Medium | NodaTime.NodaConstants .TicksPerWeek |
MillisecondsPerSecond | |m0|11| 0min 30s | 11Medium | NodaTime.NodaConstants .MillisecondsPerSecond |
MillisecondsPerMinute | |m0|10| 0min 30s | 10Medium | NodaTime.NodaConstants .MillisecondsPerMinute |
MillisecondsPerHour | |m0|12| 0min 30s | 12Medium | NodaTime.NodaConstants .MillisecondsPerHour |
MillisecondsPerDay | |m0|14| 0min 30s | 14Medium | NodaTime.NodaConstants .MillisecondsPerDay |
MillisecondsPerWeek | |m0|13| 0min 30s | 13Medium | NodaTime.NodaConstants .MillisecondsPerWeek |
Rule Violated: ND1801 Types that could have a lower visibility |
• How to Fix Issues of this Rule: Declare each matched type with the specified optimal visibility in the CouldBeDeclared rule result column. By default, this rule matches public types. If you are publishing an API many public types matched should remain public. In such situation, you can opt for the coarse solution to this problem by adding in the rule source code && !m.IsPubliclyVisible or you can prefer the finer solution by tagging each concerned type with CannotDecreaseVisibilityAttribute.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1801:TypesThatCouldHaveALowerVisibility", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
5 types matched |
Formatting: bold✱ means added ● means code was changed |
5 types | Visibility | CouldBeDeclared | TypesUsingMe | Debt | Severity | Full Name |
---|---|---|---|---|---|---|
BclDateTimeZone+BclAdjustmentRul e ● | 1internal | 1private | |m0|1| 1 type | |m0|1| 0min 30s | 1Medium | NodaTime.TimeZones .BclDateTimeZone+BclAdjustmentRule |
TimeZoneInfoInterceptor+ITimeZon eI nfoShim | 0internal | 0private | |m100|0| 2 types | |m0|0| 0min 30s | 0Medium | NodaTime.TimeZones .TimeZoneInfoInterceptor+ITimeZone InfoShim |
TzdbStreamData+Builder ● | 2internal | 2private | |m0|2| 1 type | |m0|2| 0min 30s | 2Medium | NodaTime.TimeZones.IO .TzdbStreamData+Builder |
AnnualDatePatternParser+AnnualDa te ParseBucket | 4internal | 4private | |m0|4| 1 type | |m0|4| 0min 30s | 4Medium | NodaTime.Text .AnnualDatePatternParser+AnnualDat eParseBucket |
YearMonthPatternParser+YearMonth Pa rseBucket | 3internal | 3private | |m0|3| 1 type | |m0|3| 0min 30s | 3Medium | NodaTime.Text .YearMonthPatternParser+YearMonthP arseBucket |
Rule Violated: ND1807 Avoid public methods not publicly visible |
• How to Fix Issues of this Rule: Declare the method as internal if it is used outside of its type, else declare it as private.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1807:AvoidPublicMethodsNotPubliclyVisible", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
49 methods matched |
Formatting: bold✱ means added ● means code was changed |
49 methods | parentTypeVisibility | declareMethodAs | methodsCaller | Debt | Severity | Full Name |
---|---|---|---|---|---|---|
Minus(Offset) | 06declared as *internal* | 07internal | |m21|07| 4 methods | |m0|06| 0min 30s | 06Low | NodaTime.LocalInstant.Minus(Offset ) |
get_Value() | 05declared as *internal* | 06internal | |m50|03| First 5 of 8 methods | |m0|05| 0min 30s | 05Low | NodaTime.Utility.HashCodeHelper .get_Value() |
get_CultureInfo() | 07declared as *internal* | 00private | |m64|01| First 5 of 10 methods
| |m0|07| 0min 30s | 07Low | NodaTime.Globalization .NodaFormatInfo.get_CultureInfo() |
get_CompareInfo() | 09declared as *internal* | 09internal | |m28|06| 5 methods
| |m0|09| 0min 30s | 09Low | NodaTime.Globalization .NodaFormatInfo.get_CompareInfo() |
get_LongMonthNames() | 08declared as *internal* | 08internal | |m7|11| 2 methods | |m0|08| 0min 30s | 08Low | NodaTime.Globalization .NodaFormatInfo.get_LongMonthNames () |
get_ShortMonthNames() | 01declared as *internal* | 05internal | |m7|10| 2 methods | |m0|01| 0min 30s | 01Low | NodaTime.Globalization .NodaFormatInfo .get_ShortMonthNames() |
get_LongMonthGenitiveNames() | 00declared as *internal* | 02internal | |m7|09| 2 methods | |m0|00| 0min 30s | 00Low | NodaTime.Globalization .NodaFormatInfo .get_LongMonthGenitiveNames() |
get_ShortMonthGenitiveNames() | 02declared as *internal* | 01internal | |m7|08| 2 methods | |m0|02| 0min 30s | 02Low | NodaTime.Globalization .NodaFormatInfo .get_ShortMonthGenitiveNames() |
get_LongDayNames() | 04declared as *internal* | 03internal | |m0|17| 1 method | |m0|04| 0min 30s | 04Low | NodaTime.Globalization .NodaFormatInfo.get_LongDayNames() |
get_ShortDayNames() | 03declared as *internal* | 04internal | |m0|12| 1 method | |m0|03| 0min 30s | 03Low | NodaTime.Globalization .NodaFormatInfo.get_ShortDayNames( ) |
get_DateTimeFormat() | 16declared as *internal* | 16internal | |m64|02| First 5 of 10 methods
| |m0|16| 0min 30s | 16Low | NodaTime.Globalization .NodaFormatInfo.get_DateTimeFormat () |
get_TimeSeparator() | 15declared as *internal* | 15internal | |m42|05| First 5 of 7 methods | |m0|15| 0min 30s | 15Low | NodaTime.Globalization .NodaFormatInfo.get_TimeSeparator( ) |
get_DateSeparator() | 17declared as *internal* | 17internal | |m42|04| First 5 of 7 methods | |m0|17| 0min 30s | 17Low | NodaTime.Globalization .NodaFormatInfo.get_DateSeparator( ) |
get_AMDesignator() | 19declared as *internal* | 19internal | |m0|19| 1 method | |m0|19| 0min 30s | 19Low | NodaTime.Globalization .NodaFormatInfo.get_AMDesignator() |
get_PMDesignator() | 18declared as *internal* | 18internal | |m0|16| 1 method | |m0|18| 0min 30s | 18Low | NodaTime.Globalization .NodaFormatInfo.get_PMDesignator() |
get_CurrentInfo() | 11declared as *internal* | 11internal | |m85|00| First 5 of 13 methods
| |m0|11| 0min 30s | 11Low | NodaTime.Globalization .NodaFormatInfo.get_CurrentInfo() |
get_OffsetPatternLong() | 10declared as *internal* | 10internal | |m0|13| 1 method | |m0|10| 0min 30s | 10Low | NodaTime.Globalization .NodaFormatInfo .get_OffsetPatternLong() |
get_OffsetPatternMedium() | 12declared as *internal* | 12internal | |m0|14| 1 method | |m0|12| 0min 30s | 12Low | NodaTime.Globalization .NodaFormatInfo .get_OffsetPatternMedium() |
get_OffsetPatternShort() | 14declared as *internal* | 14internal | |m0|15| 1 method | |m0|14| 0min 30s | 14Low | NodaTime.Globalization .NodaFormatInfo .get_OffsetPatternShort() |
get_OffsetPatternLongNoPunctua tion () | 13declared as *internal* | 13internal | |m0|18| 1 method | |m0|13| 0min 30s | 13Low | NodaTime.Globalization .NodaFormatInfo .get_OffsetPatternLongNoPunctuatio n() |
Rule Violated: ND1802 Fields that could have a lower visibility |
• How to Fix Issues of this Rule: Declare each matched field with the specified optimal visibility in the CouldBeDeclared rule result column. By default, this rule matches public fields. If you are publishing an API some public fields matched should remain public. In such situation, you can opt for the coarse solution to this problem by adding in the rule source code && !m.IsPubliclyVisible or you can prefer the finer solution by tagging eah concerned field with CannotDecreaseVisibilityAttribute.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1802:FieldsThatCouldHaveALowerVisibility", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
7 fields matched |
Formatting: bold✱ means added ● means code was changed |
7 fields | Visibility | CouldBeDeclared | MethodsUsingMe | Debt | Severity | Full Name |
---|---|---|---|---|---|---|
MinDecimalNanoseconds | 2internal | 2private | |m0|5| 2 methods | |m0|2| 0min 30s | 2Medium | NodaTime.Duration .MinDecimalNanoseconds |
MaxDecimalNanoseconds | 0internal | 0private | |m0|6| 2 methods | |m0|1| 0min 30s | 1Medium | NodaTime.Duration .MaxDecimalNanoseconds |
BeforeMinValue | 4public | 4internal | |m26|1| First 5 of 6 methods | |m0|0| 0min 30s | 0Medium | NodaTime.LocalInstant .BeforeMinValue |
AfterMaxValue | 3public | 3internal | |m26|2| First 5 of 6 methods | |m0|3| 0min 30s | 3Medium | NodaTime.LocalInstant .AfterMaxValue |
InvariantInfo | 5public | 5internal | |m100|0| First 5 of 17 methods
| |m0|6| 0min 30s | 6Medium | NodaTime.Globalization .NodaFormatInfo.InvariantInfo |
TemplateValue | 1internal | 1private | |m6|4| 3 methods | |m0|5| 0min 30s | 5Medium | NodaTime.Text .AnnualDatePatternParser+AnnualDat eParseBucket.TemplateValue |
IsNegative | 6public | 6internal | |m6|3| 3 methods
| |m0|4| 0min 30s | 4Medium | NodaTime.Text .OffsetPatternParser+OffsetParseBu cket.IsNegative |
Rule Violated: ND1805 Fields should be declared as private or protected |
• How to Fix Issues of this Rule: Consider declaring a matched mutable field as private or marking it as readonly. If possible, refactor the code outside its parent type to eliminate its usage. Alternatively, if external code requires access to the field, consider encapsulating the field accesses within a property. Using a property allows you to set debug breakpoints on the accessors, simplifying the tracking of read-write accesses in case of issues.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1805:FieldsShouldBeDeclaredAsPrivate", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
6 fields matched |
Formatting: bold✱ means added ● means code was changed |
6 fields | Visibility | outsideMethodsUsingMe | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|
stringPool | 2internal | |m0|2| 1 method | |m0|2| 1min 20s | 22min 0s | NodaTime.TimeZones.IO .TzdbStreamData+Builder.stringPool |
tzdbVersion | 1internal | |m0|1| 1 method | |m0|1| 1min 20s | 12min 0s | NodaTime.TimeZones.IO .TzdbStreamData+Builder .tzdbVersion |
tzdbIdMap | 0internal | |m0|0| 1 method | |m0|0| 1min 20s | 02min 0s | NodaTime.TimeZones.IO .TzdbStreamData+Builder.tzdbIdMap |
zoneLocations | 5internal | |m0|5| 1 method | |m0|5| 1min 20s | 52min 0s | NodaTime.TimeZones.IO .TzdbStreamData+Builder .zoneLocations |
zone1970Locations | 4internal | |m0|4| 1 method | |m0|4| 1min 20s | 42min 0s | NodaTime.TimeZones.IO .TzdbStreamData+Builder .zone1970Locations |
windowsMapping | 3internal | |m0|3| 1 method | |m0|3| 1min 20s | 32min 0s | NodaTime.TimeZones.IO .TzdbStreamData+Builder .windowsMapping |
Rule Violated: ND1803 Types that could be declared as private, nested in a parent type |
• How to Fix Issues of this Rule: Nest each matched type into the specified parent type and declare it as private. However nested private types are hardly testable. Hence this rule might not be applied to types consumed directly by tests.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1803:TypesThatCouldBeDeclaredAsPrivateNestedInAParentType", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
6 types matched |
Formatting: bold✱ means added ● means code was changed |
6 types | couldBeNestedIn | Debt | Severity | Full Name |
---|---|---|---|---|
DebugPreconditionException | 2NodaTime.Utility.Preconditions | |m0|2| 3min 0s | 2Low | NodaTime.Utility .DebugPreconditionException |
FixedLengthDatePeriodField ● | 1NodaTime.Fields.DatePeriodFields | |m0|1| 3min 0s | 1Low | NodaTime.Fields .FixedLengthDatePeriodField |
MonthsPeriodField | 0NodaTime.Fields.DatePeriodFields | |m0|0| 3min 0s | 0Low | NodaTime.Fields.MonthsPeriodField |
YearsPeriodField | 5NodaTime.Fields.DatePeriodFields | |m0|5| 3min 0s | 5Low | NodaTime.Fields.YearsPeriodField |
HebrewMonthConverter | 4NodaTime.Calendars .HebrewYearMonthDayCalculator | |m0|4| 3min 0s | 4Low | NodaTime.Calendars .HebrewMonthConverter |
SimpleWeekYearRule | 3NodaTime.Calendars.WeekYearRules | |m0|3| 3min 0s | 3Low | NodaTime.Calendars .SimpleWeekYearRule |
Rule Violated: ND1806 Constructors of abstract classes should be declared as protected or private |
• How to Fix Issues of this Rule: To fix a violation of this rule, either declare the constructor as protected, or do not declare the type as abstract.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1806:ConstructorsOfAbstractClassesShouldBeDeclaredAsProtectedOrPrivate", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
2 methods matched |
Formatting: bold✱ means added ● means code was changed |
2 methods | baseClass | Debt | Severity | Full Name |
---|---|---|---|---|
.ctor() | 0NodaTime.OffsetDateTime+Comparer | |m0|0| 0min 30s | 0Medium | NodaTime.OffsetDateTime+Comparer. .ctor() |
.ctor() | 1NodaTime.ZonedDateTime+Comparer | |m0|1| 0min 30s | 1Medium | NodaTime.ZonedDateTime+Comparer. .ctor() |
Rule Violated: ND1810 Exception classes should be declared as public |
• How to Fix Issues of this Rule: Declare your custom exception classes as public to make them catchable in every context.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1810:ExceptionClassesShouldBeDeclaredAsPublic", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 type matched |
Formatting: bold✱ means added ● means code was changed |
1 type | Debt | Severity | Full Name |
---|---|---|---|
DebugPreconditionException | |m0|0| 2min 0s | 0Medium | NodaTime.Utility .DebugPreconditionException |
Immutability 751 |
|
Rule Violated: ND1905 A field must not be assigned from outside its parent hierarchy types |
• How to Fix Issues of this Rule: Matched fields must be declared as protected and even better as private. However, if the field exclusively references immutable states, it can remain accessible from the outside but must be declared as readonly. The estimated Debt, which means the effort to fix such issue, is equal to 5 minutes per method outside the parent hierarchy that assigns the matched field.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1905:AFieldMustNotBeAssignedFromOutsideItsParentHierarchyTypes", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
24 fields matched |
Formatting: bold✱ means added ● means code was changed |
Rule Violated: ND1906 Don't assign a field from many methods |
• How to Fix Issues of this Rule: There is no straight advice to refactor the number of methods responsible for assigning a field. Sometime the situation is simple enough, like when a field that hold an indentation state is assigned by many writer methods. Such situation only requires to define two methods IndentPlus()/IndentMinus() that assign the field, called from all writers methods. Sometime the solution involves rethinking and then rewriting a complex algorithm. Such field can sometime become just a variable accessed locally by a method or a closure. Sometime, just rethinking the life-time and the role of the parent object allows the field to become immutable (i.e assigned only by the constructor). The estimated Debt, which means the effort to fix such issue, is equal to 4 minutes plus 5 minutes per method assigning the instance field or 10 minutes per method assigning the static field.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1906:DontAssignAFieldFromManyMethods", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
14 fields matched |
Formatting: bold✱ means added ● means code was changed |
Critical Rule Violated: ND1901 Avoid non-readonly static fields |
• How to Fix Issues of this Rule: If the static field is just assigned once in the program lifetime, make sure to declare it as readonly and assign it inline, or from the static constructor. Else if methods other than the static constructor need to assign the state hold by the static field, refactoring must occur to ensure that this state is hold through an instance field.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1901:AvoidNonReadOnlyStaticFields", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
5 fields matched |
Formatting: bold✱ means added ● means code was changed |
5 fields | methodAssigningField | Debt | Severity | Full Name |
---|---|---|---|---|
dateTimeZoneProvider | |m100|1| 1 method | |m100|1| 10min | 1High | NodaTime.Xml .XmlSerializationSettings .dateTimeZoneProvider |
YearInfoRaw | 4no method | |m0|4| 2min 0s | 0High | NodaTime.Calendars .BadiYearMonthDayCalculator .YearInfoRaw |
systemDefault | |m100|0| 1 method | |m100|0| 10min | 2High | NodaTime.TimeZones.BclDateTimeZone .systemDefault |
cachedPattern | |m100|3| 1 method | |m100|3| 10min | 4High | NodaTime.Text .ZonedDateTimeTypeConverter .cachedPattern |
dateTimeZoneProvider | |m100|2| 1 method | |m100|2| 10min | 3High | NodaTime.Text .TypeConverterSettings .dateTimeZoneProvider |
Rule Violated: ND1902 Avoid static fields with a mutable field type |
• How to Fix Issues of this Rule: To fix violations of this rule, make sure to hold mutable states through objects that are passed explicitly everywhere they need to be consumed, in opposition to mutable object hold by a static field that makes it modifiable from a bit everywhere in the program.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1902:AvoidStaticFieldsWithAMutableFieldType", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
2 fields matched |
Formatting: bold✱ means added ● means code was changed |
2 fields | mutableFieldType | isFieldImmutable | isFieldReadOnly | Debt | Severity | Full Name |
---|---|---|---|---|---|---|
Instance | 0NodaTime .Period+NormalizingPeriodEqualityC omparer | 0Immutable | 0ReadOnly | |m0|0| 10min | 0Medium | NodaTime .Period+NormalizingPeriodEqualityC omparer.Instance |
InvariantInfo | 1NodaTime.Globalization .NodaFormatInfo | 1Immutable | 1ReadOnly | |m0|1| 10min | 1Medium | NodaTime.Globalization .NodaFormatInfo.InvariantInfo |
Rule Violated: ND1900 Fields should be marked as ReadOnly when possible |
• How to Fix Issues of this Rule: Declare the field with the C# readonly keyword (ReadOnly in VB.NET).
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1900:FieldsShouldBeMarkedAsReadOnlyWhenPossible", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 field matched |
Formatting: bold✱ means added ● means code was changed |
1 field | MethodsReadingMeButNotAssigningMe | MethodsAssigningMe | Debt | Severity | Full Name |
---|---|---|---|---|---|
YearInfoRaw | |m0|0| 3 methods | 0no method | |m0|0| 5min | 0Medium | NodaTime.Calendars .BadiYearMonthDayCalculator .YearInfoRaw |
Rule Violated: ND1914 Immutable struct should be declared as readonly |
• How to Fix Issues of this Rule: Just declare matched structures as readonly struct.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1914:ImmutableStructShouldBeDeclaredAsReadonly", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 type matched |
Formatting: bold✱ means added ● means code was changed |
1 type | Debt | Severity | Full Name |
---|---|---|---|
YearMonth ● | |m0|0| 2min 0s | 0Medium | NodaTime.YearMonth |
Naming Conventions 1660 |
Rule Violated: ND2000 Instance fields naming convention |
• How to Fix Issues of this Rule: Once the rule has been adapted to your own naming convention make sure to name all matched instance fields adequately.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND2000:InstanceFieldsNamingConvention", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
32 fields matched |
Formatting: bold✱ means added ● means code was changed |
32 fields | Size of instance | Debt | Severity | Full Name |
---|---|---|---|---|
TemplateValue | |m0|10| 0 | |m0|06| 3min 0s | 06Medium | NodaTime.Text .AnnualDatePatternParser+AnnualDat eParseBucket.TemplateValue |
MonthOfYearNumeric | |m0|12| 0 | |m0|05| 3min 0s | 05Medium | NodaTime.Text .AnnualDatePatternParser+AnnualDat eParseBucket.MonthOfYearNumeric |
MonthOfYearText | |m0|11| 0 | |m0|07| 3min 0s | 07Medium | NodaTime.Text .AnnualDatePatternParser+AnnualDat eParseBucket.MonthOfYearText |
DayOfMonth | |m0|07| 0 | |m0|09| 3min 0s | 09Medium | NodaTime.Text .AnnualDatePatternParser+AnnualDat eParseBucket.DayOfMonth |
TemplateValue | |m0|09| 0 | |m0|08| 3min 0s | 08Medium | NodaTime.Text .LocalDatePatternParser+LocalDateP arseBucket.TemplateValue |
Calendar | |m100|03| 4 | |m0|01| 3min 0s | 01Medium | NodaTime.Text .LocalDatePatternParser+LocalDateP arseBucket.Calendar |
Year | |m0|08| 0 | |m0|00| 3min 0s | 00Medium | NodaTime.Text .LocalDatePatternParser+LocalDateP arseBucket.Year |
Era | |m100|02| 4 | |m0|02| 3min 0s | 02Medium | NodaTime.Text .LocalDatePatternParser+LocalDateP arseBucket.Era |
YearOfEra | |m0|17| 0 | |m0|04| 3min 0s | 04Medium | NodaTime.Text .LocalDatePatternParser+LocalDateP arseBucket.YearOfEra |
MonthOfYearNumeric | |m0|18| 0 | |m0|03| 3min 0s | 03Medium | NodaTime.Text .LocalDatePatternParser+LocalDateP arseBucket.MonthOfYearNumeric |
MonthOfYearText | |m0|19| 0 | |m0|16| 3min 0s | 16Medium | NodaTime.Text .LocalDatePatternParser+LocalDateP arseBucket.MonthOfYearText |
DayOfMonth | |m0|16| 0 | |m0|15| 3min 0s | 15Medium | NodaTime.Text .LocalDatePatternParser+LocalDateP arseBucket.DayOfMonth |
DayOfWeek | |m0|13| 0 | |m0|17| 3min 0s | 17Medium | NodaTime.Text .LocalDatePatternParser+LocalDateP arseBucket.DayOfWeek |
Date | |m100|00| 4 | |m0|19| 3min 0s | 19Medium | NodaTime.Text .LocalDateTimePatternParser+LocalD ateTimeParseBucket.Date |
Time | |m100|01| 4 | |m0|18| 3min 0s | 18Medium | NodaTime.Text .LocalDateTimePatternParser+LocalD ateTimeParseBucket.Time |
Hours12 | |m0|14| 0 | |m0|11| 3min 0s | 11Medium | NodaTime.Text .LocalTimePatternParser+LocalTimeP arseBucket.Hours12 |
Date | |m100|05| 4 | |m0|10| 3min 0s | 10Medium | NodaTime.Text .OffsetDatePatternParser+OffsetDat eParseBucket.Date |
Offset | |m0|15| 0 | |m0|12| 3min 0s | 12Medium | NodaTime.Text .OffsetDatePatternParser+OffsetDat eParseBucket.Offset |
Date | |m100|04| 4 | |m0|14| 3min 0s | 14Medium | NodaTime.Text .OffsetDateTimePatternParser+Offse tDateTimeParseBucket.Date |
Time | |m100|06| 4 | |m0|13| 3min 0s | 13Medium | NodaTime.Text .OffsetDateTimePatternParser+Offse tDateTimeParseBucket.Time |
Rule Violated: ND2022 Nested class members should not mask outer class' static members |
• How to Fix Issues of this Rule: To avoid such naming collision, members of the inner class should be assigned unique and descriptive names.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND2022:NestedClassMembersShouldNotMaskOutClassStaticMembers", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
11 members matched |
Formatting: bold✱ means added ● means code was changed |
11 members | isOverlapping | declaredIn | Debt | Severity | Full Name |
---|---|---|---|---|---|
Coptic | 03NodaTime.CalendarSystem.Coptic | 03NodaTime.CalendarSystem | |m0|03| 2min 0s | 03Medium | NodaTime .CalendarSystem+MiscellaneousCalen dars.Coptic |
UmAlQura | 04NodaTime.CalendarSystem.UmAlQura | 04NodaTime.CalendarSystem | |m0|04| 2min 0s | 04Medium | NodaTime .CalendarSystem+MiscellaneousCalen dars.UmAlQura |
Badi | 02NodaTime.CalendarSystem.Badi | 02NodaTime.CalendarSystem | |m0|02| 2min 0s | 02Medium | NodaTime .CalendarSystem+MiscellaneousCalen dars.Badi |
Gregorian | 00NodaTime.CalendarSystem.Gregorian | 00NodaTime.CalendarSystem | |m0|00| 2min 0s | 00Medium | NodaTime .CalendarSystem+GregorianJulianCal endars.Gregorian |
Julian | 01NodaTime.CalendarSystem.Julian | 01NodaTime.CalendarSystem | |m0|01| 2min 0s | 01Medium | NodaTime .CalendarSystem+GregorianJulianCal endars.Julian |
FindSystemTimeZoneById(String) | 05NodaTime.TimeZones .TimeZoneInfoInterceptor .FindSystemTimeZoneById(String) | 05NodaTime.TimeZones .TimeZoneInfoInterceptor | |m0|05| 2min 0s | 05Medium | NodaTime.TimeZones .TimeZoneInfoInterceptor+ITimeZone InfoShim.FindSystemTimeZoneById (String) |
GetSystemTimeZones() | 09NodaTime.TimeZones .TimeZoneInfoInterceptor .GetSystemTimeZones() | 09NodaTime.TimeZones .TimeZoneInfoInterceptor | |m0|09| 2min 0s | 09Medium | NodaTime.TimeZones .TimeZoneInfoInterceptor+ITimeZone InfoShim.GetSystemTimeZones() |
Local | 10NodaTime.TimeZones .TimeZoneInfoInterceptor.Local | 10NodaTime.TimeZones .TimeZoneInfoInterceptor | |m0|10| 2min 0s | 10Medium | NodaTime.TimeZones .TimeZoneInfoInterceptor+ITimeZone InfoShim.Local |
FindSystemTimeZoneById(String) | 08NodaTime.TimeZones .TimeZoneInfoInterceptor .FindSystemTimeZoneById(String) | 08NodaTime.TimeZones .TimeZoneInfoInterceptor | |m0|08| 2min 0s | 08Medium | NodaTime.TimeZones .TimeZoneInfoInterceptor+BclShim .FindSystemTimeZoneById(String) |
GetSystemTimeZones() | 06NodaTime.TimeZones .TimeZoneInfoInterceptor .GetSystemTimeZones() | 06NodaTime.TimeZones .TimeZoneInfoInterceptor | |m0|06| 2min 0s | 06Medium | NodaTime.TimeZones .TimeZoneInfoInterceptor+BclShim .GetSystemTimeZones() |
Local | 07NodaTime.TimeZones .TimeZoneInfoInterceptor.Local | 07NodaTime.TimeZones .TimeZoneInfoInterceptor | |m0|07| 2min 0s | 07Medium | NodaTime.TimeZones .TimeZoneInfoInterceptor+BclShim .Local |
Rule Violated: ND2003 Abstract base class should be suffixed with 'Base' |
• How to Fix Issues of this Rule: Suffix the names of matched base classes with Base.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND2003:AbstractBaseClassShouldBeSuffixedWithBase", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
7 types matched |
Formatting: bold✱ means added ● means code was changed |
7 types | Debt | Severity | Full Name |
---|---|---|---|
DateTimeZone | |m0|2| 5min | 2Medium | NodaTime.DateTimeZone |
OffsetDateTime+Comparer | |m0|1| 5min | 1Medium | NodaTime.OffsetDateTime+Comparer |
ZonedDateTime+Comparer | |m0|0| 5min | 0Medium | NodaTime.ZonedDateTime+Comparer |
EraCalculator | |m0|3| 5min | 3Medium | NodaTime.Calendars.EraCalculator |
YearMonthDayCalculator | |m0|6| 5min | 6Medium | NodaTime.Calendars .YearMonthDayCalculator |
ParseBucket<T> | |m0|5| 5min | 5Medium | NodaTime.Text.ParseBucket<T> |
TextCursor | |m0|4| 5min | 4Medium | NodaTime.Text.TextCursor |
Rule Violated: ND2001 Static fields naming convention |
• How to Fix Issues of this Rule: Once the rule has been adapted to your own naming convention make sure to name all matched static fields adequately.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND2001:StaticFieldsNamingConvention", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
7 fields matched |
Formatting: bold✱ means added ● means code was changed |
7 fields | Size of instance | Debt | Severity | Full Name |
---|---|---|---|---|
stateLock | 2N/A | |m0|2| 3min 0s | 2Medium | NodaTime.Xml .XmlSerializationSettings .stateLock |
dateTimeZoneProvider | 1N/A | |m0|1| 3min 0s | 1Medium | NodaTime.Xml .XmlSerializationSettings .dateTimeZoneProvider |
systemDefault | 0N/A | |m0|0| 3min 0s | 0Medium | NodaTime.TimeZones.BclDateTimeZone .systemDefault |
builtin | 3N/A | |m0|3| 3min 0s | 3Medium | NodaTime.TimeZones .TzdbDateTimeZoneSource+DefaultHol der.builtin |
cachedPattern | 6N/A | |m0|6| 3min 0s | 6Medium | NodaTime.Text .ZonedDateTimeTypeConverter .cachedPattern |
stateLock | 5N/A | |m0|5| 3min 0s | 5Medium | NodaTime.Text .TypeConverterSettings.stateLock |
dateTimeZoneProvider | 4N/A | |m0|4| 3min 0s | 4Medium | NodaTime.Text .TypeConverterSettings .dateTimeZoneProvider |
Rule Violated: ND2013 Avoid prefixing type name with parent namespace name |
• How to Fix Issues of this Rule: To fix a violation of this rule, remove the prefix from the type name.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND2013:AvoidPrefixingTypeNameWithParentNamespaceName", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
4 types matched |
Formatting: bold✱ means added ● means code was changed |
4 types | namespaceName | Debt | Severity | Full Name |
---|---|---|---|---|
XmlSchemaDefinition ● | 1Xml | |m0|1| 10min | 1Medium | NodaTime.Xml.XmlSchemaDefinition |
XmlSerializationSettings | 0Xml | |m0|0| 10min | 0Medium | NodaTime.Xml .XmlSerializationSettings |
TextCursor | 3Text | |m0|3| 10min | 3Medium | NodaTime.Text.TextCursor |
TextErrorMessages | 2Text | |m0|2| 10min | 2Medium | NodaTime.Text.TextErrorMessages |
Rule Violated: ND2016 Methods prefixed with 'Try' should return a boolean |
• How to Fix Issues of this Rule: To fix a violation of this rule, Rename the method, or transform it into an operation that can fail.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND2016:MethodsPrefixedWithTryShouldReturnABoolean", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
2 methods matched |
Formatting: bold✱ means added ● means code was changed |
2 methods | ReturnType | Debt | Severity | Full Name |
---|---|---|---|---|
TryParseFixedZone(ValueCursor) ● | 0NodaTime.DateTimeZone | |m0|0| 10min | 0Medium | NodaTime.Text .ZonedDateTimePatternParser+ZonedD ateTimeParseBucket .TryParseFixedZone(ValueCursor) |
TryParseProviderZone(ValueCursor ) | 1NodaTime.DateTimeZone | |m0|1| 10min | 1Medium | NodaTime.Text .ZonedDateTimePatternParser+ZonedD ateTimeParseBucket .TryParseProviderZone(ValueCursor) |
Source Files Organization 330 |
Rule Violated: ND2102 Avoid defining multiple types in a source file |
• How to Fix Issues of this Rule: To fix a violation of this rule, create a source file for each type. By default issues of this rule have a Low severity because they reflect more an advice than a problem.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND2102:AvoidDefiningMultipleTypesInASourceFile", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
4 types matched |
Formatting: bold✱ means added ● means code was changed |
4 types | TypesInSourceFile | SourceFilePathString | SourceFileNameString | Debt | Severity | Full Name |
---|---|---|---|---|---|---|
Preconditions ● | |m0|2| 2 types | 1\My\NDepend\WebSite\SampleReport\NodaTime\3.1.0\src\NodaTime\Utility\Preconditions.cs | 1Preconditions.cs | |m0|1| 3min 0s | 1Low | NodaTime.Utility.Preconditions |
IWeekYearRule | |m0|3| 2 types | 0\My\NDepend\WebSite\SampleReport\NodaTime\3.1.0\src\NodaTime\Calendars\IWeekYearRule.cs | 0IWeekYearRule.cs | |m0|0| 3min 0s | 0Low | NodaTime.Calendars.IWeekYearRule |
AmbiguousTimeResolver | |m9|1| 3 types | 3\My\NDepend\WebSite\SampleReport\NodaTime\3.1.0\src\NodaTime\TimeZones\Delegates.cs | 3Delegates.cs | |m0|3| 3min 0s | 3Low | NodaTime.TimeZones .AmbiguousTimeResolver |
AnnualDateTypeConverter | |m100|0| First 5 of 13 types | 2\My\NDepend\WebSite\SampleReport\NodaTime\3.1.0\src\NodaTime\Text\TypeConverters.cs | 2TypeConverters.cs | |m0|2| 3min 0s | 2Low | NodaTime.Text .AnnualDateTypeConverter |
Rule Violated: ND2104 Types with source files stored in the same directory, should be declared in the same namespace |
• How to Fix Issues of this Rule: Violations of this rule are types in the typesOutOfMainNamespace column. Typically such type … • … is contained in the wrong namespace but its source file is stored in the right directory. In such situation the type should be contained in main namespace. • … is contained in the right namespace but its source file is stored in the wrong directory In such situation the source file of the type must be moved to the proper parent namespace directory. • … is declared in multiple source files, stored in different directories. In such situation it is preferable that all source files are stored in a single directory. The estimated Debt, which means the effort to fix such issue, is equal to 2 minutes plus 5 minutes per type in typesOutOfMainNamespace.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND2104:TypesWithSourceFilesStoredInTheSameDirectoryShouldBeDeclaredInTheSameNamespace", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 namespace matched |
Formatting: bold✱ means added ● means code was changed |
1 namespace | typesOutOfMainNamespace | typesInMainNamespace | Debt | Severity | Full Name |
---|---|---|---|---|---|
NodaTime ● | |m0|0| 1 type | |m0|0| First 5 of 49 types | |m0|0| 7min | 0High | NodaTime |
Rule Violated: ND2103 Namespace name should correspond to file location |
• How to Fix Issues of this Rule: To fix a violation of this rule, make sure that the namespace and the directory sub-paths that contains the source filed, are aligned.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND2103:NamespaceNameShouldCorrespondToFileLocation", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 namespace matched |
Formatting: bold✱ means added ● means code was changed |
1 namespace | dirShouldContain | dir | justACaseSensitiveIssueStr | typesConcerned | Debt | Severity | Full Name |
---|---|---|---|---|---|---|---|
NodaTime.Properties | 0 Properties | 0\My\NDepend\WebSite\SampleReport\NodaTime\3.1.0\src\NodaTime | 0{empty string} | |m0|0| 1 type | |m0|0| 3min 0s | 0Medium | NodaTime.Properties |
Roslyn Analyzers 0530 |
Design 0120 |
Roslyn Analyzer Violated: MA0051 Method is too long |
17 issues |
Formatting: bold✱ means added ● means code was changed |
17 issues | Severity | Explanation |
---|---|---|
BclDateTimeZone.cs L275 | 05High | 05 60) |
XmlSchemaDefinition.cs L67 | 04High | 04 60) |
Period.cs L409 | 07High | 07 60) |
LocalDatePatternParser.cs L226 | 06High | 06 60) |
TzdbDateTimeZoneSource.cs L412 | 01High | 01 60) |
ZoneRecurrence.cs L179 | 00High | 00 60) |
PartialZoneIntervalMap.cs L99 | 03High | 03 60) |
DateTimeZoneWriter.cs L182 | 02High | 02 60) |
OffsetPatternParser.cs L50 | 08High | 08 60) |
ZonedDateTimePatternParser.cs L181 | 14High | 14 60) |
HebrewScripturalCalculator.cs L35 | 13High | 13 60) |
FormatHelper.cs L110 | 16High | 16 60) |
FormatHelper.cs L196 | 15High | 15 60) |
TimePatternHelper.cs L156 | 10High | 10 60) |
ValueCursor.cs L116 | 09High | 09 60) |
PeriodPattern.cs L218 | 12High | 12 60) |
PeriodPattern.cs L100 | 11High | 11 60) |
Roslyn Analyzer Violated: MA0026 Fix TODO comment |
6 issues |
Formatting: bold✱ means added ● means code was changed |
6 issues | Severity | Explanation |
---|---|---|
NodaFormatInfo.cs L458 | 2High | 2TODO Achieve the same result without the string allocations. |
BclDateTimeZone.cs L142 | 1High | 1TODO add a check that the difference is just DST. |
CalendarSystem.cs L734 | 0High | 0//github.com/nodatime/nodatime/issues/1269 |
BadiYearMonthDayCalculator.cs L137 | 5High | 5TODO It's not clear that this is correct. If we add 19 months, |
OffsetTime.cs L189 | 4High | 4TODO Consider using bitmasking for nanos instead. |
ZoneLocalMapping.cs L134 | 3High | 3//github.com/nodatime/nodatime/issues/1269 |
Roslyn Analyzer Violated: MA0076 Do not use implicit culture-sensitive ToString in interpolated strings |
37 issues |
Formatting: bold✱ means added ● means code was changed |
37 issues | Severity | Explanation |
---|---|---|
StandardDaylightAlternatingMap .cs L131 | 06High | 06Do not use implicit culture-sensitive ToString in interpolated strings |
AmbiguousTimeException.cs L86 | 05High | - same explanation - |
Preconditions.cs L98 | 07High | - same explanation - |
Preconditions.cs L98 | 09High | - same explanation - |
Preconditions.cs L98 | 08High | - same explanation - |
Preconditions.cs L114 | 01High | - same explanation - |
Preconditions.cs L114 | 00High | - same explanation - |
Preconditions.cs L114 | 02High | - same explanation - |
Duration.cs L1077 | 04High | - same explanation - |
Duration.cs L1077 | 03High | - same explanation - |
Duration.cs L1093 | 16High | - same explanation - |
Duration.cs L1093 | 15High | - same explanation - |
SkippedTimeException.cs L68 | 17High | - same explanation - |
PrecalculatedDateTimeZone.cs L108 | 19High | - same explanation - |
ZoneRecurrence.cs L253 | 18High | - same explanation - |
ZoneRecurrence.cs L253 | 11High | - same explanation - |
ZoneRecurrence.cs L253 | 10High | - same explanation - |
ZoneRecurrence.cs L267 | 12High | - same explanation - |
ZoneRecurrence.cs L267 | 14High | - same explanation - |
ZoneRecurrence.cs L267 | 13High | - same explanation - |
Roslyn Analyzer Violated: MA0048 File name must match type name |
26 issues |
Formatting: bold✱ means added ● means code was changed |
26 issues | Severity | Explanation |
---|---|---|
FxCopAttributes.cs L13 | 06High | 06File name must match type name |
JetBrainsAnnotations.cs L44 | 05High | - same explanation - |
JetBrainsAnnotations.cs L69 | 07High | - same explanation - |
JetBrainsAnnotations.cs L114 | 09High | - same explanation - |
JetBrainsAnnotations.cs L142 | 08High | - same explanation - |
TestExemptionAttribute.cs L24 | 01High | - same explanation - |
Preconditions.cs L196 | 00High | - same explanation - |
IWeekYearRule.cs L114 | 02High | - same explanation - |
Delegates.cs L35 | 04High | - same explanation - |
Delegates.cs L67 | 03High | - same explanation - |
Delegates.cs L86 | 16High | - same explanation - |
TypeConverters.cs L19 | 15High | - same explanation - |
TypeConverters.cs L24 | 17High | - same explanation - |
TypeConverters.cs L29 | 19High | - same explanation - |
TypeConverters.cs L34 | 18High | - same explanation - |
TypeConverters.cs L9 | 11High | - same explanation - |
TypeConverters.cs L39 | 10High | - same explanation - |
TypeConverters.cs L14 | 12High | - same explanation - |
TypeConverters.cs L59 | 14High | - same explanation - |
TypeConverters.cs L64 | 13High | - same explanation - |
Roslyn Analyzer Violated: MA0102 Make member readonly |
12 issues |
Formatting: bold✱ means added ● means code was changed |
12 issues | Severity | Explanation |
---|---|---|
YearMonth.cs L363 | 03High | 03Make 'System.Xml.Serialization.IXmlSerializable.ReadXml' readonly |
YearMonth.cs L49 | 04High | 04Make 'get_CalendarOrdinal' readonly |
YearMonth.cs L55 | 05High | 05Make 'get_Year' readonly |
YearMonth.cs L59 | 00High | 00Make 'get_Month' readonly |
YearMonth.cs L73 | 01High | 01Make 'get_StartDate' readonly |
YearMonth.cs L80 | 02High | 02Make 'get_YearMonthDay' readonly |
YearMonth.cs L284 | 09High | 09Make 'GetHashCode' readonly |
YearMonth.cs L300 | 10High | 10Make 'Equals' readonly |
YearMonth.cs L292 | 11High | 11Make 'Equals' readonly |
YearMonth.cs L338 | 06High | 06Make 'ToString' readonly |
YearMonth.cs L348 | 07High | 07Make 'ToString' readonly |
YearMonth.cs L360 | 08High | 08Make 'System.Xml.Serialization.IXmlSerializable.GetSchema' readonly |
Roslyn Analyzer Violated: MA0154 Use langword in XML comment |
154 issues |
Formatting: bold✱ means added ● means code was changed |
154 issues | Severity | Explanation |
---|---|---|
JetBrainsAnnotations.cs L84 | 06High | 06Use langword in XML comment |
AnnualDate.cs L98 | 05High | - same explanation - |
AnnualDate.cs L102 | 07High | - same explanation - |
AnnualDate.cs L103 | 09High | - same explanation - |
Duration.cs L429 | 08High | - same explanation - |
Duration.cs L430 | 01High | - same explanation - |
Duration.cs L732 | 00High | - same explanation - |
Duration.cs L732 | 02High | - same explanation - |
Duration.cs L751 | 04High | - same explanation - |
Duration.cs L751 | 03High | - same explanation - |
Duration.cs L742 | 16High | - same explanation - |
Duration.cs L742 | 15High | - same explanation - |
Duration.cs L761 | 17High | - same explanation - |
Duration.cs L761 | 19High | - same explanation - |
Duration.cs L771 | 18High | - same explanation - |
Duration.cs L771 | 11High | - same explanation - |
Duration.cs L781 | 10High | - same explanation - |
Duration.cs L781 | 12High | - same explanation - |
Instant.cs L208 | 14High | - same explanation - |
Instant.cs L209 | 13High | - same explanation - |
Roslyn Analyzer Violated: MA0084 Local variables should not hide other symbols |
35 issues |
Formatting: bold✱ means added ● means code was changed |
35 issues | Severity | Explanation |
---|---|---|
Duration.cs L558 | 06High | 06Local variable 'days' should not hide field |
Duration.cs L1004 | 05High | - same explanation - |
Duration.cs L1037 | 07High | - same explanation - |
Duration.cs L1044 | 09High | - same explanation - |
Duration.cs L1046 | 08High | 08Local variable 'nanoOfDay' should not hide field |
Duration.cs L1080 | 01High | - same explanation - |
Duration.cs L1084 | 00High | 00Local variable 'nanoOfDay' should not hide field |
Duration.cs L1096 | 02High | - same explanation - |
Duration.cs L1100 | 04High | 04Local variable 'nanoOfDay' should not hide field |
LocalDateTime.cs L530 | 03High | 03Local variable 'time' should not hide field |
LocalDateTime.cs L537 | 16High | 16Local variable 'date' should not hide field |
LocalDateTime.cs L573 | 15High | 15Local variable 'time' should not hide field |
LocalDateTime.cs L580 | 17High | 17Local variable 'date' should not hide field |
PrecalculatedDateTimeZone.cs L156 | 19High | 19Local variable 'periods' should not hide field |
PrecalculatedDateTimeZone.cs L169 | 18High | 18Local variable 'tailZone' should not hide field |
ZoneYearOffset.cs L256 | 11High | 11Local variable 'dayOfWeek' should not hide field |
ZoneYearOffset.cs L258 | 10High | 10Local variable 'addDay' should not hide field |
ZoneYearOffset.cs L259 | 12High | 12Local variable 'monthOfYear' should not hide field |
ZoneYearOffset.cs L260 | 14High | 14Local variable 'dayOfMonth' should not hide field |
ZonedDateTime.cs L839 | 13High | 13Local variable 'offsetDateTime' should not hide field |
Roslyn Analyzer Violated: MA0053 Make class sealed |
8 issues |
Formatting: bold✱ means added ● means code was changed |
8 issues | Severity | Explanation |
---|---|---|
VisibleForTestingAttribute.cs L19 | 2High | 2Make class sealed |
PersianYearMonthDayCalculator .cs L114 | 3High | - same explanation - |
PersianYearMonthDayCalculator .cs L168 | 0High | - same explanation - |
PersianYearMonthDayCalculator .cs L149 | 1High | - same explanation - |
NodaFormatInfo.cs L433 | 6High | - same explanation - |
PartialZoneIntervalMap.cs L175 | 7High | - same explanation - |
TzdbStreamData.cs L149 | 4High | - same explanation - |
TimeZoneInfoInterceptor.cs L38 | 5High | - same explanation - |
Roslyn Analyzer Violated: MA0038 Make method static (deprecated, use CA1822 instead) |
2 issues |
Formatting: bold✱ means added ● means code was changed |
2 issues | Severity | Explanation |
---|---|---|
BclDateTimeZoneSource.cs L110 | 0High | 0Make method static (deprecated, use CA1822 instead) |
DatePatternHelper.cs L120 | 1High | - same explanation - |
Roslyn Analyzer Violated: MA0017 Abstract types should not have public or internal constructors |
2 issues |
Formatting: bold✱ means added ● means code was changed |
2 issues | Severity | Explanation |
---|---|---|
ZonedDateTime.cs L713 | 0High | 0Abstract types should not have public or internal constructors |
OffsetDateTime.cs L739 | 1High | - same explanation - |
Roslyn Analyzer Violated: MA0018 Do not declare static members on generic types (deprecated; use CA1000 instead) |
2 issues |
Formatting: bold✱ means added ● means code was changed |
2 issues | Severity | Explanation |
---|---|---|
ParseResult.cs L151 | 0High | 0Do not declare static members on generic types (deprecated; use CA1000 instead) |
ParseResult.cs L162 | 1High | - same explanation - |
Roslyn Analyzer Violated: MA0025 Implement the functionality instead of throwing NotImplementedException |
2 issues |
Formatting: bold✱ means added ● means code was changed |
2 issues | Severity | Explanation |
---|---|---|
PersianYearMonthDayCalculator .cs L72 | 0High | 0Implement the functionality (or raise NotSupportedException or PlatformNotSupportedException) |
UmAlQuraYearMonthDayCalculator .cs L95 | 1High | - same explanation - |
Performance 0100 |
Roslyn Analyzer Violated: MA0106 Avoid closure by using an overload with the 'factoryArgument' parameter |
2 issues |
Formatting: bold✱ means added ● means code was changed |
2 issues | Severity | Explanation |
---|---|---|
NodaFormatInfo.cs L340 | 0High | 0 this) |
TzdbDateTimeZoneSource.cs L283 | 1High | 1 this, zone) |
Roslyn Analyzer Violated: MA0089 Optimize string method usage |
1 issue |
Formatting: bold✱ means added ● means code was changed |
1 issue | Severity | Explanation |
---|---|---|
MapZone.cs L175 | 0High | 0Use an overload with char instead of string |
Roslyn Analyzer Violated: CA1846 Prefer 'AsSpan' over 'Substring' |
1 issue |
Formatting: bold✱ means added ● means code was changed |
1 issue | Severity | Explanation |
---|---|---|
FormatHelper.cs L90 | 0High | 0Prefer 'AsSpan' over 'Substring' when span-based overloads are available |
Roslyn Analyzer Violated: MA0111 Use string.Create instead of FormattableString |
1 issue |
Formatting: bold✱ means added ● means code was changed |
1 issue | Severity | Explanation |
---|---|---|
CalendarSystem.cs L71 | 0High | 0Use string.Create instead of FormattableString |
Roslyn Analyzer Violated: MA0008 Add StructLayoutAttribute |
6 issues |
Formatting: bold✱ means added ● means code was changed |
6 issues | Severity | Explanation |
---|---|---|
Duration.cs L65 | 2High | 2Add StructLayoutAttribute |
LocalDateTime.cs L44 | 1High | - same explanation - |
Transition.cs L15 | 0High | - same explanation - |
Interval.cs L35 | 5High | - same explanation - |
OffsetDate.cs L33 | 4High | - same explanation - |
OffsetDateTime.cs L47 | 3High | - same explanation - |
Roslyn Analyzer Violated: CA1822 Mark members as static |
1 issue |
Formatting: bold✱ means added ● means code was changed |
1 issue | Severity | Explanation |
---|---|---|
OffsetPatternParser.cs L50 | 0High | 0Member 'ParsePartialPattern' does not access instance data and can be marked as static |
Roslyn Analyzer Violated: MA0031 Optimize Enumerable.Count() usage |
1 issue |
Formatting: bold✱ means added ● means code was changed |
1 issue | Severity | Explanation |
---|---|---|
TzdbDateTimeZoneSource.cs L469 | 0High | 0Replace 'Count() != n' with 'Take(n + 1).Count() != n' |
Roslyn Analyzer Violated: CA1841 Prefer Dictionary.Contains methods |
1 issue |
Formatting: bold✱ means added ● means code was changed |
1 issue | Severity | Explanation |
---|---|---|
TzdbDateTimeZoneSource.cs L270 | 0High | 0Prefer 'ContainsKey' over 'Keys.Contains' for dictionary type 'IDictionary' |
Roslyn Analyzer Violated: MA0020 Use direct methods instead of LINQ methods |
1 issue |
Formatting: bold✱ means added ● means code was changed |
1 issue | Severity | Explanation |
---|---|---|
CompositePatternBuilder.cs L73 | 0High | 0Use 'TrueForAll()' instead of 'All()' |
Roslyn Analyzer Violated: MA0028 Optimize StringBuilder usage |
1 issue |
Formatting: bold✱ means added ● means code was changed |
1 issue | Severity | Explanation |
---|---|---|
FormatHelper.cs L90 | 0High | 0Use Append(string, int, int) instead of Substring |
Roslynator 0240 |
Roslyn Analyzer Violated: RCS1222 Merge preprocessor directives |
4 issues |
Formatting: bold✱ means added ● means code was changed |
4 issues | Severity | Explanation |
---|---|---|
Preconditions.cs L202 | 1High | 1Merge preprocessor directives |
SteppedPatternBuilder.cs L249 | 0High | - same explanation - |
SteppedPatternBuilder.cs L258 | 3High | - same explanation - |
DatePatternHelper.cs L127 | 2High | - same explanation - |
Roslyn Analyzer Violated: RCS1037 Remove trailing white-space |
70 issues |
Formatting: bold✱ means added ● means code was changed |
70 issues | Severity | Explanation |
---|---|---|
Period.cs L380 | 06High | 06Remove trailing white-space |
BclDateTimeZone.cs L271 | 05High | - same explanation - |
YearMonth.cs L159 | 07High | - same explanation - |
JetBrainsAnnotations.cs L106 | 09High | - same explanation - |
CalendarSystem.cs L192 | 08High | - same explanation - |
CalendarSystem.cs L213 | 01High | - same explanation - |
CalendarSystem.cs L221 | 00High | - same explanation - |
CalendarSystem.cs L222 | 02High | - same explanation - |
CalendarSystem.cs L223 | 04High | - same explanation - |
IslamicLeapYearPattern.cs L14 | 03High | - same explanation - |
WeekYearRules.cs L41 | 16High | - same explanation - |
WeekYearRules.cs L47 | 15High | - same explanation - |
WeekYearRules.cs L70 | 17High | - same explanation - |
Duration.cs L440 | 19High | - same explanation - |
DateTimeExtensions.cs L16 | 18High | - same explanation - |
DateTimeExtensions.cs L24 | 11High | - same explanation - |
DateTimeOffsetExtensions.cs L16 | 10High | - same explanation - |
DateTimeOffsetExtensions.cs L25 | 12High | - same explanation - |
DateTimeOffsetExtensions.cs L35 | 14High | - same explanation - |
DayOfWeekExtensions.cs L18 | 13High | - same explanation - |
Roslyn Analyzer Violated: RCS1251 Remove unnecessary braces from record declaration |
8 issues |
Formatting: bold✱ means added ● means code was changed |
8 issues | Severity | Explanation |
---|---|---|
FxCopAttributes.cs L13 | 2High | 2Remove unnecessary braces |
JetBrainsAnnotations.cs L69 | 3High | - same explanation - |
JetBrainsAnnotations.cs L142 | 0High | - same explanation - |
MutableAttribute.cs L15 | 1High | - same explanation - |
ImmutableAttribute.cs L33 | 6High | - same explanation - |
SpecialNullHandlingAttribute .cs L14 | 7High | - same explanation - |
TrustedAttribute.cs L24 | 4High | - same explanation - |
VisibleForTestingAttribute.cs L20 | 5High | - same explanation - |
Roslyn Analyzer Violated: RCS1243 Duplicate word in a comment |
3 issues |
Formatting: bold✱ means added ● means code was changed |
3 issues | Severity | Explanation |
---|---|---|
Period.cs L731 | 0High | 0Duplicate word in a comment |
SteppedPatternBuilder.cs L279 | 1High | - same explanation - |
DateInterval.cs L110 | 2High | - same explanation - |
Roslyn Analyzer Violated: RCS1123 Add parentheses when necessary |
135 issues |
Formatting: bold✱ means added ● means code was changed |
Roslyn Analyzer Violated: RCS1163 Unused parameter |
40 issues |
Formatting: bold✱ means added ● means code was changed |
40 issues | Severity | Explanation |
---|---|---|
Duration.cs L133 | 06High | 06Unused parameter 'noValidation' |
Instant.cs L80 | 05High | 05Unused parameter 'deliberatelyInvalid' |
LocalInstant.cs L31 | 07High | 07Unused parameter 'deliberatelyInvalid' |
LocalDatePatternParser.cs L34 | 09High | 09Unused parameter 'pattern' |
LocalDateTimePatternParser.cs L27 | 08High | 08Unused parameter 'pattern' |
LocalDateTimePatternParser.cs L28 | 01High | 01Unused parameter 'pattern' |
LocalDateTimePatternParser.cs L38 | 00High | 00Unused parameter 'pattern' |
LocalTimePatternParser.cs L28 | 02High | 02Unused parameter 'pattern' |
SteppedPatternBuilder.cs L226 | 04High | 04Unused parameter 'bucket' |
SteppedPatternBuilder.cs L227 | 03High | 03Unused parameter 'value' |
SteppedPatternBuilder.cs L230 | 16High | 16Unused parameter 'bucket' |
SteppedPatternBuilder.cs L231 | 15High | 15Unused parameter 'value' |
SteppedPatternBuilder.cs L257 | 17High | 17Unused parameter 'builder' |
SteppedPatternBuilder.cs L300 | 19High | 19Unused parameter 'bucket' |
SteppedPatternBuilder.cs L301 | 18High | 18Unused parameter 'value' |
Resolvers.cs L31 | 11High | 11Unused parameter 'later' |
Resolvers.cs L37 | 10High | 10Unused parameter 'earlier' |
DurationPatternParser.cs L27 | 12High | 12Unused parameter 'pattern' |
OffsetDatePatternParser.cs L22 | 14High | 14Unused parameter 'pattern' |
OffsetDateTimePatternParser.cs L22 | 13High | 13Unused parameter 'pattern' |
Roslyn Analyzer Violated: RCS1085 Use auto-implemented property |
15 issues |
Formatting: bold✱ means added ● means code was changed |
15 issues | Severity | Explanation |
---|---|---|
Duration.cs L192 | 04High | 04Use auto-implemented property |
Duration.cs L198 | 05High | - same explanation - |
Instant.cs L136 | 06High | - same explanation - |
LocalDate.cs L185 | 03High | - same explanation - |
LocalDateTime.cs L290 | 00High | - same explanation - |
LocalDateTime.cs L296 | 01High | - same explanation - |
LocalInstant.cs L69 | 02High | - same explanation - |
Offset.cs L85 | 07High | - same explanation - |
Interval.cs L128 | 12High | - same explanation - |
OffsetDate.cs L53 | 13High | - same explanation - |
OffsetDate.cs L59 | 14High | - same explanation - |
ZoneEqualityComparer.cs L123 | 11High | - same explanation - |
ZoneEqualityComparer.cs L117 | 08High | - same explanation - |
OffsetDateTime.cs L231 | 09High | - same explanation - |
LocalTime.cs L443 | 10High | - same explanation - |
Roslyn Analyzer Violated: RCS1036 Remove unnecessary blank line |
11 issues |
Formatting: bold✱ means added ● means code was changed |
11 issues | Severity | Explanation |
---|---|---|
AnnualDate.cs L164 | 03High | 03Remove unnecessary blank line |
IslamicEpoch.cs L5 | 04High | - same explanation - |
IslamicLeapYearPattern.cs L5 | 02High | - same explanation - |
PersianYearMonthDayCalculator .cs L125 | 00High | - same explanation - |
Instant.cs L592 | 01High | - same explanation - |
OffsetTime.cs L279 | 05High | - same explanation - |
LocalDateTimePatternParser.cs L104 | 09High | - same explanation - |
ZoneInterval.cs L25 | 10High | - same explanation - |
ZoneRecurrence.cs L287 | 08High | - same explanation - |
ZonedDateTime.cs L109 | 06High | - same explanation - |
PartialZoneIntervalMap.cs L204 | 07High | - same explanation - |
Roslyn Analyzer Violated: RCS1058 Use compound assignment |
8 issues |
Formatting: bold✱ means added ● means code was changed |
8 issues | Severity | Explanation |
---|---|---|
BadiYearMonthDayCalculator.cs L155 | 2High | 2Use compound assignment |
LocalDatePatternParser.cs L246 | 3High | - same explanation - |
DateTimeZoneWriter.cs L106 | 0High | - same explanation - |
HebrewYearMonthDayCalculator .cs L126 | 1High | - same explanation - |
TimePeriodField.cs L58 | 6High | - same explanation - |
TimePeriodField.cs L72 | 7High | - same explanation - |
TimePeriodField.cs L102 | 4High | - same explanation - |
TimePeriodField.cs L121 | 5High | - same explanation - |
Roslyn Analyzer Violated: RCS1194 Implement exception constructors |
7 issues |
Formatting: bold✱ means added ● means code was changed |
7 issues | Severity | Explanation |
---|---|---|
AmbiguousTimeException.cs L45 | 2High | 2Implement exception constructors |
Preconditions.cs L196 | 1High | - same explanation - |
SkippedTimeException.cs L44 | 0High | - same explanation - |
DateTimeZoneNotFoundException .cs L29 | 3High | - same explanation - |
InvalidDateTimeZoneSourceExcep tion.cs L24 | 6High | - same explanation - |
InvalidPatternException.cs L23 | 5High | - same explanation - |
InvalidNodaDataException.cs L31 | 4High | - same explanation - |
Roslyn Analyzer Violated: RCS1192 Unnecessary usage of verbatim string literal |
5 issues |
Formatting: bold✱ means added ● means code was changed |
5 issues | Severity | Explanation |
---|---|---|
XmlSchemaDefinition.cs L59 | 1High | 1Unnecessary usage of verbatim string literal |
XmlSchemaDefinition.cs L60 | 0High | - same explanation - |
XmlSchemaDefinition.cs L61 | 2High | - same explanation - |
XmlSchemaDefinition.cs L63 | 4High | - same explanation - |
XmlSchemaDefinition.cs L64 | 3High | - same explanation - |
Roslyn Analyzer Violated: RCS1032 Remove redundant parentheses |
4 issues |
Formatting: bold✱ means added ● means code was changed |
4 issues | Severity | Explanation |
---|---|---|
IslamicYearMonthDayCalculator .cs L87 | 1High | 1Remove redundant parentheses |
DurationPatternParser.cs L131 | 0High | - same explanation - |
DateTimeZoneWriter.cs L148 | 3High | - same explanation - |
JulianYearMonthDayCalculator .cs L43 | 2High | - same explanation - |
Roslyn Analyzer Violated: RCS1170 Use read-only auto-implemented property |
3 issues |
Formatting: bold✱ means added ● means code was changed |
3 issues | Severity | Explanation |
---|---|---|
JetBrainsAnnotations.cs L54 | 0High | 0Use read-only auto-implemented property |
JetBrainsAnnotations.cs L126 | 1High | - same explanation - |
JetBrainsAnnotations.cs L127 | 2High | - same explanation - |
Roslyn Analyzer Violated: RCS1226 Add paragraph to documentation comment |
3 issues |
Formatting: bold✱ means added ● means code was changed |
3 issues | Severity | Explanation |
---|---|---|
LocalDatePatternParser.cs L203 | 0High | 0Add paragraph to documentation comment |
CachingZoneIntervalMap.cs L32 | 1High | - same explanation - |
SimpleWeekYearRule.cs L25 | 2High | - same explanation - |
Roslyn Analyzer Violated: RCS1021 Convert lambda expression body to expression body |
3 issues |
Formatting: bold✱ means added ● means code was changed |
3 issues | Severity | Explanation |
---|---|---|
Resolvers.cs L44 | 0High | 0Use expression-bodied lambda |
OffsetPatternParser.cs L25 | 1High | - same explanation - |
OffsetPatternParser.cs L34 | 2High | - same explanation - |
Roslyn Analyzer Violated: RCS1139 Add summary element to documentation comment |
2 issues |
Formatting: bold✱ means added ● means code was changed |
2 issues | Severity | Explanation |
---|---|---|
JetBrainsAnnotations.cs L46 | 0High | 0Add summary element to documentation comment |
BadiYearMonthDayCalculator.cs L24 | 1High | - same explanation - |
Roslyn Analyzer Violated: RCS1232 Order elements in documentation comment |
1 issue |
Formatting: bold✱ means added ● means code was changed |
1 issue | Severity | Explanation |
---|---|---|
ZonedDateTimePattern.cs L145 | 0High | 0Order elements in documentation comment |
Roslyn Analyzer Violated: RCS1169 Make field read-only |
1 issue |
Formatting: bold✱ means added ● means code was changed |
1 issue | Severity | Explanation |
---|---|---|
BadiYearMonthDayCalculator.cs L43 | 0High | 0Make field read-only |
Roslyn Analyzer Violated: RCS1154 Sort enum members |
1 issue |
Formatting: bold✱ means added ● means code was changed |
1 issue | Severity | Explanation |
---|---|---|
PeriodUnits.cs L17 | 0High | 0Sort 'PeriodUnits' members |
Roslyn Analyzer Violated: RCS1213 Remove unused member declaration |
1 issue |
Formatting: bold✱ means added ● means code was changed |
1 issue | Severity | Explanation |
---|---|---|
PrecalculatedDateTimeZone.cs L177 | 0High | 0Remove unused delegate declaration |
Roslyn Analyzer Violated: RCS1173 Use coalesce expression instead of 'if' |
1 issue |
Formatting: bold✱ means added ● means code was changed |
1 issue | Severity | Explanation |
---|---|---|
LocalTimePatternParser.cs L162 | 0High | 0Use coalesce expression instead of 'if' |
Roslyn Analyzer Violated: RCS1077 Optimize LINQ method call |
1 issue |
Formatting: bold✱ means added ● means code was changed |
1 issue | Severity | Explanation |
---|---|---|
TzdbDateTimeZoneSource.cs L319 | 0High | 0Optimize LINQ method call |
Roslyn Analyzer Violated: RCS1225 Make class sealed |
1 issue |
Formatting: bold✱ means added ● means code was changed |
1 issue | Severity | Explanation |
---|---|---|
YearMonthPattern.cs L23 | 0High | 0Make class sealed |
Roslyn Analyzer Violated: RCS1205 Order named arguments according to the order of parameters |
1 issue |
Formatting: bold✱ means added ● means code was changed |
1 issue | Severity | Explanation |
---|---|---|
TzdbZone1970Location.cs L135 | 0High | 0Order named arguments according to the order of parameters |
Style 030 |
Roslyn Analyzer Violated: MA0003 Add parameter name to improve readability |
53 issues |
Formatting: bold✱ means added ● means code was changed |
53 issues | Severity | Explanation |
---|---|---|
JetBrainsAnnotations.cs L117 | 06High | 06Name the parameter to improve code readability |
AnnualDate.cs L128 | 05High | - same explanation - |
WeekYearRules.cs L36 | 07High | - same explanation - |
WeekYearRules.cs L83 | 09High | - same explanation - |
WeekYearRules.cs L111 | 08High | - same explanation - |
Duration.cs L453 | 01High | - same explanation - |
NodaFormatInfo.cs L213 | 00High | - same explanation - |
Instant.cs L490 | 02High | - same explanation - |
LocalDate.cs L815 | 04High | - same explanation - |
LocalDateTime.cs L949 | 03High | - same explanation - |
Offset.cs L372 | 16High | - same explanation - |
OffsetTime.cs L261 | 15High | - same explanation - |
LocalDatePatternParser.cs L120 | 17High | - same explanation - |
LocalDateTimePatternParser.cs L52 | 19High | - same explanation - |
SteppedPatternBuilder.cs L364 | 18High | - same explanation - |
SteppedPatternBuilder.cs L383 | 11High | - same explanation - |
SteppedPatternBuilder.cs L388 | 10High | - same explanation - |
SteppedPatternBuilder.cs L407 | 12High | - same explanation - |
SteppedPatternBuilder.cs L414 | 14High | - same explanation - |
BclDateTimeZone.cs L466 | 13High | - same explanation - |
Roslyn Analyzer Violated: MA0007 Add a comma after the last value |
23 issues |
Formatting: bold✱ means added ● means code was changed |
23 issues | Severity | Explanation |
---|---|---|
TestExemptionAttribute.cs L26 | 06High | 06Add comma after the last value |
CalendarOrdinal.cs L33 | 05High | - same explanation - |
CalendarSystem.cs L841 | 07High | - same explanation - |
IslamicEpoch.cs L28 | 09High | - same explanation - |
LocalTimePatternParser.cs L39 | 08High | - same explanation - |
IsoDayOfWeek.cs L47 | 01High | - same explanation - |
XmlSchemaDefinition.cs L90 | 00High | - same explanation - |
XmlSchemaDefinition.cs L102 | 02High | - same explanation - |
XmlSchemaDefinition.cs L104 | 04High | - same explanation - |
XmlSchemaDefinition.cs L160 | 03High | - same explanation - |
XmlSchemaDefinition.cs L179 | 16High | - same explanation - |
XmlSchemaDefinition.cs L188 | 15High | - same explanation - |
XmlSchemaDefinition.cs L216 | 17High | - same explanation - |
XmlSchemaDefinition.cs L224 | 19High | - same explanation - |
XmlSchemaDefinition.cs L227 | 18High | - same explanation - |
XmlSchemaDefinition.cs L257 | 11High | - same explanation - |
DateTimeZoneWriter.cs L24 | 10High | - same explanation - |
TransitionMode.cs L26 | 12High | - same explanation - |
OffsetPatternParser.cs L34 | 14High | - same explanation - |
TzdbStreamData.cs L30 | 13High | - same explanation - |
Roslyn Analyzer Violated: MA0071 Avoid using redundant else |
15 issues |
Formatting: bold✱ means added ● means code was changed |
15 issues | Severity | Explanation |
---|---|---|
BadiYearMonthDayCalculator.cs L244 | 04High | 04Avoid using redundant else |
ZoneRecurrence.cs L135 | 05High | - same explanation - |
ZoneRecurrence.cs L197 | 06High | - same explanation - |
ZoneRecurrence.cs L207 | 03High | - same explanation - |
DateTimeZone.cs L452 | 00High | - same explanation - |
DateTimeZone.cs L468 | 01High | - same explanation - |
DurationPatternParser.cs L157 | 02High | - same explanation - |
TextCursor.cs L105 | 07High | - same explanation - |
RegularYearMonthDayCalculator .cs L115 | 12High | - same explanation - |
HebrewYearMonthDayCalculator .cs L191 | 13High | - same explanation - |
YearsPeriodField.cs L47 | 14High | - same explanation - |
DateTimeZoneReader.cs L260 | 11High | - same explanation - |
StandardDaylightAlternatingMap .cs L120 | 08High | - same explanation - |
StandardDaylightAlternatingMap .cs L126 | 09High | - same explanation - |
StandardDaylightAlternatingMap .cs L143 | 10High | - same explanation - |
Usage 040 |
Roslyn Analyzer Violated: MA0099 Use Explicit enum value instead of 0 |
39 issues |
Formatting: bold✱ means added ● means code was changed |
39 issues | Severity | Explanation |
---|---|---|
Period.cs L738 | 06High | 06Use Explicit enum value for 'PeriodUnits' instead of 0 |
Period.cs L740 | 05High | - same explanation - |
Period.cs L741 | 07High | - same explanation - |
AnnualDate.cs L93 | 09High | 09Use Explicit enum value for 'CalendarOrdinal' instead of 0 |
CalendarSystem.cs L123 | 08High | 08Use Explicit enum value for 'CalendarOrdinal' instead of 0 |
Period.cs L525 | 01High | - same explanation - |
Period.cs L411 | 00High | - same explanation - |
Period.cs L412 | 02High | - same explanation - |
Period.cs L457 | 04High | - same explanation - |
Period.cs L463 | 03High | - same explanation - |
Period.cs L492 | 16High | - same explanation - |
Period.cs L559 | 15High | - same explanation - |
Period.cs L599 | 17High | - same explanation - |
Period.cs L600 | 19High | - same explanation - |
Period.cs L601 | 18High | - same explanation - |
Period.cs L660 | 11High | - same explanation - |
Period.cs L661 | 10High | - same explanation - |
Period.cs L662 | 12High | - same explanation - |
LocalDatePatternParser.cs L307 | 14High | 14Use Explicit enum value for 'PatternFields' instead of 0 |
LocalTimePatternParser.cs L205 | 13High | 13Use Explicit enum value for 'PatternFields' instead of 0 |
Roslyn Analyzer Violated: MA0006 Use String.Equals instead of equality operator |
24 issues |
Formatting: bold✱ means added ● means code was changed |
24 issues | Severity | Explanation |
---|---|---|
NodaFormatInfo.cs L185 | 06High | 06Use string.Equals instead of NotEquals operator |
NodaFormatInfo.cs L185 | 05High | - same explanation - |
BclDateTimeZone.cs L423 | 07High | 07Use string.Equals instead of Equals operator |
MapZone.cs L141 | 09High | 09Use string.Equals instead of Equals operator |
MapZone.cs L142 | 08High | 08Use string.Equals instead of Equals operator |
WindowsZones.cs L121 | 01High | 01Use string.Equals instead of Equals operator |
FixedDateTimeZone.cs L81 | 00High | 00Use string.Equals instead of Equals operator |
FixedDateTimeZone.cs L162 | 02High | 02Use string.Equals instead of Equals operator |
FixedDateTimeZone.cs L163 | 04High | 04Use string.Equals instead of Equals operator |
TzdbDateTimeZoneSource.cs L176 | 03High | - same explanation - |
TzdbDateTimeZoneSource.cs L192 | 16High | - same explanation - |
TzdbDateTimeZoneSource.cs L200 | 15High | - same explanation - |
TzdbDateTimeZoneSource.cs L423 | 17High | - same explanation - |
TzdbDateTimeZoneSource.cs L459 | 19High | - same explanation - |
TzdbDateTimeZoneSource.cs L474 | 18High | 18Use string.Equals instead of Equals operator |
TzdbDateTimeZoneSource.cs L481 | 11High | - same explanation - |
ZoneInterval.cs L260 | 10High | 10Use string.Equals instead of Equals operator |
ZoneInterval.cs L285 | 12High | 12Use string.Equals instead of Equals operator |
ZoneRecurrence.cs L98 | 14High | 14Use string.Equals instead of Equals operator |
OffsetPatternParser.cs L103 | 13High | 13Use string.Equals instead of Equals operator |
Roslyn Analyzer Violated: MA0002 IEqualityComparer<string> or IComparer<string> is missing |
18 issues |
Formatting: bold✱ means added ● means code was changed |
18 issues | Severity | Explanation |
---|---|---|
CalendarSystem.cs L152 | 06High | 06Use an overload that has a IEqualityComparer<string> or IComparer<string> parameter |
BclDateTimeZoneSource.cs L47 | 05High | - same explanation - |
MapZone.cs L143 | 08High | - same explanation - |
WindowsZones.cs L121 | 07High | - same explanation - |
TzdbDateTimeZoneSource.cs L279 | 04High | - same explanation - |
TzdbDateTimeZoneSource.cs L175 | 01High | - same explanation - |
TzdbDateTimeZoneSource.cs L190 | 00High | - same explanation - |
TzdbDateTimeZoneSource.cs L203 | 03High | - same explanation - |
TzdbDateTimeZoneSource.cs L236 | 02High | - same explanation - |
TzdbDateTimeZoneSource.cs L270 | 15High | - same explanation - |
TzdbDateTimeZoneSource.cs L289 | 14High | - same explanation - |
TzdbDateTimeZoneSource.cs L447 | 17High | - same explanation - |
TzdbDateTimeZoneSource.cs L466 | 16High | - same explanation - |
TzdbDateTimeZoneSource.cs L469 | 13High | - same explanation - |
TzdbDateTimeZoneSource.cs L481 | 10High | - same explanation - |
DateTimeZoneCache.cs L30 | 09High | - same explanation - |
TzdbStreamData.cs L159 | 12High | - same explanation - |
DateTimeZoneReader.cs L185 | 11High | - same explanation - |
Roslyn Analyzer Violated: MA0015 Specify the parameter name in ArgumentException |
1 issue |
Formatting: bold✱ means added ● means code was changed |
1 issue | Severity | Explanation |
---|---|---|
ZonedDateTime.cs L827 | 0High | 0Use an overload of 'System.ArgumentException' with the parameter name |
Hot Spots
Code Query: Types Hot Spots |
210 types matched
210 types | Debt | Issues | Annual Interest | Breaking Point | # lines of code (LOC) | DebtRating | DebtRatio | Full Name |
---|---|---|---|---|---|---|---|---|
SteppedPatternBuilder<TResult ,TBucket> ● | |m100|00| 1d 7h | |m64|03| First 5 of 47 issues
| |m42|06| 2h 25min | |m27|02| 6y 99d | |m100|00| 212 | 10D | |m9|04| 41.92 | NodaTime.Text.Patterns .SteppedPatternBuilder<TResult ,TBucket> |
CalendarSystem | |m73|01| 1d 3h | |m56|05| First 5 of 41 issues
| |m95|01| 5h 22min | |m8|16| 2y 31d | |m60|05| 129 | 08D | |m7|06| 33.14 | NodaTime.CalendarSystem |
LocalDateTime ● | |m68|02| 1d 2h | |m47|08| First 5 of 35 issues
| |m33|09| 1h 52min | |m24|03| 5y 205d | |m66|03| 140 | 07D | |m6|07| 29.47 | NodaTime.LocalDateTime |
Period ● | |m59|03| 1d 1h | |m57|04| First 5 of 42 issues
| |m30|10| 1h 44min | |m22|05| 5y 72d | |m92|01| 196 | 06D | |m5|15| 22.6 | NodaTime.Period |
NodaFormatInfo ● | |m55|04| 1d 0h | |m69|02| First 5 of 50 issues
| |m45|05| 2h 34min | |m14|13| 3y 106d | |m56|08| 119 | 09D | |m6|10| 26.06 | NodaTime.Globalization .NodaFormatInfo |
DateTimeZone | |m53|05| 1d 0h | |m39|09| First 5 of 29 issues
| |m42|07| 2h 22min | |m14|12| 3y 147d | |m44|11| 95 | 04D | |m9|05| 41.71 | NodaTime.DateTimeZone |
LocalTime | |m53|06| 1d 0h | |m70|01| First 5 of 51 issues
| |m37|08| 2h 7min | |m16|10| 3y 298d | |m59|06| 127 | 03D | |m6|09| 26.67 | NodaTime.LocalTime |
LocalDate ● | |m49|07| 7h 36min | |m28|13| First 5 of 21 issues
| |m26|12| 1h 31min | |m21|06| 5y 2d | |m63|04| 134 | 05D | |m5|14| 23.77 | NodaTime.LocalDate |
LocalDatePatternParser+LocalDate Pa rseBucket | |m46|08| 7h 7min | |m50|06| First 5 of 37 issues
| |m100|00| 5h 38min | |m5|17| 1y 96d | |m37|13| 80 | 00E | |m12|02| 51.03 | NodaTime.Text .LocalDatePatternParser+LocalDateP arseBucket |
Duration | |m44|09| 6h 43min | |m100|00| First 5 of 72 issues
| |m47|04| 2h 41min | |m10|15| 2y 183d | |m91|02| 194 | 17C | |m3|18| 14.41 | NodaTime.Duration |
Instant ● | |m36|10| 5h 30min | |m50|07| First 5 of 37 issues
| |m28|11| 1h 35min | |m14|11| 3y 165d | |m50|10| 107 | 15D | |m4|16| 20.1 | NodaTime.Instant |
ZonedDateTime | |m33|11| 5h 6min | |m26|14| First 5 of 20 issues
| |m22|13| 1h 17min | |m17|08| 3y 348d | |m43|12| 93 | 19C | |m4|17| 19.58 | NodaTime.ZonedDateTime |
LocalTimePatternParser+LocalTime Pa rseBucket | |m32|12| 5h 0min | |m29|12| First 5 of 22 issues
| |m74|02| 4h 11min | |m4|18| 1y 71d | |m16|18| 36 | 01E | |m16|01| 69.44 | NodaTime.Text .LocalTimePatternParser+LocalTimeP arseBucket |
OffsetDateTime | |m28|13| 4h 25min | |m19|16| First 5 of 15 issues
| |m14|17| 48min | |m24|04| 5y 167d | |m57|07| 122 | 18C | |m3|19| 14.27 | NodaTime.OffsetDateTime |
Offset | |m28|14| 4h 20min | |m36|10| First 5 of 27 issues
| |m16|16| 55min | |m20|07| 4y 262d | |m27|16| 59 | 16D | |m5|11| 25.08 | NodaTime.Offset |
TimePatternHelper ● | |m26|15| 4h 5min | |m25|15| First 5 of 19 issues
| |m6|18| 24min | |m45|01| 10y 76d | |m51|09| 109 | 12D | |m5|12| 24.66 | NodaTime.Text.Patterns .TimePatternHelper |
YearMonth ● | |m23|16| 3h 36min | |m32|11| First 5 of 24 issues
| |m16|15| 55min | |m17|09| 3y 332d | |m28|15| 60 | 11D | |m5|13| 23.89 | NodaTime.YearMonth |
PatternCursor ● | |m21|17| 3h 13min | |m7|19| First 5 of 6 issues
| |m2|19| 10min | |m86|00| 19y 109d | |m19|17| 42 | 14D | |m10|03| 45.59 | NodaTime.Text.Patterns .PatternCursor |
DatePatternHelper | |m19|18| 3h 1min | |m11|17| First 5 of 9 issues
| |m19|14| 1h 5min | |m11|14| 2y 281d | |m32|14| 68 | 13D | |m6|08| 28.46 | NodaTime.Text.Patterns .DatePatternHelper |
CalendarSystem+MiscellaneousCale nd ars | |m19|19| 2h 59min | |m8|18| First 5 of 7 issues
| |m73|03| 4h 10min | |m2|19| 261d | |m1|19| 3 | 02E | |m62|00| 258.97 | NodaTime .CalendarSystem+MiscellaneousCalen dars |
Code Query: Types to Fix Priority |
64 types matched
64 types | Breaking Point | Debt | Annual Interest | Issues | # lines of code (LOC) | DebtRating | DebtRatio | Full Name |
---|---|---|---|---|---|---|---|---|
LocalDateTimePattern | |m0|19| 80d | |m2|10| 53min | |m70|07| 4h 0min | |m0|19| 2 issues
| |m15|07| 34 | 17B | |m1|14| 8.29 | NodaTime.Text.LocalDateTimePattern |
LocalDateTimePatternParser | |m0|18| 86d | |m3|09| 58min | |m72|04| 4h 5min | |m7|11| First 5 of 7 issues
| |m31|03| 68 | 12B | |m1|12| 8.95 | NodaTime.Text .LocalDateTimePatternParser |
LocalDateTimePattern+Patterns | |m0|17| 88d | |m3|08| 59min | |m71|06| 4h 2min | |m1|18| 3 issues
| |m1|14| 5 | 05E | |m12|06| 56.91 | NodaTime.Text .LocalDateTimePattern+Patterns |
DateTimeZoneWriter | |m0|16| 115d | |m0|19| 31min | |m28|09| 1h 38min | |m5|13| First 5 of 6 issues
| |m34|01| 74 | 19A | |m0|19| 3.99 | NodaTime.TimeZones.IO .DateTimeZoneWriter |
AnnualDatePatternParser+AnnualDa te ParseBucket | |m1|15| 165d | |m0|17| 34min | |m21|13| 1h 15min | |m14|05| First 5 of 12 issues
| |m9|10| 21 | 10C | |m2|11| 13.57 | NodaTime.Text .AnnualDatePatternParser+AnnualDat eParseBucket |
OffsetPatternParser+OffsetParseB uc ket | |m1|14| 168d | |m1|13| 42min | |m26|11| 1h 32min | |m14|06| First 5 of 12 issues
| |m1|15| 4 | 07D | |m9|07| 44.72 | NodaTime.Text .OffsetPatternParser+OffsetParseBu cket |
PersianYearMonthDayCalculator ● | |m1|13| 176d | |m0|18| 32min | |m18|15| 1h 6min | |m11|08| First 5 of 10 issues
| |m16|06| 35 | 13B | |m0|16| 7.26 | NodaTime.Calendars .PersianYearMonthDayCalculator |
BclConversions | |m1|12| 185d | |m1|11| 48min | |m27|10| 1h 34min | |m2|17| 4 issues
| |m2|13| 6 | 01E | |m13|05| 61.73 | NodaTime.Utility.BclConversions |
CalendarSystem+GregorianJulianCa le ndars | |m1|11| 201d | |m12|04| 2h 17min | |m73|01| 4h 8min | |m5|12| First 5 of 6 issues
| |m0|18| 3 | 03E | |m53|02| 226.52 | NodaTime .CalendarSystem+GregorianJulianCal endars |
CalendarSystem+HebrewCalendars | |m1|10| 214d | |m12|03| 2h 24min | |m72|02| 4h 5min | |m4|14| 5 issues
| |m0|19| 1 | 06E | |m100|00| 416.67 | NodaTime .CalendarSystem+HebrewCalendars |
CalendarSystem+PersianCalendars | |m1|09| 228d | |m13|02| 2h 33min | |m71|05| 4h 4min | |m2|16| 4 issues
| |m0|16| 3 | 04E | |m52|03| 221.35 | NodaTime .CalendarSystem+PersianCalendars |
CalendarSystem+IslamicCalendars | |m1|08| 229d | |m13|01| 2h 34min | |m72|03| 4h 5min | |m4|15| 5 issues
| |m5|11| 12 | 02E | |m27|04| 118.83 | NodaTime .CalendarSystem+IslamicCalendars |
CalendarSystem+MiscellaneousCale nd ars | |m2|07| 261d | |m16|00| 2h 59min | |m73|00| 4h 10min | |m7|09| First 5 of 7 issues
| |m0|17| 3 | 00E | |m61|01| 258.97 | NodaTime .CalendarSystem+MiscellaneousCalen dars |
Preconditions ● | |m2|06| 281d | |m0|16| 34min | |m12|18| 45min | |m14|04| First 5 of 12 issues
| |m14|08| 32 | 16B | |m1|13| 8.38 | NodaTime.Utility.Preconditions |
ZonedDateTimePatternParser+Zoned Da teTimeParseBucket ● | |m2|05| 308d | |m1|12| 47min | |m15|16| 56min | |m12|07| First 5 of 11 issues
| |m28|04| 62 | 14B | |m0|15| 7.4 | NodaTime.Text .ZonedDateTimePatternParser+ZonedD ateTimeParseBucket |
ZonedDateTimeTypeConverter | |m2|04| 319d | |m1|14| 42min | |m13|17| 48min | |m7|10| First 5 of 7 issues
| |m2|12| 7 | 09D | |m9|08| 44.19 | NodaTime.Text .ZonedDateTimeTypeConverter |
ZoneRecurrence | |m3|03| 326d | |m3|07| 1h 3min | |m20|14| 1h 11min | |m41|00| First 5 of 31 issues
| |m42|00| 91 | 15B | |m0|17| 5.88 | NodaTime.TimeZones.ZoneRecurrence |
FixedDateTimeZone ● | |m3|02| 327d | |m10|05| 2h 1min | |m39|08| 2h 15min | |m22|03| First 5 of 18 issues
| |m13|09| 30 | 08D | |m5|09| 28.13 | NodaTime.TimeZones .FixedDateTimeZone |
TzdbStreamData+Builder ● | |m3|01| 342d | |m5|06| 1h 23min | |m25|12| 1h 28min | |m22|02| First 5 of 18 issues
| |m24|05| 52 | 11C | |m2|10| 13.72 | NodaTime.TimeZones.IO .TzdbStreamData+Builder |
ZoneYearOffset | |m3|00| 1y 15d | |m0|15| 36min | |m9|19| 35min | |m38|01| First 5 of 29 issues
| |m34|02| 73 | 18A | |m0|18| 4.31 | NodaTime.TimeZones.ZoneYearOffset |
Code Query: Issues to Fix Priority |
1,770 issues matched
1 770 issues | Debt | Annual Interest | Breaking Point | CodeElement | Full Name |
---|---|---|---|---|---|
High issue on: NodaTime.Text .UnparsableValueException..ctor (String,Exception) | |m0|10| 2min 0s | 0720min | |m0|10| 36d | 06NodaTime.Text .UnparsableValueException..ctor (String,Exception) | Rule violated: New Types and Methods should be tested |
High issue on: NodaTime.DateTimeZone | |m0|11| 2min 0s | 0620min | |m0|11| 36d | 05NodaTime.DateTimeZone | Rule violated: Types almost 100% tested should be 100% tested |
High issue on: NodaTime.ZonedDateTime | |m0|12| 2min 0s | 0920min | |m0|12| 36d | 07NodaTime.ZonedDateTime | Rule violated: Types almost 100% tested should be 100% tested |
High issue on: NodaTime.Text .LocalDatePatternParser+LocalDateP arseBucket | |m0|09| 2min 0s | 0820min | |m0|09| 36d | 09NodaTime.Text .LocalDatePatternParser+LocalDateP arseBucket | Rule violated: Types almost 100% tested should be 100% tested |
High issue on: NodaTime.Text .ZonedDateTimePatternParser | |m0|06| 2min 0s | 0520min | |m0|06| 36d | 08NodaTime.Text .ZonedDateTimePatternParser | Rule violated: Types almost 100% tested should be 100% tested |
High issue on: NodaTime .TimeZones .PrecalculatedDateTimeZone | |m0|07| 2min 0s | 0220min | |m0|07| 36d | 01NodaTime.TimeZones .PrecalculatedDateTimeZone | Rule violated: Types almost 100% tested should be 100% tested |
High issue on: NodaTime.Text .OffsetDateTimePatternParser | |m0|08| 2min 0s | 0120min | |m0|08| 36d | 00NodaTime.Text .OffsetDateTimePatternParser | Rule violated: Types almost 100% tested should be 100% tested |
High issue on: NodaTime.Text .ZonedDateTimePatternParser+ZonedD ateTimeParseBucket | |m0|17| 2min 0s | 0420min | |m0|17| 36d | 02NodaTime.Text .ZonedDateTimePatternParser+ZonedD ateTimeParseBucket | Rule violated: Types almost 100% tested should be 100% tested |
High issue on: NodaTime.YearMonth | |m0|18| 2min 0s | 0320min | |m0|18| 36d | 04NodaTime.YearMonth | Rule violated: Types almost 100% tested should be 100% tested |
High issue on: NodaTime .TimeZones.IO .TzdbStreamData | |m0|19| 2min 0s | 1020min | |m0|19| 36d | 03NodaTime.TimeZones.IO .TzdbStreamData | Rule violated: Types almost 100% tested should be 100% tested |
High issue on: NodaTime .Calendars .UmAlQuraYearMonthDayCalculator | |m0|16| 2min 0s | 1720min | |m0|16| 36d | 16NodaTime.Calendars .UmAlQuraYearMonthDayCalculator | Rule violated: Types almost 100% tested should be 100% tested |
High issue on: NodaTime.Text .AnnualDatePatternParser | |m0|13| 2min 0s | 1620min | |m0|13| 36d | 15NodaTime.Text .AnnualDatePatternParser | Rule violated: Types almost 100% tested should be 100% tested |
High issue on: NodaTime.Text .UnparsableValueException..ctor (String,Exception) | |m0|14| 2min 0s | 1920min | |m0|14| 36d | 17NodaTime.Text .UnparsableValueException..ctor (String,Exception) | Rule violated: Types that used to be 100% covered by tests should still be 100% covered |
High issue on: NodaTime .Calendars .BadiYearMonthDayCalculator .YearInfoRaw | |m0|15| 2min 0s | 1820min | |m0|15| 36d | 19NodaTime.Calendars .BadiYearMonthDayCalculator .YearInfoRaw | Rule violated: Avoid non-readonly static fields |
High issue on: NodaTime .Calendars .GregorianYearMonthDayCalculator | |m1|03| 2min 56s | 1520min | |m0|03| 53d | 18NodaTime.Calendars .GregorianYearMonthDayCalculator | Rule violated: Types almost 100% tested should be 100% tested |
High issue on: NodaTime .TimeZones .PartialZoneIntervalMap | |m1|02| 2min 56s | 1220min | |m0|02| 53d | 11NodaTime.TimeZones .PartialZoneIntervalMap | Rule violated: Types almost 100% tested should be 100% tested |
High issue on: NodaTime.TimeZones.Resolvers | |m1|05| 2min 56s | 1120min | |m0|05| 53d | 10NodaTime.TimeZones.Resolvers | Rule violated: Types almost 100% tested should be 100% tested |
High issue on: NodaTime.Text .OffsetDatePatternParser | |m1|04| 2min 56s | 1420min | |m0|04| 53d | 12NodaTime.Text .OffsetDatePatternParser | Rule violated: Types almost 100% tested should be 100% tested |
High issue on: NodaTime .TimeZones.IO .DateTimeZoneWriter | |m7|00| 15min | 001h 24min | |m0|01| 65d | 14NodaTime.TimeZones.IO .DateTimeZoneWriter | Rule violated: Potentially Dead Types |
High issue on: NodaTime .TimeZones .TzdbDateTimeZoneSource | |m1|01| 3min 53s | 1320min | |m0|00| 71d | 13NodaTime.TimeZones .TzdbDateTimeZoneSource | Rule violated: Types almost 100% tested should be 100% tested |
Code Query: Debt and Issues per Rule |
119 rules matched
119 rules | Issues | Debt | Annual Interest | Breaking Point | Category | Full Name |
---|---|---|---|---|---|---|
Avoid namespaces mutually dependent | |m100|00| First 5 of 258 issues
| |m100|00| 13d 0h | |m52|01| 2d 2h | |m31|03| 5y 193d | 06Project Rules \ Architecture | Rule |
Avoid types with too many methods | |m5|11| First 5 of 13 issues
| |m25|01| 3d 2h | |m17|04| 6h 26min | |m23|05| 4y 48d | 05Project Rules \ Code Smells | Rule |
Avoid types initialization cycles | |m3|12| First 5 of 9 issues
| |m10|02| 1d 2h | |m100|00| 4d 4h | |m1|18| 106d | 07Project Rules \ Object Oriented Design | Rule |
Types 100% covered should be tagged with FullCoveredAttribute | |m72|01| First 5 of 186 issues
| |m8|03| 1d 1h | |m0|19| 0min 0s | |m0|19| 00:00:00 | 09Project Rules \ Code Coverage | Rule |
A field must not be assigned from outside its parent hierarchy types | |m9|09| First 5 of 24 issues
| |m7|04| 1d 0h | |m22|03| 1d 0h | |m5|11| 1y 11d | 08Project Rules \ Immutability | Rule |
Potentially Dead Methods | |m18|06| First 5 of 47 issues
| |m7|05| 1d 0h | |m23|02| 1d 0h | |m5|16| 350d | 01Project Rules \ Dead Code | Rule |
Code should be tested | |m20|05| First 5 of 53 issues
| |m6|06| 6h 19min | |m7|06| 2h 40min | |m13|08| 2y 134d | 00Project Rules \ Code Coverage | Rule |
Avoid methods too big, too complex | |m2|13| First 5 of 7 issues
| |m4|07| 4h 31min | |m3|10| 1h 21min | |m18|06| 3y 115d | 02Project Rules \ Code Smells | Rule |
Nested types should not be visible | |m11|08| First 5 of 29 issues
| |m4|08| 4h 22min | |m2|14| 58min | |m25|04| 4y 188d | 04Project Rules \ Design | Rule |
Avoid methods with too many parameters | |m1|15| 3 issues
| |m3|09| 3h 18min | |m0|16| 20min | |m53|00| 9y 190d | 03Project Rules \ Code Smells | Rule |
Use langword in XML comment | |m59|02| First 5 of 154 issues
| |m2|10| 2h 34min | |m7|07| 2h 34min | |m5|13| 1y | 16Roslyn Analyzers \ Design | Rule |
Add parentheses when necessary | |m52|03| First 5 of 135 issues
| |m2|11| 2h 15min | |m6|08| 2h 15min | |m5|15| 1y | 15Roslyn Analyzers \ Roslynator | Rule |
Don't assign a field from many methods | |m5|10| First 5 of 14 issues
| |m2|12| 2h 6min | |m12|05| 4h 40min | |m2|17| 164d | 17Project Rules \ Immutability | Rule |
Avoid namespaces dependency cycles | |m0|18| 1 issue
| |m1|13| 2h 0min | |m0|17| 20min | |m33|02| 6y | 19Project Rules \ Architecture | Rule |
Avoid custom delegates | |m1|14| 5 issues
| |m1|14| 1h 43min | |m4|09| 1h 40min | |m5|12| 1y 10d | 18Project Rules \ Design | Rule |
Instance fields naming convention | |m12|07| First 5 of 32 issues
| |m1|15| 1h 36min | |m2|12| 1h 4min | |m8|09| 1y 182d | 11Project Rules \ Naming Conventions | Rule |
Avoid types with poor cohesion | |m0|17| 1 issue
| |m1|16| 1h 28min | |m1|15| 29min | |m16|07| 2y 357d | 10Project Rules \ Code Smells | Rule |
Avoid types with too many fields | |m0|19| 1 issue
| |m1|17| 1h 14min | |m0|18| 8min | |m49|01| 8y 308d | 12Project Rules \ Code Smells | Rule |
Namespaces almost 100% tested should be 100% tested | |m1|16| 3 issues
| |m1|18| 1h 12min | |m2|13| 1h 0min | |m6|10| 1y 74d | 14Project Rules \ Code Coverage | Rule |
Remove trailing white-space | |m27|04| First 5 of 70 issues
| |m1|19| 1h 10min | |m3|11| 1h 10min | |m5|14| 1y | 13Roslyn Analyzers \ Roslynator | Rule |
Code Query: New Debt and Issues per Rule |
27 rules matched
27 rules | IssuesAdded | IssuesFixed | Issues | Debt | DebtDiff | Category | Full Name |
---|---|---|---|---|---|---|---|
Avoid types with too many methods | |m0|08| 1 issue
| |m20|00| 1 issue
| |m4|07| First 5 of 13 issues
| |m25|01| 3d 2h | |m100|00| 1h 5min | 06Project Rules \ Code Smells | Rule |
Avoid namespaces mutually dependent | |m20|06| 2 issues
| 06no issue | |m100|00| First 5 of 258 issues
| |m100|00| 13d 0h | |m75|01| 35min | 05Project Rules \ Architecture | Rule |
Avoid methods with too many overloads | |m0|09| 1 issue
| 09no issue | |m0|11| 2 issues
| |m0|04| 48min | |m66|02| 24min | 07Project Rules \ Code Smells | Rule |
Avoid adding methods to a type that already had many methods | |m0|11| 1 issue
| 08no issue | |m0|13| 1 issue
| |m0|07| 20min | |m62|03| 20min | 09Project Rules \ Code Smells Regression | Rule |
Methods refactored should be tested | |m0|10| 1 issue
| 05no issue | |m0|15| 1 issue
| |m0|11| 9min | |m53|04| 9min | 08Project Rules \ Code Coverage | Rule |
Merge preprocessor directives | |m60|00| 4 issues
| 02no issue | |m1|10| 4 issues
| |m0|13| 4min 0s | |m49|05| 4min 0s | 01Roslyn Analyzers \ Roslynator | Rule |
Remove trailing white-space | |m40|02| 3 issues
| 01no issue | |m26|01| First 5 of 70 issues
| |m1|03| 1h 10min | |m48|07| 3min 0s | 00Roslyn Analyzers \ Roslynator | Rule |
Use Explicit enum value instead of 0 | |m40|01| 3 issues
| 04no issue | |m14|02| First 5 of 39 issues
| |m0|05| 39min | |m48|06| 3min 0s | 02Roslyn Analyzers \ Usage | Rule |
Nested types should not be visible | |m0|17| 1 issue
| 03no issue | |m10|05| First 5 of 29 issues
| |m4|02| 4h 22min | |m48|09| 2min 0s | 04Project Rules \ Design | Rule |
New Types and Methods should be tested | |m0|16| 1 issue
| 07no issue | |m0|14| 1 issue
| |m0|16| 2min 0s | |m48|08| 2min 0s | 03Project Rules \ Code Coverage | Rule |
Types that used to be 100% covered by tests should still be 100% covered | |m0|19| 1 issue
| 17no issue | |m0|19| 1 issue
| |m0|15| 2min 0s | |m48|12| 2min 0s | 16Project Rules \ Code Coverage | Rule |
Fix TODO comment | |m20|05| 2 issues
| 16no issue | |m1|09| First 5 of 6 issues
| |m0|12| 6min | |m48|13| 2min 0s | 15Roslyn Analyzers \ Design | Rule |
Method is too long | |m20|04| 2 issues
| 19no issue | |m6|06| First 5 of 17 issues
| |m0|08| 17min | |m48|10| 2min 0s | 17Roslyn Analyzers \ Design | Rule |
Avoid closure by using an overload with the 'factoryArgument' parameter | |m20|03| 2 issues
| 18no issue | |m0|12| 2 issues
| |m0|14| 2min 0s | |m48|11| 2min 0s | 19Roslyn Analyzers \ Performance | Rule |
Avoid publicly visible constant fields | |m20|07| 2 issues
| 15no issue | |m12|04| First 5 of 32 issues
| |m0|09| 16min | |m47|17| 1min 0s | 18Project Rules \ Visibility | Rule |
Do not use implicit culture-sensitive ToString in interpolated strings | |m0|18| 1 issue
| 12no issue | |m14|03| First 5 of 37 issues
| |m0|06| 37min | |m47|18| 1min 0s | 11Roslyn Analyzers \ Design | Rule |
Prefer 'AsSpan' over 'Substring' | |m0|13| 1 issue
| 11no issue | |m0|16| 1 issue
| |m0|19| 1min 0s | |m47|19| 1min 0s | 10Roslyn Analyzers \ Performance | Rule |
Optimize string method usage | |m0|12| 1 issue
| 14no issue | |m0|17| 1 issue
| |m0|18| 1min 0s | |m47|14| 1min 0s | 12Roslyn Analyzers \ Performance | Rule |
Make member readonly | |m0|15| 1 issue
| 13no issue | |m4|08| First 5 of 12 issues
| |m0|10| 12min | |m47|15| 1min 0s | 14Roslyn Analyzers \ Design | Rule |
Use string.Create instead of FormattableString | |m0|14| 1 issue
| 10no issue | |m0|18| 1 issue
| |m0|17| 1min 0s | |m47|16| 1min 0s | 13Roslyn Analyzers \ Performance | Rule |
Code Query: Debt and Issues per Code Element |
1,104 code elements matched
1 104 code elements | Issues | Debt | Annual Interest | Breaking Point | Full Name |
---|---|---|---|---|---|
NodaFormatInfo ● | |m27|03| 4 issues
| |m100|00| 3h 46min | |m18|10| 44min | |m16|06| 5y 14d | NodaTime.Globalization .NodaFormatInfo |
Duration | |m18|09| 3 issues
| |m94|01| 3h 35min | |m25|05| 1h 1min | |m11|13| 3y 173d | NodaTime.Duration |
LocalDateTime ● | |m27|01| 4 issues
| |m86|02| 3h 15min | |m21|06| 51min | |m12|12| 3y 285d | NodaTime.LocalDateTime |
Instant ● | |m18|10| 3 issues
| |m82|03| 3h 7min | |m19|07| 47min | |m13|11| 3y 337d | NodaTime.Instant |
LocalDate ● | |m18|04| 3 issues
| |m82|04| 3h 6min | |m18|09| 45min | |m13|08| 4y 44d | NodaTime.LocalDate |
SteppedPatternBuilder<TResult ,TBucket> ● | |m18|05| 3 issues
| |m78|05| 2h 57min | |m13|13| 32min | |m17|04| 5y 139d | NodaTime.Text.Patterns .SteppedPatternBuilder<TResult ,TBucket> |
LocalTime | |m9|13| 2 issues
| |m74|06| 2h 49min | |m16|11| 41min | |m13|09| 4y 43d | NodaTime.LocalTime |
OffsetDateTime | |m27|02| 4 issues
| |m61|07| 2h 19min | |m12|14| 31min | |m14|07| 4y 145d | NodaTime.OffsetDateTime |
Offset | |m18|06| 3 issues
| |m59|08| 2h 16min | |m10|15| 25min | |m18|03| 5y 148d | NodaTime.Offset |
.cctor() | |m9|12| 2 issues
| |m59|09| 2h 15min | |m99|01| 4h 2min | |m1|15| 203d | NodaTime .CalendarSystem+MiscellaneousCalen dars..cctor() |
ParseResult<T> | |m9|18| 2 issues
| |m59|10| 2h 15min | |m13|12| 33min | |m13|10| 4y | NodaTime.Text.ParseResult<T> |
Period ● | |m18|08| 3 issues
| |m57|11| 2h 11min | |m10|16| 25min | |m17|05| 5y 75d | NodaTime.Period |
Between(LocalDateTime ,LocalDateTime,PeriodUnits) ● | |m72|00| First 5 of 9 issues
| |m56|12| 2h 9min | |m9|17| 23min | |m18|02| 5y 181d | NodaTime.Period.Between (LocalDateTime,LocalDateTime ,PeriodUnits) |
ZonedDateTime | |m18|07| 3 issues
| |m56|13| 2h 8min | |m19|08| 46min | |m9|14| 2y 271d | NodaTime.ZonedDateTime |
JetBrains.Annotations | |m9|19| 2 issues
| |m54|15| 2h 4min | |m8|18| 20min | |m20|01| 6y 73d | JetBrains.Annotations |
CalendarSystem | |m9|14| 2 issues
| |m54|14| 2h 4min | |m3|19| 8min | |m50|00| 15y 101d | NodaTime.CalendarSystem |
.cctor() | |m18|11| 3 issues
| |m51|16| 1h 56min | |m100|00| 4h 3min | |m1|16| 174d | NodaTime .CalendarSystem+IslamicCalendars. .cctor() |
.cctor() | |m9|15| 2 issues
| |m50|18| 1h 55min | |m99|02| 4h 2min | |m1|18| 173d | NodaTime.CalendarSystem..cctor() |
.cctor() | |m9|16| 2 issues
| |m50|17| 1h 55min | |m99|04| 4h 2min | |m1|17| 173d | NodaTime .CalendarSystem+PersianCalendars. .cctor() |
.cctor() | |m9|17| 2 issues
| |m48|19| 1h 50min | |m99|03| 4h 2min | |m1|19| 165d | NodaTime .CalendarSystem+HebrewCalendars. .cctor() |
Code Query: New Debt and Issues per Code Element |
34 members matched
34 types and members | IssuesAdded | IssuesFixed | Issues | Debt | DebtDiff | Full Name |
---|---|---|---|---|---|---|
YearMonth ● | |m0|07| 1 issue
| 06no issue | |m37|05| 4 issues
| |m41|02| 1h 22min | |m100|00| 1h 3min | NodaTime.YearMonth |
ConvertUnixRuleToBclAdjustmentRu le (TimeZoneInfo+AdjustmentRule ,String,String,TimeSpan,TimeSpan ,Boolean) ✱ | |m66|01| 3 issues
| 05no issue | |m25|08| 3 issues
| |m16|03| 33min | |m81|01| 33min | NodaTime.TimeZones .BclDateTimeZone+BclAdjustmentRule .ConvertUnixRuleToBclAdjustmentRul e(TimeZoneInfo+AdjustmentRule ,String,String,TimeSpan,TimeSpan ,Boolean) |
Between(YearMonth,YearMonth ,PeriodUnits) ✱ | |m100|00| 4 issues
| 07no issue | |m37|03| 4 issues
| |m14|04| 28min | |m78|02| 28min | NodaTime.Period.Between(YearMonth ,YearMonth,PeriodUnits) |
Between(LocalDateTime ,LocalDateTime,PeriodUnits) ● | |m0|08| 1 issue
| 09no issue | |m100|00| First 5 of 9 issues
| |m66|01| 2h 9min | |m76|03| 24min | NodaTime.Period.Between (LocalDateTime,LocalDateTime ,PeriodUnits) |
LocalDateTime ● | |m0|06| 1 issue
| 08no issue | |m37|02| 4 issues
| |m100|00| 3h 15min | |m74|04| 20min | NodaTime.LocalDateTime |
ToString() ✱ | |m0|09| 1 issue
| 01no issue | |m12|10| 2 issues
| |m7|06| 16min | |m71|05| 16min | NodaTime.YearMonth.ToString() |
.ctor(String,Exception) ✱ | |m66|02| 3 issues
| 00no issue | |m25|07| 3 issues
| |m2|07| 6min | |m65|06| 6min | NodaTime.Text .UnparsableValueException..ctor (String,Exception) |
BclDateTimeZone+BclAdjustmentRul e ● | |m33|04| 2 issues
| 02no issue | |m12|09| 2 issues
| |m1|11| 2min 30s | |m63|07| 2min 30s | NodaTime.TimeZones .BclDateTimeZone+BclAdjustmentRule |
ValidatedNotNullAttribute ✱ | |m33|03| 2 issues
| 04no issue | |m12|14| 2 issues
| |m0|12| 2min 0s | |m63|08| 2min 0s | NodaTime.Annotations .ValidatedNotNullAttribute |
FixUnixTransitions (BclDateTimeZone+BclAdjustmentRule []) ✱ | |m33|05| 2 issues
| 03no issue | |m12|11| 2 issues
| |m0|13| 1min 30s | |m62|09| 1min 30s | NodaTime.TimeZones.BclDateTimeZone .FixUnixTransitions (BclDateTimeZone+BclAdjustmentRule []) |
.ctor(String,ZoneInterval[] ,IZoneIntervalMap) ✱ | |m0|17| 1 issue
| 16no issue | |m12|13| 2 issues
| |m0|14| 1min 30s | |m62|10| 1min 30s | NodaTime.TimeZones .PrecalculatedDateTimeZone..ctor (String,ZoneInterval[] ,IZoneIntervalMap) |
GetIslamicId (IslamicLeapYearPattern ,IslamicEpoch) | |m0|16| 1 issue
| 15no issue | |m12|12| 2 issues
| |m10|05| 21min | |m62|17| 1min 0s | NodaTime.CalendarSystem .GetIslamicId (IslamicLeapYearPattern ,IslamicEpoch) |
Subtract(Period,Period) ✱ | |m0|19| 1 issue
| 17no issue | |m0|18| 1 issue
| |m0|18| 1min 0s | |m62|16| 1min 0s | NodaTime.Period.Subtract(Period ,Period) |
InternalDaysBetween(LocalDate ,LocalDate) ✱ | |m0|18| 1 issue
| 19no issue | |m0|19| 1 issue
| |m0|16| 1min 0s | |m62|19| 1min 0s | NodaTime.Period .InternalDaysBetween(LocalDate ,LocalDate) |
PlusMonths(Int32) ✱ | |m0|15| 1 issue
| 18no issue | |m0|16| 1 issue
| |m0|19| 1min 0s | |m62|18| 1min 0s | NodaTime.YearMonth.PlusMonths (Int32) |
DurationPattern | |m0|12| 1 issue
| 11no issue | |m37|01| 4 issues
| |m1|09| 4min 0s | |m62|15| 1min 0s | NodaTime.Xml.XmlSchemaDefinition .DurationPattern |
.ctor(String) | |m0|11| 1 issue
| 10no issue | |m0|17| 1 issue
| |m0|17| 1min 0s | |m62|12| 1min 0s | NodaTime.Utility .DebugPreconditionException..ctor (String) |
GetEraDescription(Era) | |m0|14| 1 issue
| 12no issue | |m0|15| 1 issue
| |m0|15| 1min 0s | |m62|11| 1min 0s | NodaTime.Globalization .NodaFormatInfo.GetEraDescription (Era) |
NextTransition(Instant ,ZoneRecurrence&) ● | |m0|13| 1 issue
| 14no issue | |m37|04| 4 issues
| |m1|08| 4min 0s | |m62|14| 1min 0s | NodaTime.TimeZones .StandardDaylightAlternatingMap .NextTransition(Instant ,ZoneRecurrence&) |
GuessZoneIdByTransitions (TimeZoneInfo) ● | |m0|10| 1 issue
| 13no issue | |m25|06| 3 issues
| |m1|10| 3min 0s | |m62|13| 1min 0s | NodaTime.TimeZones .TzdbDateTimeZoneSource .GuessZoneIdByTransitions (TimeZoneInfo) |
Object Oriented Design
Validated Rule: Avoid interfaces too big |
• How to Fix Issues of this Rule: Typically to fix such issue, the interface must be refactored in a grape of smaller single-responsibility interfaces. For example if an interface IFoo handles both read and write operations, it can be split into two interfaces: IFooReader and IFooWriter. A usual problem for a large public interface is that it has many clients that consume it. As a consequence splitting it in smaller interfaces has an important impact and it is not always feasible. The estimated Debt, which means the effort to fix such issue, varies linearly from 20 minutes for an interface with 10 methods, up to 7 hours for an interface with 100 or more methods. The Debt is divided by two if the interface is not publicly visible, because in such situation only the current project is impacted by the refactoring.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1200:AvoidInterfacesTooBig", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
No type matched
Rule Violated: ND1201 Base class should not use derivatives |
• How to Fix Issues of this Rule: Understand the need for using derivatives, then imagine a new design, and then refactor. Typically an algorithm in the base class needs to access something from derived classes. You can try to encapsulate this access behind an abstract or a virtual method. If you see in the base class some conditions on typeof(DerivedClass) not only urgent refactoring is needed. Such condition can easily be replaced through an abstract or a virtual method. Sometime you'll see a base class that creates instance of some derived classes. In such situation, certainly using the factory method pattern http://en.wikipedia.org/wiki/Factory_method_pattern or the abstract factory pattern http://en.wikipedia.org/wiki/Abstract_factory_pattern will improve the design. The estimated Debt, which means the effort to fix such issue, is equal to 3 minutes per derived class used by the base class + 3 minutes per member of a derived class used by the base class.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1201:BaseClassShouldNotUseDerivatives", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
4 types matched |
Formatting: bold✱ means added ● means code was changed |
4 types | derivedClassesUsed | derivedClassesMemberUsed | Debt | Severity | Full Name |
---|---|---|---|---|---|
OffsetDateTime+Comparer | |m50|1| 2 types | |m100|1| 2 fields | |m100|1| 12min | 1High | NodaTime.OffsetDateTime+Comparer |
ZonedDateTime+Comparer | |m50|2| 2 types | |m100|0| 2 fields | |m100|0| 12min | 0High | NodaTime.ZonedDateTime+Comparer |
DateTimeZone | |m0|3| 1 type | |m50|2| 1 method | |m0|3| 6min | 3High | NodaTime.DateTimeZone |
PersianYearMonthDayCalculator ● | |m100|0| 3 types | 3no member | |m50|2| 9min | 2High | NodaTime.Calendars .PersianYearMonthDayCalculator |
Validated Rule: Class shouldn't be too deep in inheritance tree |
• How to Fix Issues of this Rule: In Object-Oriented Programming, a well-known motto is Favor Composition over Inheritance. This is because inheritance comes with pitfalls. In general, the implementation of a derived class is very bound up with the base class implementation. Also a base class exposes implementation details to its derived classes, that's why it's often said that inheritance breaks encapsulation. On the other hands, Composition favors binding with interfaces over binding with implementations. Hence, not only the encapsulation is preserved, but the design is clearer, because interfaces make it explicit and less coupled. Hence, to break a long inheritance chain, Composition is often a powerful way to enhance the design of the refactored underlying logic. You can also read: http://en.wikipedia.org/wiki/Composition_over_inheritance and http://stackoverflow.com/questions/49002/prefer-composition-over-inheritance The estimated Debt, which means the effort to fix such issue, depends linearly upon the depth of inheritance.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1202:ClassShouldntBeTooDeepInInheritanceTree", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
No type matched
Rule Violated: ND1203 Class with no descendant should be sealed if possible |
• How to Fix Issues of this Rule: For each matched class, take the time to assess if it is really meant to be subclassed. Certainly most matched class will end up being declared as sealed.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1203:ClassWithNoDescendantShouldBeSealedIfPossible", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
8 types matched |
Formatting: bold✱ means added ● means code was changed |
8 types | # lines of code (LOC) | Debt | Severity | Full Name |
---|---|---|---|---|
TzdbStreamData+Builder ● | |m100|0| 52 | |m0|2| 0min 30s | 2Medium | NodaTime.TimeZones.IO .TzdbStreamData+Builder |
NodaFormatInfo+EraDescription ● | |m37|1| 20 | |m0|3| 0min 30s | 3Medium | NodaTime.Globalization .NodaFormatInfo+EraDescription |
PartialZoneIntervalMap+CombinedP ar tialZoneIntervalMap ● | |m27|2| 15 | |m0|0| 0min 30s | 0Medium | NodaTime.TimeZones .PartialZoneIntervalMap+CombinedPa rtialZoneIntervalMap |
PersianYearMonthDayCalculator+Si mp le ● | |m5|3| 4 | |m0|1| 0min 30s | 1Medium | NodaTime.Calendars .PersianYearMonthDayCalculator+Sim ple |
PersianYearMonthDayCalculator+Ar it hmetic | |m5|4| 4 | |m0|6| 0min 30s | 6Medium | NodaTime.Calendars .PersianYearMonthDayCalculator+Ari thmetic |
PersianYearMonthDayCalculator+As tr onomical | |m3|6| 3 | |m0|7| 0min 30s | 7Medium | NodaTime.Calendars .PersianYearMonthDayCalculator+Ast ronomical |
TimeZoneInfoInterceptor+BclShim | |m3|5| 3 | |m0|4| 0min 30s | 4Medium | NodaTime.TimeZones .TimeZoneInfoInterceptor+BclShim |
DebugPreconditionException | |m0|7| 1 | |m0|5| 0min 30s | 5Medium | NodaTime.Utility .DebugPreconditionException |
Rule Violated: ND1204 Overrides of Method() should call base.Method() |
• How to Fix Issues of this Rule: You should investigate if inheritance is the right choice to bind the base class implementation with the derived classes implementations. Does presenting the method with polymorphic behavior through an interface, would be a better design choice? In such situation, often using the design pattern template method http://en.wikipedia.org/wiki/Template_method_pattern might help improving the design.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1204:OverridesOfMethodShouldCallBaseMethod", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 method matched |
Formatting: bold✱ means added ● means code was changed |
1 method | shouldCall | definedInBaseClass | Debt | Severity | Full Name |
---|---|---|---|---|---|
MapLocal(LocalDateTime) | 0NodaTime.DateTimeZone.MapLocal (LocalDateTime) | 0NodaTime.DateTimeZone | |m0|0| 10min | 0Medium | NodaTime.TimeZones .FixedDateTimeZone.MapLocal (LocalDateTime) |
Validated Rule: Do not hide base class methods |
• How to Fix Issues of this Rule: To fix a violation of this rule, remove or rename the method, or change the parameter signature so that the method does not hide the base method. However method hiding is for those times when you need to have two things to have the same name but different behavior. This is a very rare situations, described here: https://learn.microsoft.com/en-us/archive/blogs/ericlippert/method-hiding-apologia
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1205:DoNotHideBaseClassMethods", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
No method matched
Validated Rule: A stateless class or structure might be turned into a static type |
• How to Fix Issues of this Rule: Declare all methods as static and transform the class or structure into a static class. By default issues of this rule have a Low severity because they reflect more an advice than a problem.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1206:AStatelessClassOrStructureMightBeTurnedIntoAStaticType", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
No type matched
Rule Violated: ND1207 Non-static classes should be instantiated or turned to static |
• How to Fix Issues of this Rule: First it is important to investigate why the class is never instantiated. If the reason is the class hosts only static methods then the class can be safely declared as static. Others reasons like, the class is meant to be instantiated via reflection, or is meant to be instantiated only by client code should lead to adapt this rule code to avoid these matches.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1207:NonStaticClassesShouldBeInstantiatedOrTurnedToStatic", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
13 types matched |
Formatting: bold✱ means added ● means code was changed |
13 types | Visibility | Debt | Severity | Full Name |
---|---|---|---|---|
AnnualDateTypeConverter | 03internal | |m0|03| 2min 0s | 03Medium | NodaTime.Text .AnnualDateTypeConverter |
DurationTypeConverter | 04internal | |m0|04| 2min 0s | 04Medium | NodaTime.Text .DurationTypeConverter |
InstantTypeConverter | 05internal | |m0|05| 2min 0s | 05Medium | NodaTime.Text.InstantTypeConverter |
LocalDateTimeTypeConverter | 00internal | |m0|00| 2min 0s | 00Medium | NodaTime.Text .LocalDateTimeTypeConverter |
LocalDateTypeConverter | 01internal | |m0|01| 2min 0s | 01Medium | NodaTime.Text .LocalDateTypeConverter |
LocalTimeTypeConverter | 02internal | |m0|02| 2min 0s | 02Medium | NodaTime.Text .LocalTimeTypeConverter |
OffsetTypeConverter | 06internal | |m0|06| 2min 0s | 06Medium | NodaTime.Text.OffsetTypeConverter |
OffsetDateTimeTypeConverter | 10internal | |m0|10| 2min 0s | 10Medium | NodaTime.Text .OffsetDateTimeTypeConverter |
OffsetDateTypeConverter | 11internal | |m0|11| 2min 0s | 11Medium | NodaTime.Text .OffsetDateTypeConverter |
OffsetTimeTypeConverter | 12internal | |m0|12| 2min 0s | 12Medium | NodaTime.Text .OffsetTimeTypeConverter |
PeriodTypeConverter | 07internal | |m0|07| 2min 0s | 07Medium | NodaTime.Text.PeriodTypeConverter |
YearMonthTypeConverter | 08internal | |m0|08| 2min 0s | 08Medium | NodaTime.Text .YearMonthTypeConverter |
ZonedDateTimeTypeConverter | 09internal | |m0|09| 2min 0s | 09Medium | NodaTime.Text .ZonedDateTimeTypeConverter |
Rule Violated: ND1208 Methods should be declared static if possible |
• How to Fix Issues of this Rule: Declare matched methods as static. Since such method doesn't use any instance fields and methods of its type and base-types, you should consider if it makes sense, to move such a method to a static utility class.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1208:MethodsShouldBeDeclaredStaticIfPossible", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
2 methods matched |
Formatting: bold✱ means added ● means code was changed |
2 methods | staticFieldsUsed | methodsCallingMe | Debt | Severity | Full Name |
---|---|---|---|---|---|
ForId(String) | 0no field | |m0|0| 1 method | |m0|0| 1min 0s | 0Medium | NodaTime.TimeZones .BclDateTimeZoneSource.ForId (String) |
DummyMethod(TResult ,StringBuilder) | 1no field | |m0|1| 1 method | |m0|1| 1min 0s | 1Medium | NodaTime.Text.Patterns .DatePatternHelper+MonthFormatActi onHolder<TResult,TBucket> .DummyMethod(TResult,StringBuilder ) |
Rule Violated: ND1209 Constructor should not call a virtual method |
• How to Fix Issues of this Rule: Issues reported can be solved by re-designing object initialisation or by declaring the parent class as sealed, if possible. A constructor should primarily focus on initializing the state of its own class. Additional setup can be handled in constructors of derived classes or in dedicated methods called after object construction.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1209:ConstructorShouldNotCallAVirtualMethod", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 method matched |
Formatting: bold✱ means added ● means code was changed |
1 method | virtualMethodsCalled | DerivedTypes | Debt | Severity | Full Name |
---|---|---|---|---|---|
.ctor(Int32) | |m0|0| 1 method | |m0|0| 3 types | |m0|0| 4min 0s | 0High | NodaTime.Calendars .PersianYearMonthDayCalculator. .ctor(Int32) |
Validated Rule: Avoid the Singleton pattern |
• How to Fix Issues of this Rule: This rule pertains to the usual syntax of singletons, where a single static field holds the instance of the parent class. We emphasize that the issue lies in this specific syntax, which hinders testability. The concern is not having a single instance of the class during runtime. To address matches for this rule, create the single instance at the program's startup and pass it explicitly to all classes and methods requiring access. When dealing with multiple singletons, consider consolidating them into a single program execution context. This unified context simplifies propagation across various program units. The estimated Debt, which means the effort to fix such issue, is equal to 3 minutes per method relying on the singleton. It is not rare that hundreds of methods rely on the singleton and that it takes hours to get rid of a singleton, refactoring the way just explained above. The severity of each singleton issue is Critical because as explained, using a the singleton pattern can really prevent the whole program to be testable and maintained.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1210:AvoidTheSingletonPattern", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
No type matched
Validated Rule: Don't assign static fields from instance methods |
• How to Fix Issues of this Rule: If the static field is just assigned once in the program lifetime, make sure to declare it as readonly and assign it inline, or from the static constructor. In Object-Oriented-Programming the natural artifact to hold states that can be modified is instance fields. Hence to fix violations of this rule, make sure to hold assignable states through instance fields, not through static fields.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1211:DontAssignStaticFieldsFromInstanceMethods", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
No field matched
Validated Rule: Avoid empty interfaces |
• How to Fix Issues of this Rule: Remove the interface or add members to it. If the empty interface is being used to mark a set of types, replace the interface with a custom attribute. The estimated Debt, which means the effort to fix such issue, is equal to 10 minutes to discard an empty interface plus 3 minutes per type implementing an empty interface.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1212:AvoidEmptyInterfaces", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
No type matched
Rule Violated: ND1213 Avoid types initialization cycles |
• How to Fix Issues of this Rule: Types initialization cycles create confusion and unexpected behaviors. If several states hold by several classes must be initialized during the first access of any of those classes, a better design option is to create a dedicated class whose responsibility is to initialize and hold all these states. The estimated Debt, which means the effort to fix such issue, is equal to 20 minutes per cycle plus 10 minutes per type class constructor involved in the cycle.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1213:AvoidTypesInitializationCycles", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
9 methods matched |
Formatting: bold✱ means added ● means code was changed |
API Breaking Changes
Validated Rule: API Breaking Changes: Types |
• How to Fix Issues of this Rule: Make sure that public types that used to be presented to clients, still remain public now, and in the future. If a public type must really be removed, you can tag it with System.ObsoleteAttribute with a workaround message during a few public releases, until it gets removed definitely. Notice that this rule doesn't match types removed that were tagged as obsolete. Issues of this rule have a severity equal to High because an API Breaking change can provoque significant friction with consumers of the API.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1500:APIBreakingChangesTypes", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
No type matched
Validated Rule: API Breaking Changes: Methods |
• How to Fix Issues of this Rule: Make sure that public methods that used to be presented to clients, still remain public now, and in the future. If a public method must really be removed, you can tag it with System.ObsoleteAttribute with a workaround message during a few public releases, until it gets removed definitely. Notice that this rule doesn't match methods removed that were tagged as obsolete. Issues of this rule have a severity equal to High because an API Breaking change can provoque significant friction with consumers of the API.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1501:APIBreakingChangesMethods", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
No method matched
Validated Rule: API Breaking Changes: Fields |
• How to Fix Issues of this Rule: Make sure that public fields that used to be presented to clients, still remain public now, and in the future. If a public field must really be removed, you can tag it with System.ObsoleteAttribute with a workaround message during a few public releases, until it gets removed definitely. Notice that this rule doesn't match fields removed that were tagged as obsolete. Issues of this rule have a severity equal to High because an API Breaking change can provoque significant friction with consumers of the API.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1502:APIBreakingChangesFields", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
No field matched
Validated Rule: API Breaking Changes: Interfaces and Abstract Classes |
• How to Fix Issues of this Rule: Make sure that the public contracts of interfaces and abstract classes that used to be presented to clients, remain stable now, and in the future. If a public contract must really be changed, you can tag abstract methods that will be removed with System.ObsoleteAttribute with a workaround message during a few public releases, until it gets removed definitely. Issues of this rule have a severity equal to High because an API Breaking change can provoque significant friction with consummers of the API. The severity is not set to Critical because an interface is not necessarily meant to be implemented by the consummer of the API.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1503:APIBreakingChangesInterfacesAndAbstractClasses", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
No type matched
Validated Rule: Broken serializable types |
• How to Fix Issues of this Rule: Make sure that the serialization process of serializable types remains stable now, and in the future. Else you'll have to deal with Version Tolerant Serialization that is explained here: https://msdn.microsoft.com/en-us/library/ms229752(v=vs.110).aspx Issues of this rule have a severity equal to High because an API Breaking change can provoque significant friction with consummers of the API.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1504:BrokenSerializableTypes", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
No type matched
Validated Rule: Avoid changing enumerations Flags status |
• How to Fix Issues of this Rule: Make sure the FlagsAttribute status of each enumeration remains stable now, and in the future.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1505:AvoidChangingEnumerationsFlagsStatus", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
No type matched
Code Coverage
Rule Violated: ND1600 Code should be tested |
• How to Fix Issues of this Rule: Write unit tests to test and cover the methods and their parent types matched by this rule.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1600:CodeShouldBeTested", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
53 methods matched |
Formatting: bold✱ means added ● means code was changed |
53 methods | Percentage Coverage | # lines of code (LOC) | # lines of code not covered | Cyclomatic Complexity (CC) | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|---|
CheckArgumentRange(String,Int32 ,Int32,Int32) | |c50|14| 50% | |m1|16| 2 | |m0|10| 1 | |m9|11| 3 | |m4|14| 4min 10s | 0010min | NodaTime.Utility.Preconditions .CheckArgumentRange(String,Int32 ,Int32,Int32) |
DebugCheckArgument(Boolean ,String ,String,Object[]) ● | |c33|15| 33.33% | |m3|12| 3 | |m12|04| 2 | |m9|14| 3 | |m11|05| 7min | 019min | NodaTime.Utility.Preconditions .DebugCheckArgument(Boolean,String ,String,Object[]) |
CheckArgumentRange(String,Int64 ,Int64,Int64) | |c50|13| 50% | |m1|15| 2 | |m0|08| 1 | |m9|12| 3 | |m4|13| 4min 10s | 028min | NodaTime.Utility.Preconditions .CheckArgumentRange(String,Int64 ,Int64,Int64) |
.ctor(Int32,Int64) | |c80|04| 80% | |m7|09| 5 | |m0|09| 1 | |m9|13| 3 | |m2|17| 3min 20s | 037min | NodaTime.Duration..ctor(Int32 ,Int64) |
CheckArgumentRange(String,Double ,Double,Double) | |c50|12| 50% | |m1|17| 2 | |m0|07| 1 | |m14|08| 4 | |m7|10| 5min | 047min | NodaTime.Utility.Preconditions .CheckArgumentRange(String,Double ,Double,Double) |
ValidateGregorianYearMonthDay (Int32,Int32,Int32) ● | |c75|08| 75% | |m12|05| 8 | |m12|05| 2 | |m47|00| 11 | |m24|03| 13min | 057min | NodaTime.Calendars .GregorianYearMonthDayCalculator .ValidateGregorianYearMonthDay (Int32,Int32,Int32) |
FromTimeZoneInfo(TimeZoneInfo) ● | |c73|09| 73.33% | |m24|01| 15 | |m37|03| 4 | |m14|09| 4 | |m25|02| 14min | 066min | NodaTime.TimeZones.BclDateTimeZone .FromTimeZoneInfo(TimeZoneInfo) |
ForOrdinal(CalendarOrdinal) | |c85|02| 85.71% | |m10|06| 7 | |m0|06| 1 | |m14|10| 4 | |m3|15| 3min 48s | 075min | NodaTime.CalendarSystem.ForOrdinal (CalendarOrdinal) |
FromUnixAdjustmentRule (TimeZoneInfo ,TimeZoneInfo+AdjustmentRule) ● | |c0|16| 0% | |m14|03| 9 | |m100|00| 9 | |m28|05| 7 | |m100|00| 49min | 084min 36s | NodaTime.TimeZones .BclDateTimeZone+BclAdjustmentRule .FromUnixAdjustmentRule (TimeZoneInfo ,TimeZoneInfo+AdjustmentRule) |
ValidateEra(Era) ● | |c66|10| 66.67% | |m3|14| 3 | |m0|17| 1 | |m9|15| 3 | |m4|12| 4min 27s | 093min 19s | NodaTime.Calendars.GJEraCalculator .ValidateEra(Era) |
ValidateEra(Era) | |c66|11| 66.67% | |m3|13| 3 | |m0|16| 1 | |m4|17| 2 | |m3|16| 3min 34s | 103min 1s | NodaTime.Calendars .SingleEraCalculator.ValidateEra (Era) |
.ctor(Int32,Int32) | |c75|07| 75% | |m5|11| 4 | |m0|19| 1 | |m19|07| 5 | |m8|09| 6min | 112min 58s | NodaTime.LocalTime..ctor(Int32 ,Int32) |
.ctor(Int32,Int32,Int32) | |c80|05| 80% | |m7|08| 5 | |m0|18| 1 | |m28|04| 7 | |m10|06| 7min | 122min 36s | NodaTime.LocalTime..ctor(Int32 ,Int32,Int32) |
ConvertUnixRuleToBclAdjustmentRu le (TimeZoneInfo+AdjustmentRule ,String,String,TimeSpan,TimeSpan ,Boolean) ✱ | |c77|06| 77.27% | |m36|00| 22 | |m50|01| 5 | |m42|02| 10 | |m62|01| 31min | 132min 8s | NodaTime.TimeZones .BclDateTimeZone+BclAdjustmentRule .ConvertUnixRuleToBclAdjustmentRul e(TimeZoneInfo+AdjustmentRule ,String,String,TimeSpan,TimeSpan ,Boolean) |
.ctor(Int32,Int32,Int32,Int32 ) | |c83|03| 83.33% | |m8|07| 6 | |m0|15| 1 | |m38|03| 9 | |m10|07| 7min | 142min 3s | NodaTime.LocalTime..ctor(Int32 ,Int32,Int32,Int32) |
CompareTo(Object) | |c0|18| 0% | |m5|10| 4 | |m37|02| 4 | |m4|16| 2 | |m19|04| 11min | 182min 0s | NodaTime.AnnualDate.CompareTo (Object) |
AtStartOfDay(LocalDate) | |c90|00| 90% | |m15|02| 10 | |m0|12| 1 | |m23|06| 6 | |m7|11| 5min | 192min 0s | NodaTime.DateTimeZone.AtStartOfDay (LocalDate) |
ToString() | |c0|17| 0% | |m0|18| 1 | |m0|11| 1 | |m0|19| 1 | |m0|19| 2min 17s | 172min 0s | NodaTime.LocalDateTime.ToString() |
get_Noon() | |c0|19| 0% | |m0|19| 1 | |m0|14| 1 | |m0|18| 1 | |m0|18| 2min 17s | 152min 0s | NodaTime.LocalTime.get_Noon() |
FromHourMinuteSecondMillisecondT ic k(Int32,Int32,Int32,Int32,Int32) | |c87|01| 87.5% | |m12|04| 8 | |m0|13| 1 | |m47|01| 11 | |m9|08| 6min | 162min 0s | NodaTime.LocalTime .FromHourMinuteSecondMillisecondTi ck(Int32,Int32,Int32,Int32,Int32) |
Rule Violated: ND1601 New Types and Methods should be tested |
• How to Fix Issues of this Rule: Write unit-tests to cover the code of most methods and types added since the baseline.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1601:NewMethodsShouldBeTested", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 method matched |
Formatting: bold✱ means added ● means code was changed |
1 method | Percentage Coverage | # lines of code (LOC) | # lines of code not covered | Cyclomatic Complexity (CC) | Debt | Severity | Full Name |
---|---|---|---|---|---|---|---|
.ctor(String,Exception) ✱ | |c0|0| 0% | |m0|0| 1 | |m0|0| 1 | |m0|0| 1 | |m0|0| 2min 0s | 0High | NodaTime.Text .UnparsableValueException..ctor (String,Exception) |
Rule Violated: ND1602 Methods refactored should be tested |
• How to Fix Issues of this Rule: Write unit-tests to cover the code of most methods and classes refactored.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1602:MethodsRefactoredShouldBeTested", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 method matched |
Formatting: bold✱ means added ● means code was changed |
1 method | Percentage Coverage | # lines of code (LOC) | # lines of code not covered | Debt | Severity | Full Name |
---|---|---|---|---|---|---|
FromUnixAdjustmentRule (TimeZoneInfo ,TimeZoneInfo+AdjustmentRule) ● | |c0|0| 0% | |m0|0| 9 | |m0|0| 9 | |m0|0| 9min | 0High | NodaTime.TimeZones .BclDateTimeZone+BclAdjustmentRule .FromUnixAdjustmentRule (TimeZoneInfo ,TimeZoneInfo+AdjustmentRule) |
Rule Violated: ND1603 Assemblies and Namespaces should be tested |
• How to Fix Issues of this Rule: Write unit and integration tests to cover, even partially, code elements matched by this rule. Then use issues of the rules Code should be tested, New Types and Methods should be tested and Methods refactored should be tested to write more tests where it matters most, and eventually refactor some code to make it more testable.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1603:AssembliesNamespacesAndTypesShouldBeTested", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 namespace matched |
Formatting: bold✱ means added ● means code was changed |
1 namespace | # lines of code not covered | Debt | Severity | Full Name |
---|---|---|---|---|
JetBrains.Annotations | |m0|0| 13 | |m0|0| 4min 0s | 0Low | JetBrains.Annotations |
Rule Violated: ND1604 Types almost 100% tested should be 100% tested |
• How to Fix Issues of this Rule: Write more unit-tests dedicated to cover code not covered yet. If you find some hard-to-test code, it is certainly a sign that this code is not well designed and hence, needs refactoring.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1604:TypesAlmost100PercentTestedShouldBe100PercentTested", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
17 types matched |
Formatting: bold✱ means added ● means code was changed |
17 types | Percentage Coverage | # lines of code (LOC) | # lines of code not covered | methodsCulprit | Debt | Severity | Full Name |
---|---|---|---|---|---|---|---|
TzdbDateTimeZoneSource ● | |c98|09| 98.09% | |m100|00| 157 | |m100|01| 3 | |m50|04| 1 method | |m100|01| 3min 53s | 05High | NodaTime.TimeZones .TzdbDateTimeZoneSource |
DateTimeZone | |c98|00| 98.95% | |m51|01| 95 | |m0|09| 1 | |m50|05| 1 method | |m0|09| 2min 0s | 04High | NodaTime.DateTimeZone |
ZonedDateTime | |c98|01| 98.92% | |m50|02| 93 | |m0|10| 1 | |m50|06| 1 method | |m0|10| 2min 0s | 07High | NodaTime.ZonedDateTime |
LocalDatePatternParser+LocalDate Pa rseBucket | |c98|02| 98.75% | |m40|03| 80 | |m0|06| 1 | |m50|03| 1 method | |m0|06| 2min 0s | 06High | NodaTime.Text .LocalDatePatternParser+LocalDateP arseBucket |
ZonedDateTimePatternParser | |c98|03| 98.72% | |m38|04| 78 | |m0|07| 1 | 13no method | |m0|07| 2min 0s | 01High | NodaTime.Text .ZonedDateTimePatternParser |
PrecalculatedDateTimeZone ● | |c98|04| 98.59% | |m33|05| 71 | |m0|11| 1 | |m50|01| 1 method | |m0|11| 2min 0s | 00High | NodaTime.TimeZones .PrecalculatedDateTimeZone |
DatePatternHelper | |c95|15| 95.59% | |m31|06| 68 | |m100|00| 3 | |m100|00| 2 methods
| |m100|00| 3min 53s | 03High | NodaTime.Text.Patterns .DatePatternHelper |
OffsetDateTimePatternParser | |c98|05| 98.48% | |m29|07| 66 | |m0|16| 1 | 15no method | |m0|16| 2min 0s | 02High | NodaTime.Text .OffsetDateTimePatternParser |
GregorianYearMonthDayCalculator ● | |c96|11| 96.92% | |m28|08| 65 | |m50|03| 2 | |m50|02| 1 method | |m49|03| 2min 56s | 08High | NodaTime.Calendars .GregorianYearMonthDayCalculator |
ZonedDateTimePatternParser+Zoned Da teTimeParseBucket ● | |c98|06| 98.39% | |m26|09| 62 | |m0|14| 1 | |m50|07| 1 method | |m0|14| 2min 0s | 14High | NodaTime.Text .ZonedDateTimePatternParser+ZonedD ateTimeParseBucket |
YearMonth ● | |c98|07| 98.33% | |m24|10| 60 | |m0|12| 1 | 16no method | |m0|12| 2min 0s | 13High | NodaTime.YearMonth |
TzdbStreamData ● | |c98|08| 98.18% | |m20|11| 55 | |m0|13| 1 | |m50|12| 1 method | |m0|13| 2min 0s | 16High | NodaTime.TimeZones.IO .TzdbStreamData |
PartialZoneIntervalMap ● | |c96|13| 96.15% | |m18|12| 52 | |m50|02| 2 | |m50|08| 1 method | |m49|02| 2min 56s | 15High | NodaTime.TimeZones .PartialZoneIntervalMap |
UmAlQuraYearMonthDayCalculator | |c97|10| 97.96% | |m17|13| 50 | |m0|15| 1 | |m50|09| 1 method | |m0|15| 2min 0s | 10High | NodaTime.Calendars .UmAlQuraYearMonthDayCalculator |
Resolvers | |c95|14| 95.74% | |m14|14| 47 | |m50|04| 2 | |m50|10| 1 method | |m49|04| 2min 56s | 09High | NodaTime.TimeZones.Resolvers |
OffsetDatePatternParser | |c95|16| 95.24% | |m10|15| 42 | |m50|05| 2 | 14no method | |m49|05| 2min 56s | 12High | NodaTime.Text .OffsetDatePatternParser |
AnnualDatePatternParser | |c96|12| 96.43% | |m0|16| 28 | |m0|08| 1 | |m50|11| 1 method | |m0|08| 2min 0s | 11High | NodaTime.Text .AnnualDatePatternParser |
Rule Violated: ND1605 Namespaces almost 100% tested should be 100% tested |
• How to Fix Issues of this Rule: Write more unit-tests dedicated to cover code not covered yet in the namespace. If you find some hard-to-test code, it is certainly a sign that this code is not well designed and hence, needs refactoring.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1605:NamespacesAlmost100PercentTestedShouldBe100PercentTested", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
3 namespaces matched |
Formatting: bold✱ means added ● means code was changed |
Rule Violated: ND1606 Types that used to be 100% covered by tests should still be 100% covered |
• How to Fix Issues of this Rule: Write more unit-tests dedicated to cover code not covered anymore. If you find some hard-to-test code, it is certainly a sign that this code is not well designed and hence, needs refactoring. You'll find code impossible to cover by unit-tests, like calls to MessageBox.Show(). An infrastructure must be defined to be able to mock such code at test-time.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1606:TypesThatUsedToBe100PercentCoveredByTestsShouldStillBe100PercentCovered", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 method matched |
Formatting: bold✱ means added ● means code was changed |
1 method | Percentage Coverage | Debt | Severity | Full Name |
---|---|---|---|---|
.ctor(String,Exception) ✱ | |c0|0| 0% | |m0|0| 2min 0s | 0High | NodaTime.Text .UnparsableValueException..ctor (String,Exception) |
Validated Rule: Types tagged with FullCoveredAttribute should be 100% covered |
• How to Fix Issues of this Rule: Write more unit-tests dedicated to cover code of matched classes not covered yet. If you find some hard-to-test code, it is certainly a sign that this code is not well designed and hence, needs refactoring.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1607:TypesTaggedWithFullCoveredAttributeShouldBe100PercentCovered", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
No method matched
Rule Violated: ND1608 Types 100% covered should be tagged with FullCoveredAttribute |
• How to Fix Issues of this Rule: Just tag types 100% covered by tests with the FullCoveredAttribute class that can be found in NDepend.API.dll, or by an attribute of yours with this name defined in any namespace in your own code.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1608:Types100PercentCoveredShouldBeTaggedWithFullCoveredAttribute", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
186 types matched |
Formatting: bold✱ means added ● means code was changed |
186 types | # lines of code (LOC) | Debt | Severity | Full Name |
---|---|---|---|---|
AmbiguousTimeException | |m4|10| 9 | |m0|06| 3min 0s | 06Low | NodaTime.AmbiguousTimeException |
CalendarSystem+PersianCalendars | |m1|14| 3 | |m0|05| 3min 0s | 05Low | NodaTime .CalendarSystem+PersianCalendars |
CalendarSystem+IslamicCalendars | |m5|09| 12 | |m0|07| 3min 0s | 07Low | NodaTime .CalendarSystem+IslamicCalendars |
CalendarSystem+MiscellaneousCale nd ars | |m1|13| 3 | |m0|09| 3min 0s | 09Low | NodaTime .CalendarSystem+MiscellaneousCalen dars |
CalendarSystem+GregorianJulianCa le ndars | |m1|15| 3 | |m0|08| 3min 0s | 08Low | NodaTime .CalendarSystem+GregorianJulianCal endars |
CalendarSystem+HebrewCalendars | |m0|19| 1 | |m0|01| 3min 0s | 01Low | NodaTime .CalendarSystem+HebrewCalendars |
DateAdjusters | |m14|08| 30 | |m0|00| 3min 0s | 00Low | NodaTime.DateAdjusters |
DateInterval ● | |m20|06| 40 | |m0|02| 3min 0s | 02Low | NodaTime.DateInterval |
DateTimeZoneProviders | |m1|12| 4 | |m0|04| 3min 0s | 04Low | NodaTime.DateTimeZoneProviders |
DateTimeZoneProviders+TzdbHolder | |m0|17| 1 | |m0|03| 3min 0s | 03Low | NodaTime .DateTimeZoneProviders+TzdbHolder |
DateTimeZoneProviders+BclHolder | |m0|18| 1 | |m0|16| 3min 0s | 16Low | NodaTime .DateTimeZoneProviders+BclHolder |
Instant ● | |m54|02| 107 | |m0|15| 3min 0s | 15Low | NodaTime.Instant |
Interval | |m20|07| 40 | |m0|17| 3min 0s | 17Low | NodaTime.Interval |
LocalDate ● | |m68|00| 134 | |m0|19| 3min 0s | 19Low | NodaTime.LocalDate |
LocalInstant | |m22|04| 44 | |m0|18| 3min 0s | 18Low | NodaTime.LocalInstant |
NodaConstants ● | |m2|11| 6 | |m0|11| 3min 0s | 11Low | NodaTime.NodaConstants |
Offset | |m29|03| 59 | |m0|10| 3min 0s | 10Low | NodaTime.Offset |
OffsetDate | |m20|05| 41 | |m0|12| 3min 0s | 12Low | NodaTime.OffsetDate |
OffsetDateTime | |m62|01| 122 | |m0|14| 3min 0s | 14Low | NodaTime.OffsetDateTime |
OffsetDateTime+Comparer | |m1|16| 3 | |m0|13| 3min 0s | 13Low | NodaTime.OffsetDateTime+Comparer |
Validated Rule: Methods should have a low C.R.A.P score |
• How to Fix Issues of this Rule: In such situation, it is recommended to both refactor the complex method logic into several smaller and less complex methods (that might belong to some new types especially created), and also write unit-tests to full cover the refactored logic. You'll find code impossible to cover by unit-tests, like calls to MessageBox.Show(). An infrastructure must be defined to be able to mock such code at test-time.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1609:MethodsShouldHaveALowCRAPScore", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
No method matched
Dead Code
|
Rule Violated: ND1700 Potentially Dead Types |
• How to Fix Issues of this Rule: Static analysis cannot provide an exact list of dead types, because there are several ways to use a type dynamically (like through reflection). For each type matched by this query, first investigate if the type is used somehow (like through reflection). If the type is really never used, it is important to remove it to avoid maintaining useless code. If you estimate the code of the type might be used in the future, at least comment it, and provide an explanatory comment about the future intentions. If a type is used somehow, but still is matched by this rule, you can tag it with the attribute IsNotDeadCodeAttribute found in NDepend.API.dll to avoid matching the type again. You can also provide your own attribute for this need, but then you'll need to adapt this code rule. Issues of this rule have a Debt equal to 15 minutes because it only takes a short while to investigate if a type can be safely discarded. The Annual Interest of issues of this rule, the annual cost to not fix such issue, is proportional to the type #lines of code, because the bigger the type is, the more it slows down maintenance.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1700:PotentiallyDeadTypes", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 type matched |
Formatting: bold✱ means added ● means code was changed |
1 type | depth | TypesUsingMe | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|
DateTimeZoneWriter | |m0|0| 0 | 0no type | |m0|0| 15min | 01h 24min | NodaTime.TimeZones.IO .DateTimeZoneWriter |
Rule Violated: ND1701 Potentially Dead Methods |
• How to Fix Issues of this Rule: Static analysis cannot provide an exact list of dead methods, because there are several ways to invoke a method dynamically (like through reflection). For each method matched by this query, first investigate if the method is invoked somehow (like through reflection). If the method is really never invoked, it is important to remove it to avoid maintaining useless code. If you estimate the code of the method might be used in the future, at least comment it, and provide an explanatory comment about the future intentions. If a method is invoked somehow, but still is matched by this rule, you can tag it with the attribute IsNotDeadCodeAttribute found in NDepend.API.dll to avoid matching the method again. You can also provide your own attribute for this need, but then you'll need to adapt this code rule. Issues of this rule have a Debt equal to 10 minutes because it only takes a short while to investigate if a method can be safely discarded. On top of these 10 minutes, the depth of usage of such method adds up 3 minutes per unity because dead method only called by dead code takes a bit more time to be investigated. The Annual Interest of issues of this rule, the annual cost to not fix such issue, is proportional to the type #lines of code, because the bigger the method is, the more it slows down maintenance.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1701:PotentiallyDeadMethods", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
47 methods matched |
Formatting: bold✱ means added ● means code was changed |
47 methods | depth | MethodsCallingMe | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|
get_LocalDateTime() | |m0|08| 0 | 08no method | |m0|08| 10min | 119min | NodaTime.AmbiguousTimeException .get_LocalDateTime() |
get_OneWeek() | |m0|07| 0 | 07no method | |m0|07| 10min | 109min | NodaTime.Duration.get_OneWeek() |
get_OneDay() | |m0|10| 0 | 10no method | |m0|10| 10min | 099min | NodaTime.Duration.get_OneDay() |
get_TimeSinceEpoch() | |m0|09| 0 | 09no method | |m0|09| 10min | 129min | NodaTime.Instant .get_TimeSinceEpoch() |
get_YearMonthDayCalendar() | |m0|03| 0 | 03no method | |m0|03| 10min | 079min | NodaTime.LocalDate .get_YearMonthDayCalendar() |
op_Inequality(LocalInstant ,LocalInstant) | |m0|06| 0 | 06no method | |m0|06| 10min | 089min | NodaTime.LocalInstant .op_Inequality(LocalInstant ,LocalInstant) |
Parse(String) ● | |m0|04| 0 | 04no method | |m0|04| 10min | 0213min | NodaTime.YearMonthDay.Parse(String ) |
op_LessThan(YearMonthDay ,YearMonthDay) | |m0|05| 0 | 05no method | |m0|05| 10min | 179min | NodaTime.YearMonthDay.op_LessThan (YearMonthDay,YearMonthDay) |
op_GreaterThan(YearMonthDay ,YearMonthDay) | |m0|11| 0 | 11no method | |m0|11| 10min | 189min | NodaTime.YearMonthDay .op_GreaterThan(YearMonthDay ,YearMonthDay) |
Parse(String) ● | |m0|17| 0 | 17no method | |m0|17| 10min | 0313min | NodaTime.YearMonthDayCalendar .Parse(String) |
op_Inequality (YearMonthDayCalendar ,YearMonthDayCalendar) | |m0|16| 0 | 16no method | |m0|16| 10min | 169min | NodaTime.YearMonthDayCalendar .op_Inequality (YearMonthDayCalendar ,YearMonthDayCalendar) |
get_Count() | |m0|19| 0 | 19no method | |m0|19| 10min | 139min | NodaTime.Utility.Cache<TKey,TValue >.get_Count() |
get_Keys() | |m0|18| 0 | 18no method | |m0|18| 10min | 0510min | NodaTime.Utility.Cache<TKey,TValue >.get_Keys() |
Clear() | |m100|02| 1 | |m100|02| 1 method | |m100|02| 13min | 0610min | NodaTime.Utility.Cache<TKey,TValue >.Clear() |
ClearCache() | |m0|13| 0 | 13no method | |m0|13| 10min | 149min | NodaTime.Globalization .NodaFormatInfo.ClearCache() |
Write(IDateTimeZoneWriter) | |m0|12| 0 | 12no method | |m0|12| 10min | 0411min | NodaTime.TimeZones .FixedDateTimeZone.Write (IDateTimeZoneWriter) |
Write(IDateTimeZoneWriter) | |m0|15| 0 | 15no method | |m0|15| 10min | 0024min | NodaTime.TimeZones .PrecalculatedDateTimeZone.Write (IDateTimeZoneWriter) |
Write(IDateTimeZoneWriter) | |m100|00| 1 | |m100|00| 1 method | |m100|00| 13min | 0115min | NodaTime.TimeZones .StandardDaylightAlternatingMap .Write(IDateTimeZoneWriter) |
op_Equality(Transition ,Transition) | |m100|01| 1 | |m100|01| 1 method | |m100|01| 13min | 159min | NodaTime.TimeZones.Transition .op_Equality(Transition,Transition ) |
op_Inequality(Transition ,Transition) | |m0|14| 0 | 14no method | |m0|14| 10min | 199min | NodaTime.TimeZones.Transition .op_Inequality(Transition ,Transition) |
Validated Rule: Potentially Dead Fields |
• How to Fix Issues of this Rule: Static analysis cannot provide an exact list of dead fields, because there are several ways to assign or read a field dynamically (like through reflection). For each field matched by this query, first investigate if the field is used somehow (like through reflection). If the field is really never used, it is important to remove it to avoid maintaining a useless code element. If a field is used somehow, but still is matched by this rule, you can tag it with the attribute IsNotDeadCodeAttribute found in NDepend.API.dll to avoid matching the field again. You can also provide your own attribute for this need, but then you'll need to adapt this code rule. Issues of this rule have a Debt equal to 10 minutes because it only takes a short while to investigate if a method can be safely discarded. The Annual Interest of issues of this rule, the annual cost to not fix such issue, is set by default to 8 minutes per unused field matched.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1702:PotentiallyDeadFields", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
No field matched
Validated Rule: Wrong usage of IsNotDeadCodeAttribute |
• How to Fix Issues of this Rule: Just remove IsNotDeadCodeAttribute tagging of types, methods and fields matched by this rule because this tag is not useful anymore.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1703:WrongUsageOfIsNotDeadCodeAttribute", Justification="...")] This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
No member matched
Code Diff Summary
Code Query: New assemblies |
No assembly matched
Code Query: Assemblies removed |
No assembly matched
Code Query: Assemblies where code was changed |
1 assembly matched
1 assembly | # lines of code (LOC) | oldNbLinesOfCode | delta | Full Name |
---|---|---|---|---|
NodaTime ● | |m0|0| 7 054 | |m0|0| 6 990 | |m0|0| 64 | NodaTime |
Code Query: New namespaces |
No namespace matched
Code Query: Namespaces removed |
No namespace matched
Code Query: Namespaces where code was changed |
11 namespaces matched
11 namespaces | # lines of code (LOC) | oldNbLinesOfCode | delta | Full Name |
---|---|---|---|---|
NodaTime ● | |m100|00| 1 974 | |m100|00| 1 951 | |m85|01| 23 | NodaTime |
NodaTime.Xml ● | |m5|08| 109 | |m4|08| 100 | |m35|02| 9 | NodaTime.Xml |
NodaTime.Utility ● | |m4|09| 87 | |m4|09| 87 | |m3|06| 0 | NodaTime.Utility |
NodaTime.Globalization ● | |m7|06| 141 | |m7|06| 141 | |m3|05| 0 | NodaTime.Globalization |
NodaTime.Fields ● | |m5|07| 117 | |m5|07| 117 | |m3|08| 0 | NodaTime.Fields |
NodaTime.Calendars ● | |m38|03| 769 | |m39|03| 768 | |m7|04| 1 | NodaTime.Calendars |
NodaTime.Annotations ● | |m0|10| 3 | |m0|10| 3 | |m3|07| 0 | NodaTime.Annotations |
NodaTime.TimeZones ● | |m55|02| 1 092 | |m54|02| 1 065 | |m100|00| 27 | NodaTime.TimeZones |
NodaTime.TimeZones.IO ● | |m14|05| 298 | |m15|05| 299 | |m0|10| -1 | NodaTime.TimeZones.IO |
NodaTime.Text ● | |m94|01| 1 872 | |m95|01| 1 866 | |m25|03| 6 | NodaTime.Text |
NodaTime.Text.Patterns ● | |m24|04| 489 | |m25|04| 490 | |m0|09| -1 | NodaTime.Text.Patterns |
Code Query: New types |
1 type matched
1 type | # lines of code (LOC) | Full Name |
---|---|---|
ValidatedNotNullAttribute ✱ | |m0|0| 0 | NodaTime.Annotations .ValidatedNotNullAttribute |
Code Query: Types removed |
1 type matched
1 type | # lines of code (LOC) | Full Name |
---|---|---|
0N/A | NodaTime.TimeZones .IZoneIntervalMapWithMinMax |
Code Query: Types where code was changed |
51 types matched
51 types | # lines of code (LOC) | oldNbLinesOfCode | delta | Full Name |
---|---|---|---|---|
DateInterval ● | |m18|10| 40 | |m18|10| 40 | |m13|09| 0 | NodaTime.DateInterval |
Instant ● | |m50|04| 107 | |m49|04| 107 | |m13|10| 0 | NodaTime.Instant |
LocalDate ● | |m62|02| 134 | |m62|02| 133 | |m18|05| 1 | NodaTime.LocalDate |
LocalDateTime ● | |m65|01| 140 | |m63|01| 137 | |m27|02| 3 | NodaTime.LocalDateTime |
NodaConstants ● | |m1|18| 6 | |m2|18| 8 | |m4|18| -2 | NodaTime.NodaConstants |
Period ● | |m92|00| 196 | |m82|00| 177 | |m100|00| 19 | NodaTime.Period |
YearMonth ● | |m27|08| 60 | |m26|08| 58 | |m22|04| 2 | NodaTime.YearMonth |
YearMonthDay ● | |m10|13| 23 | |m9|14| 23 | |m13|07| 0 | NodaTime.YearMonthDay |
YearMonthDayCalendar ● | |m7|17| 18 | |m7|17| 18 | |m13|11| 0 | NodaTime.YearMonthDayCalendar |
XmlSchemaDefinition ● | |m48|05| 103 | |m43|05| 94 | |m54|01| 9 | NodaTime.Xml.XmlSchemaDefinition |
Preconditions ● | |m14|11| 32 | |m14|11| 32 | |m13|16| 0 | NodaTime.Utility.Preconditions |
NodaFormatInfo ● | |m55|03| 119 | |m55|03| 119 | |m13|13| 0 | NodaTime.Globalization .NodaFormatInfo |
NodaFormatInfo+EraDescription ● | |m8|14| 20 | |m8|15| 20 | |m13|12| 0 | NodaTime.Globalization .NodaFormatInfo+EraDescription |
PatternResources ● | |m0|19| 2 | |m0|19| 2 | |m13|15| 0 | NodaTime.Globalization .PatternResources |
FixedLengthDatePeriodField ● | |m14|12| 32 | |m14|12| 32 | |m13|14| 0 | NodaTime.Fields .FixedLengthDatePeriodField |
BadiYearMonthDayCalculator ● | |m39|06| 85 | |m39|06| 85 | |m13|17| 0 | NodaTime.Calendars .BadiYearMonthDayCalculator |
GJEraCalculator ● | |m7|16| 18 | |m7|16| 18 | |m13|06| 0 | NodaTime.Calendars.GJEraCalculator |
GJYearMonthDayCalculator ● | |m8|15| 20 | |m9|13| 23 | |m0|19| -3 | NodaTime.Calendars .GJYearMonthDayCalculator |
GregorianYearMonthDayCalculator ● | |m30|07| 65 | |m29|07| 65 | |m13|08| 0 | NodaTime.Calendars .GregorianYearMonthDayCalculator |
IslamicYearMonthDayCalculator ● | |m22|09| 49 | |m21|09| 47 | |m22|03| 2 | NodaTime.Calendars .IslamicYearMonthDayCalculator |
Code Query: Heuristic to find types moved from one namespace or assembly to another |
No type matched
Code Query: Types directly using one or several types changed |
124 types matched
124 types | typesChangedUsed | Full Name |
---|---|---|
AmbiguousTimeException | |m14|13| 2 types | NodaTime.AmbiguousTimeException |
AnnualDate | |m71|01| First 5 of 6 types | NodaTime.AnnualDate |
CalendarSystem | |m57|03| 5 types | NodaTime.CalendarSystem |
CalendarSystem+PersianCalendars | |m0|16| 1 type | NodaTime .CalendarSystem+PersianCalendars |
CalendarSystem+IslamicCalendars | |m0|19| 1 type | NodaTime .CalendarSystem+IslamicCalendars |
CalendarSystem+MiscellaneousCale nd ars | |m0|18| 1 type | NodaTime .CalendarSystem+MiscellaneousCalen dars |
CalendarSystem+GregorianJulianCa le ndars | |m0|17| 1 type | NodaTime .CalendarSystem+GregorianJulianCal endars |
DateAdjusters | |m28|07| 3 types | NodaTime.DateAdjusters |
DateTimeZone | |m100|00| First 5 of 8 types | NodaTime.DateTimeZone |
DateTimeZoneProviders+TzdbHolder | |m0|15| 1 type | NodaTime .DateTimeZoneProviders+TzdbHolder |
Duration | |m14|12| 2 types | NodaTime.Duration |
IClock | |m0|14| 1 type | NodaTime.IClock |
Interval | |m28|09| 3 types | NodaTime.Interval |
LocalInstant | |m28|10| 3 types | NodaTime.LocalInstant |
LocalTime | |m57|04| 5 types | NodaTime.LocalTime |
Offset | |m14|11| 2 types | NodaTime.Offset |
OffsetDate | |m42|06| 4 types | NodaTime.OffsetDate |
OffsetDateTime | |m71|02| First 5 of 6 types | NodaTime.OffsetDateTime |
OffsetDateTime+LocalComparer | |m28|08| 3 types | NodaTime .OffsetDateTime+LocalComparer |
OffsetTime | |m42|05| 4 types | NodaTime.OffsetTime |
Code Query: Types indirectly using one or several types changed |
170 types matched
170 types | depthOfUsingTypesChanged | typesChangedDirectlyUsed | Full Name |
---|---|---|---|
AmbiguousTimeException | |m0|06| 1 | |m25|13| 2 types | NodaTime.AmbiguousTimeException |
AnnualDate | |m0|05| 1 | |m75|01| First 5 of 6 types | NodaTime.AnnualDate |
CalendarSystem | |m0|07| 1 | |m62|03| 5 types | NodaTime.CalendarSystem |
CalendarSystem+PersianCalendars | |m0|09| 1 | |m12|16| 1 type | NodaTime .CalendarSystem+PersianCalendars |
CalendarSystem+IslamicCalendars | |m0|08| 1 | |m12|19| 1 type | NodaTime .CalendarSystem+IslamicCalendars |
CalendarSystem+MiscellaneousCale nd ars | |m0|01| 1 | |m12|18| 1 type | NodaTime .CalendarSystem+MiscellaneousCalen dars |
CalendarSystem+GregorianJulianCa le ndars | |m0|00| 1 | |m12|17| 1 type | NodaTime .CalendarSystem+GregorianJulianCal endars |
DateAdjusters | |m0|02| 1 | |m37|07| 3 types | NodaTime.DateAdjusters |
DateTimeZone | |m0|04| 1 | |m100|00| First 5 of 8 types | NodaTime.DateTimeZone |
DateTimeZoneProviders+TzdbHolder | |m0|03| 1 | |m12|15| 1 type | NodaTime .DateTimeZoneProviders+TzdbHolder |
Duration | |m0|16| 1 | |m25|12| 2 types | NodaTime.Duration |
IClock | |m0|15| 1 | |m12|14| 1 type | NodaTime.IClock |
Interval | |m0|17| 1 | |m37|09| 3 types | NodaTime.Interval |
LocalInstant | |m0|19| 1 | |m37|10| 3 types | NodaTime.LocalInstant |
LocalTime | |m0|18| 1 | |m62|04| 5 types | NodaTime.LocalTime |
Offset | |m0|11| 1 | |m25|11| 2 types | NodaTime.Offset |
OffsetDate | |m0|10| 1 | |m50|06| 4 types | NodaTime.OffsetDate |
OffsetDateTime | |m0|12| 1 | |m75|02| First 5 of 6 types | NodaTime.OffsetDateTime |
OffsetDateTime+LocalComparer | |m0|14| 1 | |m37|08| 3 types | NodaTime .OffsetDateTime+LocalComparer |
OffsetTime | |m0|13| 1 | |m50|05| 4 types | NodaTime.OffsetTime |
Code Query: New methods |
35 methods matched
35 methods | # lines of code (LOC) | Full Name |
---|---|---|
get_MaxIsoValue() ✱ | |m0|13| 1 | NodaTime.LocalDateTime .get_MaxIsoValue() |
get_MinIsoValue() ✱ | |m0|12| 1 | NodaTime.LocalDateTime .get_MinIsoValue() |
Add(Period,Period) ✱ | |m0|14| 1 | NodaTime.Period.Add(Period,Period) |
Subtract(Period,Period) ✱ | |m0|11| 1 | NodaTime.Period.Subtract(Period ,Period) |
InternalDaysBetween(LocalDate ,LocalDate) ✱ | |m19|06| 5 | NodaTime.Period .InternalDaysBetween(LocalDate ,LocalDate) |
Between(YearMonth,YearMonth ,PeriodUnits) ✱ | |m61|00| 14 | NodaTime.Period.Between(YearMonth ,YearMonth,PeriodUnits) |
Between(YearMonth,YearMonth) ✱ | |m0|19| 1 | NodaTime.Period.Between(YearMonth ,YearMonth) |
PlusMonths(Int32) ✱ | |m0|17| 1 | NodaTime.YearMonth.PlusMonths (Int32) |
ToString() ✱ | |m0|15| 1 | NodaTime.YearMonth.ToString() |
CreateSchemaType<T> (XmlSchemaType ,XmlSchemaAttribute[]) ✱ | |m28|04| 7 | NodaTime.Xml.XmlSchemaDefinition .CreateSchemaType<T>(XmlSchemaType ,XmlSchemaAttribute[]) |
GenerateTotalDaysByMonth(Int32[] ) ✱ | |m23|05| 6 | NodaTime.Calendars .GJYearMonthDayCalculator .GenerateTotalDaysByMonth(Int32[]) |
GenerateTotalDaysByMonth() ✱ | |m38|01| 9 | NodaTime.Calendars .IslamicYearMonthDayCalculator .GenerateTotalDaysByMonth() |
GenerateTotalDaysByMonth() ✱ | |m38|02| 9 | NodaTime.Calendars .PersianYearMonthDayCalculator .GenerateTotalDaysByMonth() |
.ctor(TestExemptionCategory) ✱ | |m4|10| 2 | NodaTime.Annotations .TestExemptionAttribute..ctor (TestExemptionCategory) |
.ctor(TimeZoneInfo ,IZoneIntervalMap) ✱ | |m9|09| 3 | NodaTime.TimeZones.BclDateTimeZone ..ctor(TimeZoneInfo ,IZoneIntervalMap) |
FixUnixTransitions (BclDateTimeZone+BclAdjustmentRule []) ✱ | |m28|03| 7 | NodaTime.TimeZones.BclDateTimeZone .FixUnixTransitions (BclDateTimeZone+BclAdjustmentRule []) |
get_Start() ✱ | |m0|16| 1 | NodaTime.TimeZones .BclDateTimeZone+BclAdjustmentRule .get_Start() |
get_End() ✱ | |m0|18| 1 | NodaTime.TimeZones .BclDateTimeZone+BclAdjustmentRule .get_End() |
.ctor(ZoneInterval) ✱ | |m14|08| 4 | NodaTime.TimeZones .BclDateTimeZone+BclAdjustmentRule ..ctor(ZoneInterval) |
.ctor(Offset,Offset ,PartialZoneIntervalMap) ✱ | |m14|07| 4 | NodaTime.TimeZones .BclDateTimeZone+BclAdjustmentRule ..ctor(Offset,Offset ,PartialZoneIntervalMap) |
Code Query: Methods removed |
9 methods matched
9 methods | # lines of code (LOC) | Full Name |
---|---|---|
|m60|2| 7 | NodaTime.Xml.XmlSchemaDefinition .CreateSchemaTypeWithAttributes<T> (XmlSchemaType ,XmlSchemaAttribute[]) | |
|m0|8| 1 | NodaTime.Xml.XmlSchemaDefinition .CreatePatternRestriction(String ,XmlSchemaType,String) | |
|m10|6| 2 | NodaTime.Annotations .TestExemptionAttribute..ctor (TestExemptionCategory,String) | |
|m20|5| 3 | NodaTime.TimeZones.BclDateTimeZone ..ctor(TimeZoneInfo,Offset,Offset ,IZoneIntervalMap) | |
|m0|7| 1 | NodaTime.TimeZones.BclDateTimeZone .IsWindowsRule (TimeZoneInfo+AdjustmentRule) | |
|m50|3| 6 | NodaTime.TimeZones .BclDateTimeZone+BclAdjustmentRule ..ctor(Instant,Instant,Offset ,Offset,PartialZoneIntervalMap) | |
|m60|1| 7 | NodaTime.TimeZones .PrecalculatedDateTimeZone..ctor (String,ZoneInterval[] ,IZoneIntervalMapWithMinMax) | |
|m100|0| 11 | NodaTime.TimeZones .PrecalculatedDateTimeZone .ComputeOffset(ZoneInterval[] ,IZoneIntervalMapWithMinMax ,PrecalculatedDateTimeZone+OffsetA ggregator) | |
|m30|4| 4 | NodaTime.Text.PeriodPattern .AppendValue(StringBuilder,Int64 ,String) |
Code Query: Methods where code was changed |
72 methods matched
72 methods | # lines of code (LOC) | oldNbLinesOfCode | delta | Full Name |
---|---|---|---|---|
get_Length() ● | |m0|17| 1 | |m0|17| 1 | |m58|08| 0 | NodaTime.DateInterval.get_Length() |
Union(DateInterval) ● | |m6|06| 4 | |m6|08| 4 | |m58|07| 0 | NodaTime.DateInterval.Union (DateInterval) |
ToDateTimeUtc() ● | |m4|07| 3 | |m4|10| 3 | |m58|10| 0 | NodaTime.Instant.ToDateTimeUtc() |
ToDateTimeOffset() ● | |m4|09| 3 | |m4|09| 3 | |m58|09| 0 | NodaTime.Instant.ToDateTimeOffset( ) |
ToDateTimeUnspecified() ● | |m0|18| 1 | |m0|19| 1 | |m58|06| 0 | NodaTime.LocalDate .ToDateTimeUnspecified() |
FromDateTime(DateTime) ● | |m2|14| 2 | |m2|13| 2 | |m58|03| 0 | NodaTime.LocalDate.FromDateTime (DateTime) |
FromDateTime(DateTime ,CalendarSystem) ● | |m4|08| 3 | |m2|16| 2 | |m62|02| 1 | NodaTime.LocalDate.FromDateTime (DateTime,CalendarSystem) |
ToDateTimeUnspecified() ● | |m6|05| 4 | |m6|07| 4 | |m58|05| 0 | NodaTime.LocalDateTime .ToDateTimeUnspecified() |
FromDateTime(DateTime) ● | |m2|15| 2 | |m2|14| 2 | |m58|04| 0 | NodaTime.LocalDateTime .FromDateTime(DateTime) |
FromDateTime(DateTime ,CalendarSystem) ● | |m4|10| 3 | |m2|15| 2 | |m62|01| 1 | NodaTime.LocalDateTime .FromDateTime(DateTime ,CalendarSystem) |
.cctor() ● | |m4|12| 3 | |m8|04| 5 | |m50|18| -2 | NodaTime.NodaConstants..cctor() |
DaysBetween(LocalDate,LocalDate) ● | |m2|16| 2 | |m8|03| 5 | |m45|19| -3 | NodaTime.Period.DaysBetween (LocalDate,LocalDate) |
Between(LocalDateTime ,LocalDateTime,PeriodUnits) ● | |m100|00| 48 | |m100|00| 48 | |m58|17| 0 | NodaTime.Period.Between (LocalDateTime,LocalDateTime ,PeriodUnits) |
Between(LocalDate,LocalDate ,PeriodUnits) ● | |m27|02| 14 | |m27|02| 14 | |m58|15| 0 | NodaTime.Period.Between(LocalDate ,LocalDate,PeriodUnits) |
Parse(String) ● | |m8|04| 5 | |m8|05| 5 | |m58|12| 0 | NodaTime.YearMonthDay.Parse(String ) |
Parse(String) ● | |m8|03| 5 | |m8|06| 5 | |m58|11| 0 | NodaTime.YearMonthDayCalendar .Parse(String) |
.cctor() ● | |m74|01| 36 | |m53|01| 26 | |m100|00| 10 | NodaTime.Xml.XmlSchemaDefinition. .cctor() |
CreatePatternRestriction<T> (XmlSchemaType,String) ● | |m0|19| 1 | |m0|18| 1 | |m58|14| 0 | NodaTime.Xml.XmlSchemaDefinition .CreatePatternRestriction<T> (XmlSchemaType,String) |
DebugCheckArgument(Boolean ,String ,String,Object[]) ● | |m4|13| 3 | |m4|11| 3 | |m58|13| 0 | NodaTime.Utility.Preconditions .DebugCheckArgument(Boolean,String ,String,Object[]) |
CheckArgument<T>(Boolean,String ,String,T) ● | |m4|11| 3 | |m4|12| 3 | |m58|16| 0 | NodaTime.Utility.Preconditions .CheckArgument<T>(Boolean,String ,String,T) |
Code Query: Methods directly calling one or several methods changed |
67 methods matched
67 methods | methodsChangedCalled | Full Name |
---|---|---|
.ctor(Int32,Int32) | |m0|06| 1 method | NodaTime.AnnualDate..ctor(Int32 ,Int32) |
ForOrdinal(CalendarOrdinal) | |m0|05| 1 method | NodaTime.CalendarSystem.ForOrdinal (CalendarOrdinal) |
.ctor(Int32,Int32,Int32) | |m0|07| 1 method | NodaTime.LocalDate..ctor(Int32 ,Int32,Int32) |
ToDateTimeOffset() | |m0|09| 1 method | NodaTime.OffsetDateTime .ToDateTimeOffset() |
FromDateTimeOffset (DateTimeOffset) | |m0|08| 1 method | NodaTime.OffsetDateTime .FromDateTimeOffset(DateTimeOffset ) |
.ctor(Int64) | |m0|01| 1 method | NodaTime.OffsetTime..ctor(Int64) |
Between(LocalDateTime ,LocalDateTime) | |m0|00| 1 method | NodaTime.Period.Between (LocalDateTime,LocalDateTime) |
Between(LocalDate,LocalDate) | |m0|02| 1 method | NodaTime.Period.Between(LocalDate ,LocalDate) |
Between(LocalTime,LocalTime ,PeriodUnits) | |m0|04| 1 method | NodaTime.Period.Between(LocalTime ,LocalTime,PeriodUnits) |
ToDateTimeUtc() | |m0|03| 1 method | NodaTime.ZonedDateTime .ToDateTimeUtc() |
ToDateTimeUnspecified() | |m0|16| 1 method | NodaTime.ZonedDateTime .ToDateTimeUnspecified() |
NonNegativeTicksToDaysAndTickOfD ay (Int64,Int64&) | |m0|15| 1 method | NodaTime.Utility.TickArithmetic .NonNegativeTicksToDaysAndTickOfDa y(Int64,Int64&) |
get_LongMonthNames() | |m0|17| 1 method | NodaTime.Globalization .NodaFormatInfo.get_LongMonthNames () |
get_ShortMonthNames() | |m0|19| 1 method | NodaTime.Globalization .NodaFormatInfo .get_ShortMonthNames() |
get_LongMonthGenitiveNames() | |m0|18| 1 method | NodaTime.Globalization .NodaFormatInfo .get_LongMonthGenitiveNames() |
get_ShortMonthGenitiveNames() | |m0|11| 1 method | NodaTime.Globalization .NodaFormatInfo .get_ShortMonthGenitiveNames() |
GetEraDescription(Era) | |m0|10| 1 method | NodaTime.Globalization .NodaFormatInfo.GetEraDescription (Era) |
ToLocalDateTime(DateTime) | |m0|12| 1 method | NodaTime.Extensions .DateTimeExtensions .ToLocalDateTime(DateTime) |
ValidateYearMonthDay(Int32,Int32 ,Int32) | |m0|14| 1 method | NodaTime.Calendars .GregorianYearMonthDayCalculator .ValidateYearMonthDay(Int32,Int32 ,Int32) |
ValidateEra(Era) | |m0|13| 1 method | NodaTime.Calendars .SingleEraCalculator.ValidateEra (Era) |
Code Query: Methods indirectly calling one or several methods changed |
429 methods matched
429 methods | depthOfUsingMethodsChanged | methodsChangedDirectlyUsed | Full Name |
---|---|---|---|
.ctor(Int32,Int32) | |m0|06| 1 | |m16|06| 1 method | NodaTime.AnnualDate..ctor(Int32 ,Int32) |
ForOrdinal(CalendarOrdinal) | |m0|05| 1 | |m16|05| 1 method | NodaTime.CalendarSystem.ForOrdinal (CalendarOrdinal) |
.ctor(Int32,Int32,Int32) | |m0|07| 1 | |m16|07| 1 method | NodaTime.LocalDate..ctor(Int32 ,Int32,Int32) |
ToDateTimeOffset() | |m0|09| 1 | |m16|09| 1 method | NodaTime.OffsetDateTime .ToDateTimeOffset() |
FromDateTimeOffset (DateTimeOffset) | |m0|08| 1 | |m16|08| 1 method | NodaTime.OffsetDateTime .FromDateTimeOffset(DateTimeOffset ) |
.ctor(Int64) | |m0|01| 1 | |m16|01| 1 method | NodaTime.OffsetTime..ctor(Int64) |
Between(LocalDateTime ,LocalDateTime) | |m0|00| 1 | |m16|00| 1 method | NodaTime.Period.Between (LocalDateTime,LocalDateTime) |
Between(LocalDate,LocalDate) | |m0|02| 1 | |m16|02| 1 method | NodaTime.Period.Between(LocalDate ,LocalDate) |
Between(LocalTime,LocalTime ,PeriodUnits) | |m0|04| 1 | |m16|04| 1 method | NodaTime.Period.Between(LocalTime ,LocalTime,PeriodUnits) |
ToDateTimeUtc() | |m0|03| 1 | |m16|03| 1 method | NodaTime.ZonedDateTime .ToDateTimeUtc() |
ToDateTimeUnspecified() | |m0|16| 1 | |m16|16| 1 method | NodaTime.ZonedDateTime .ToDateTimeUnspecified() |
NonNegativeTicksToDaysAndTickOfD ay (Int64,Int64&) | |m0|15| 1 | |m16|15| 1 method | NodaTime.Utility.TickArithmetic .NonNegativeTicksToDaysAndTickOfDa y(Int64,Int64&) |
get_LongMonthNames() | |m0|17| 1 | |m16|17| 1 method | NodaTime.Globalization .NodaFormatInfo.get_LongMonthNames () |
get_ShortMonthNames() | |m0|19| 1 | |m16|19| 1 method | NodaTime.Globalization .NodaFormatInfo .get_ShortMonthNames() |
get_LongMonthGenitiveNames() | |m0|18| 1 | |m16|18| 1 method | NodaTime.Globalization .NodaFormatInfo .get_LongMonthGenitiveNames() |
get_ShortMonthGenitiveNames() | |m0|11| 1 | |m16|11| 1 method | NodaTime.Globalization .NodaFormatInfo .get_ShortMonthGenitiveNames() |
GetEraDescription(Era) | |m0|10| 1 | |m16|10| 1 method | NodaTime.Globalization .NodaFormatInfo.GetEraDescription (Era) |
ToLocalDateTime(DateTime) | |m0|12| 1 | |m16|12| 1 method | NodaTime.Extensions .DateTimeExtensions .ToLocalDateTime(DateTime) |
ValidateYearMonthDay(Int32,Int32 ,Int32) | |m0|14| 1 | |m16|14| 1 method | NodaTime.Calendars .GregorianYearMonthDayCalculator .ValidateYearMonthDay(Int32,Int32 ,Int32) |
ValidateEra(Era) | |m0|13| 1 | |m16|13| 1 method | NodaTime.Calendars .SingleEraCalculator.ValidateEra (Era) |
Code Query: New fields |
8 fields matched
8 fields | Full Name |
---|---|
NanosecondsPerMicrosecond ✱ | NodaTime.NodaConstants .NanosecondsPerMicrosecond |
MicrosecondsPerSecond ✱ | NodaTime.NodaConstants .MicrosecondsPerSecond |
NonLeapDaysPerMonth ✱ | NodaTime.Calendars .GJYearMonthDayCalculator .NonLeapDaysPerMonth |
LeapDaysPerMonth ✱ | NodaTime.Calendars .GJYearMonthDayCalculator .LeapDaysPerMonth |
NonLeapTotalDaysByMonth ✱ | NodaTime.Calendars .GJYearMonthDayCalculator .NonLeapTotalDaysByMonth |
LeapTotalDaysByMonth ✱ | NodaTime.Calendars .GJYearMonthDayCalculator .LeapTotalDaysByMonth |
IsoFormatPattern ✱ | NodaTime.Text.YearMonthPattern .IsoFormatPattern |
CultureDefaultFormatPattern ✱ | NodaTime.Text.YearMonthPattern .CultureDefaultFormatPattern |
Code Query: Fields removed |
6 fields matched
6 fields | Full Name |
---|---|
NodaTime.Calendars .GJYearMonthDayCalculator .MinDaysPerMonth | |
NodaTime.Calendars .GJYearMonthDayCalculator .MaxDaysPerMonth | |
NodaTime.Calendars .GJYearMonthDayCalculator .MinTotalDaysByMonth | |
NodaTime.Calendars .GJYearMonthDayCalculator .MaxTotalDaysByMonth | |
NodaTime.Calendars .PersianYearMonthDayCalculator+Sim ple.DaysPerLeapCycle | |
NodaTime.Text.YearMonthPattern .DefaultFormatPattern |
Code Query: Third party types that were not used and that are now used |
1 type matched
1 type | Methods | Fields | TypesUsingMe | Full Name |
---|---|---|---|---|
StringComparison | 0no method | 0no field | |m0|0| 2 types | System.StringComparison |
Code Query: Third party types that were used and that are not used anymore |
2 types matched
2 types | Methods | Fields | TypesThatUsedMe | Full Name |
---|---|---|---|---|
TypeInfo | 1no method | 0no field | |m0|0| 2 types | System.Reflection.TypeInfo |
IntrospectionExtensions | |m100|0| 1 method
| 1no field | |m0|1| 2 types | System.Reflection .IntrospectionExtensions |
Code Query: Third party methods that were not used and that are now used |
10 methods matched
10 methods | MethodsCallingMe | Full Name |
---|---|---|
Format(IFormatProvider,String ,Object) | |m100|02| 2 methods | System.String.Format (IFormatProvider,String,Object) |
StartsWith(String,StringComparison ) | |m100|00| 2 methods | System.String.StartsWith(String ,StringComparison) |
get_Year() | |m100|01| 2 methods | System.DateTime.get_Year() |
op_GreaterThanOrEqual(DateTime ,DateTime) | |m0|03| 1 method | System.DateTime .op_GreaterThanOrEqual(DateTime ,DateTime) |
get_Millisecond() | |m0|04| 1 method | System.DateTime.get_Millisecond() |
ToLower(Char,CultureInfo) | |m0|08| 1 method | System.Char.ToLower(Char ,CultureInfo) |
ToString() | |m0|09| 1 method | System.Char.ToString() |
.ctor(String,Exception) | |m0|06| 1 method | System.FormatException..ctor (String,Exception) |
get_YearMonthPattern() | |m0|07| 1 method | System.Globalization .DateTimeFormatInfo .get_YearMonthPattern() |
.ctor(Stream,Encoding,Boolean) | |m0|05| 1 method | System.IO.BinaryReader..ctor (Stream,Encoding,Boolean) |
Code Query: Third party methods that were used and that are not used anymore |
3 methods matched
3 methods | MethodsThatCalledMe | Full Name |
---|---|---|
StartsWith(String) | |m100|0| 5 methods
| System.String.StartsWith(String) |
op_Inequality(TimeSpan,TimeSpan) | |m0|1| 1 method | System.TimeSpan.op_Inequality (TimeSpan,TimeSpan) |
.ctor(Stream) | |m0|2| 1 method | System.IO.BinaryReader..ctor (Stream) |
Code Query: Third party fields that were not used and that are now used |
No field matched
Code Query: Third party fields that were used and that are not used anymore |
No field matched
Assemblies Dependencies
Assembly | Depends on | Is referenced by |
---|---|---|
NodaTime v3.1.0.0 | netstandard v2.0.0.0 ; System.Runtime.CompilerServices .Unsafe v4.0.6.0 ; | - |
Assemblies Build Order
- NodaTime
Assemblies Build Order
- NodaTime
Abstractness versus Instability Diagram
The Abstractness versus Instability Diagram helps to detect which assemblies are potentially painful to maintain (i.e concrete and stable) and which assemblies are potentially useless (i.e abstract and instable).
- Abstractness:
If an assembly contains many abstract types (i.e interfaces and abstract classes) and few concrete types, it is considered as abstract.
- Instability: An assembly is considered stable if its types are used by a lot of types from other assemblies. In this context stable means painful to modify.
Online documentation: