-
Report theme can be specified in the url through
?theme=light or ?theme=dark. - If no theme is specified in the url, the default report theme is dark. This default theme can be changed from the panel NDepend UI > Project Properties > Report > Default report theme.
report date | 11 Mar 2025 11:50:29 |
analysis duration | 00:08.323 |
ndepend version | 2025.1.0 Professional Developer/Build-Machine Edition |
baseline | Compare with project {eShopOnWeb v2022} most recent analysis result (analysis result obtained on 15 Jan 2025 11:24:27) |
code coverage data | Loaded! Code Coverage metrics, Queries and Rules relative to code Coverage, can be used. |
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| 107 | |m0|234| 0 | |m0|184| 0 | |m100|000| 2d 6h | |m100|000| 2d 6h | |c9|105| 9.43% | |m100|000| 551 | Web | .\Web\Controllers | |
| |m17|001| 19 | |m0|212| 0 | |m0|183| 0 | |m5|005| 1h 11min | |m5|016| 1h 11min | |c65|088| 65.62% | |m36|009| 203 | Web | .\Web | |
| |m14|002| 16 | |m0|211| 0 | |m0|182| 0 | |m3|014| 48min | |m3|026| 48min | |c80|077| 80.77% | |m17|022| 94 | Web | .\Web\Services | |
| |m14|005| 15 | |m0|214| 0 | |m0|185| 0 | |m1|049| 17min | |m1|095| 17min | |c100|041| 100% | |m20|013| 112 | Web | .\Web\Services | |
| |m14|003| 15 | |m0|213| 0 | |m0|187| 0 | |m7|004| 1h 38min | |m7|012| 1h 38min | |c73|084| 73.33% | |m21|011| 120 | Web | .\Web\Areas\Identity\Pages\Account | |
| |m14|004| 15 | |m0|208| 0 | |m0|186| 0 | |m3|022| 39min | |m3|045| 39min | |c50|097| 50% | |m2|163| 12 | Web | .\Web\ViewModels | |
| |m12|006| 13 | |m26|016| 6 | |m11|045| 1 | |m0|061| 13min | |m1|087| 21min | |c100|040| 100% | |m13|029| 74 | PublicApi | .\PublicApi\CatalogItemEndpoints | |
| |m11|007| 12 | |m0|207| 0 | |m0|181| 0 | |m2|031| 32min | |m2|060| 32min | |c44|101| 44.44% | |m2|136| 15 | Web | .\Web\ViewModels | |
| |m10|009| 11 | |m0|210| 0 | |m0|176| 0 | |m2|025| 37min | |m2|050| 37min | |c53|091| 53.85% | |m9|041| 51 | Web | .\Web\Services | |
| |m10|008| 11 | |m0|209| 0 | |m0|177| 0 | |m3|013| 52min | |m3|023| 52min | |c0|173| 0% | |m6|062| 35 | Web | .\Web\HealthChecks | |
| |m8|011| 9 | |m8|080| 2 | |m0|180| 0 | |m0|068| 9min | |m6|014| 1h 21min | |c0|126| 0% | |m12|030| 69 | BlazorAdmin | .\BlazorAdmin\Pages\CatalogItemPage | |
| |m8|010| 9 | |m0|220| 0 | |m0|175| 0 | |m3|016| 45min | |m3|031| 45min | |c0|174| 0% | |m6|060| 36 | Web | .\Web\HealthChecks | |
| |m7|014| 8 | |m0|219| 0 | |m0|188| 0 | |m2|032| 31min | |m2|061| 31min | |c94|061| 94.12% | |m11|032| 62 | Web | .\Web\Pages\Shared\Components\BasketComponent | |
| |m7|016| 8 | |m0|222| 0 | |m0|197| 0 | |m13|002| 2h 57min | |m13|002| 2h 57min | |c0|107| 0% | |m18|018| 101 | Web | .\Web\Areas\Identity\Pages\Account | |
| |m7|015| 8 | |m0|221| 0 | |m0|198| 0 | |m4|009| 56min | |m4|020| 56min | |c0|118| 0% | |m9|038| 53 | Web | .\Web\Areas\Identity\Pages\Account | |
| |m7|013| 8 | |m0|216| 0 | |m0|178| 0 | |m5|006| 1h 8min | |m5|017| 1h 8min | |c59|090| 59.46% | |m17|019| 98 | Web | .\Web\Pages\Basket | |
| |m7|012| 8 | |m0|215| 0 | |m0|179| 0 | |m4|011| 55min | |m4|021| 55min | |c76|079| 76.19% | |m18|017| 101 | Web | .\Web\Pages\Basket | |
| |m6|017| 7 | |m56|007| 13 | |m44|005| 4 | |m1|052| 16min | |m3|034| 44min | |c92|064| 92.31% | |m33|010| 182 | PublicApi | .\PublicApi | |
| |m6|018| 7 | |m0|218| 0 | |m0|196| 0 | |m3|019| 44min | |m3|037| 44min | |c85|071| 85.71% | |m3|124| 17 | Web | .\Web\Features\OrderDetails | |
| |m6|020| 7 | |m0|217| 0 | |m0|200| 0 | |m2|037| 29min | |m2|068| 29min | |c50|092| 50% | |m6|059| 36 | Web | .\Web\Configuration | |
| |m6|019| 7 | |m0|206| 0 | |m0|201| 0 | |m2|024| 38min | |m2|048| 38min | |c0|183| 0% | |m2|146| 14 | Web | .\Web\Extensions | |
| |m5|023| 6 | |m34|011| 8 | |m33|006| 3 | |m4|010| 55min | |m6|013| 1h 24min | |c48|100| 48.84% | |m14|027| 80 | ApplicationCore | .\ApplicationCore\Entities | |
| |m5|026| 6 | |m0|195| 0 | |m0|189| 0 | |m0|062| 11min | |m0|120| 11min | |c100|009| 100% | |m7|054| 41 | Web | .\Web\Configuration | |
| |m5|025| 6 | |m0|194| 0 | |m0|190| 0 | |m4|012| 54min | |m4|022| 54min | |c0|140| 0% | |m1|190| 9 | Web | .\Web\ViewModels\File | |
| |m5|027| 6 | |m0|197| 0 | |m0|194| 0 | |m1|048| 19min | |m1|090| 19min | 221N/A | |m1|177| 10 | Web | .\Web | |
| |m5|024| 6 | |m0|196| 0 | |m0|191| 0 | |m2|039| 28min | |m2|069| 28min | |c83|075| 83.33% | |m6|061| 35 | Web | .\Web\Views\Manage | |
| |m5|022| 6 | |m0|191| 0 | |m0|195| 0 | |m2|035| 30min | |m2|065| 30min | |c92|062| 92.86% | |m3|116| 18 | Web | .\Web\Pages\Basket | |
| |m5|021| 6 | |m0|190| 0 | |m0|199| 0 | |m16|001| 3h 33min | |m16|001| 3h 33min | |c0|164| 0% | |m19|014| 106 | Web | .\Web\Controllers | |
| |m4|028| 5 | |m56|008| 13 | |m55|004| 5 | |m0|063| 10min | |m1|079| 23min | |c97|059| 97.78% | |m15|026| 86 | ApplicationCore | .\ApplicationCore\Services | |
| |m4|036| 5 | |m30|014| 7 | |m11|042| 1 | |m1|046| 19min | |m2|073| 26min | |c81|076| 81.82% | |m5|064| 33 | Infrastructure | .\Infrastructure\Identity | |
| |m4|034| 5 | |m0|193| 0 | |m33|012| 3 | |m1|040| 25min | |m1|076| 25min | |c0|114| 0% | |m1|170| 11 | ApplicationCore | .\ApplicationCore\Exceptions | |
| |m4|032| 5 | |m0|192| 0 | |m0|156| 0 | |m1|050| 16min | |m1|096| 16min | |c75|082| 75% | |m8|047| 46 | Web | .\Web\Features\OrderDetails | |
| |m4|029| 5 | |m0|203| 0 | |m0|193| 0 | |m4|007| 1h 4min | |m4|018| 1h 4min | |c0|180| 0% | |m2|144| 14 | Web | .\Web\ViewModels\Manage | |
| |m4|031| 5 | |m0|202| 0 | |m0|174| 0 | |m2|033| 30min | |m2|062| 30min | |c0|177| 0% | |m5|068| 29 | Web | .\Web\Services | |
| |m4|035| 5 | |m0|205| 0 | |m0|154| 0 | |m1|041| 25min | |m1|075| 25min | |c88|066| 88.89% | |m2|145| 14 | Web | .\Web\Pages\Basket | |
| |m4|030| 5 | |m0|204| 0 | |m0|192| 0 | |m1|043| 22min | |m1|083| 22min | |c50|093| 50% | |m3|119| 18 | Web | .\Web | |
| |m4|037| 5 | |m0|199| 0 | |m0|159| 0 | |m1|051| 16min | |m1|098| 16min | |c0|166| 0% | |m3|102| 20 | Web | .\Web\Pages\Admin | |
| |m4|033| 5 | |m0|198| 0 | |m0|155| 0 | |m3|015| 46min | |m3|028| 46min | |c0|182| 0% | |m7|056| 39 | Web | .\Web\Pages\Admin | |
| |m3|045| 4 | |m0|201| 0 | |m0|151| 0 | |m0|058| 13min | |m0|114| 13min | 228N/A | |m3|104| 19 | Web | .\Web\Pages\Basket | |
| |m3|041| 4 | |m0|200| 0 | |m0|149| 0 | |m3|021| 40min | |m3|043| 40min | |c0|171| 0% | |m3|095| 21 | Web | .\Web\ViewModels\Manage | |
| |m3|048| 4 | |m0|223| 0 | |m0|170| 0 | |m1|057| 14min | |m1|110| 14min | 236N/A | |m1|171| 11 | Web | .\Web\Pages | |
| |m3|043| 4 | |m0|246| 0 | |m0|147| 0 | |m1|053| 15min | |m1|100| 15min | |c66|086| 66.67% | |m1|201| 7 | Web | .\Web\ViewModels | |
| |m3|042| 4 | |m0|245| 0 | |m0|148| 0 | |m1|054| 14min | |m1|104| 14min | |c66|087| 66.67% | |m5|065| 33 | Web | .\Web\Features\MyOrders | |
| |m3|044| 4 | |m0|248| 0 | |m0|152| 0 | |m2|038| 28min | |m2|070| 28min | |c0|131| 0% | |m1|198| 8 | Web | .\Web\ViewModels\Manage | |
| |m3|039| 4 | |m0|247| 0 | |m0|157| 0 | |m3|023| 39min | |m3|046| 39min | |c0|163| 0% | |m3|111| 18 | Web | .\Web\ViewModels\Account | |
| |m3|046| 4 | |m0|242| 0 | |m0|150| 0 | |m4|008| 59min | |m4|019| 59min | |c0|179| 0% | |m8|050| 45 | Web | .\Web\Areas\Identity\Pages\Account | |
| |m3|047| 4 | |m0|241| 0 | |m0|160| 0 | |m2|034| 30min | |m2|064| 30min | |c0|161| 0% | |m3|109| 19 | Web | .\Web\Pages | |
| |m3|038| 4 | |m0|244| 0 | |m0|158| 0 | |m0|073| 6min | |m0|154| 6min | |c100|018| 100% | |m2|141| 14 | Web | .\Web\ViewModels | |
| |m3|040| 4 | |m0|243| 0 | |m0|153| 0 | |m3|020| 41min | |m3|041| 41min | |c0|184| 0% | |m8|049| 45 | Web | .\Web\Controllers | |
| |m2|061| 3 | |m69|004| 16 | |m22|017| 2 | |m0|086| 3min 0s | |m8|011| 1h 48min | |c33|102| 33.33% | |m15|024| 88 | BlazorShared | .\BlazorShared\Models | |
| |m2|064| 3 | |m21|021| 5 | |m0|164| 0 | |m1|042| 24min | |m2|063| 30min | |c18|104| 18.75% | |m12|031| 68 | PublicApi | .\PublicApi\CatalogItemEndpoints | |
| |m2|051| 3 | |m8|078| 2 | |m11|025| 1 | |m0|085| 3min 0s | |m0|125| 10min | |c100|020| 100% | |m3|097| 21 | ApplicationCore | .\ApplicationCore\Specifications | |
| |m2|063| 3 | |m8|074| 2 | |m0|165| 0 | |m2|036| 30min | |m2|059| 34min | |c100|036| 100% | |m3|114| 18 | PublicApi | .\PublicApi\CatalogItemEndpoints | |
| |m2|057| 3 | |m4|127| 1 | |m11|036| 1 | |m0|091| 3min 0s | |m2|071| 27min | |c0|155| 0% | |m4|079| 25 | PublicApi | .\PublicApi | |
| |m2|052| 3 | |m4|125| 1 | |m11|023| 1 | |m1|047| 19min | |m1|089| 19min | |c75|080| 75% | |m1|178| 10 | BlazorShared | .\BlazorShared | |
| |m2|049| 3 | |m4|123| 1 | |m0|169| 0 | |m0|084| 3min 0s | |m0|159| 6min | |c100|034| 100% | |m3|090| 22 | ApplicationCore | .\ApplicationCore\Specifications | |
| |m2|056| 3 | |m0|254| 0 | |m0|167| 0 | |m3|017| 44min | |m3|036| 44min | |c0|158| 0% | |m4|080| 25 | Web | .\Web\ViewModels\Manage | |
| |m2|050| 3 | |m0|253| 0 | |m0|168| 0 | |m2|028| 35min | |m2|055| 35min | |c0|147| 0% | |m1|191| 9 | Web | .\Web\ViewModels\Manage | |
| |m2|058| 3 | |m0|256| 0 | |m0|163| 0 | |m2|026| 35min | |m2|054| 35min | |c0|170| 0% | |m3|099| 20 | Web | .\Web\ViewModels\Manage | |
| |m2|059| 3 | |m0|255| 0 | |m0|162| 0 | |m3|018| 44min | |m3|035| 44min | |c0|168| 0% | |m4|086| 23 | Web | .\Web\ViewModels\Account | |
| |m2|054| 3 | |m0|250| 0 | |m0|172| 0 | |m2|029| 35min | |m2|052| 35min | |c0|152| 0% | |m3|118| 18 | Web | .\Web\ViewModels\Account | |
| |m2|053| 3 | |m0|249| 0 | |m0|173| 0 | |m2|027| 35min | |m2|053| 35min | |c0|153| 0% | |m4|085| 23 | Web | .\Web\ViewModels\Account | |
| |m2|062| 3 | |m0|252| 0 | |m0|166| 0 | |m2|030| 34min | |m2|058| 34min | |c0|108| 0% | |m2|166| 12 | Web | .\Web\ViewModels\Manage | |
| |m2|055| 3 | |m0|251| 0 | |m0|171| 0 | |m1|055| 14min | |m1|108| 14min | |c0|115| 0% | |m1|172| 11 | Infrastructure | .\Infrastructure\Identity | |
| |m2|065| 3 | |m0|240| 0 | |m0|239| 0 | |m10|003| 2h 22min | |m10|004| 2h 22min | 237N/A | |m2|164| 12 | Web | .\Web\Interfaces | |
| |m2|066| 3 | |m0|229| 0 | |m0|238| 0 | |m0|070| 8min | |m0|131| 8min | |c100|010| 100% | |m2|147| 14 | ApplicationCore | .\ApplicationCore\Specifications | |
| |m2|060| 3 | |m0|228| 0 | |m0|161| 0 | |m1|056| 14min | |m1|107| 14min | |c0|176| 0% | |m2|133| 15 | Web | .\Web\Extensions | |
| |m1|074| 2 | |m100|001| 23 | |m100|000| 9 | |m0|098| 2min 0s | |m8|010| 1h 54min | |c0|110| 0% | |m17|020| 97 | BlazorAdmin | .\BlazorAdmin\Services | |
| |m1|083| 2 | |m100|000| 23 | |m77|001| 7 | |m0|097| 2min 0s | |m8|009| 1h 56min | |c0|143| 0% | |m20|012| 114 | BlazorAdmin | .\BlazorAdmin\Services | |
| |m1|077| 2 | |m21|022| 5 | |m0|232| 0 | |m0|075| 5min | |m0|121| 10min | |c88|068| 88.24% | |m13|028| 77 | PublicApi | .\PublicApi\CatalogItemEndpoints | |
| |m1|084| 2 | |m17|035| 4 | |m66|003| 6 | |m0|060| 13min | |m3|030| 46min | |c83|074| 83.33% | |m8|043| 48 | ApplicationCore | .\ApplicationCore\Entities\OrderAggregate | |
| |m1|080| 2 | |m17|036| 4 | |m11|027| 1 | |m0|096| 2min 0s | |m0|157| 6min | |c0|178| 0% | |m9|042| 50 | BlazorAdmin | .\BlazorAdmin | |
| |m1|076| 2 | |m13|037| 3 | |m0|236| 0 | |m1|044| 22min | |m3|044| 40min | |c94|060| 94.44% | |m7|052| 43 | ApplicationCore | .\ApplicationCore\Entities\BasketAggregate | |
| |m1|081| 2 | |m13|046| 3 | |m0|235| 0 | |m0|067| 9min | |m2|051| 36min | |c0|169| 0% | |m3|117| 18 | PublicApi | .\PublicApi\AuthEndpoints | |
| |m1|067| 2 | |m13|045| 3 | |m0|237| 0 | |m0|095| 2min 0s | |m0|129| 9min | |c100|027| 100% | |m3|110| 18 | ApplicationCore | .\ApplicationCore\Extensions | |
| |m1|072| 2 | |m8|063| 2 | |m33|010| 3 | |m0|080| 4min 0s | |m0|156| 6min | |c100|011| 100% | |m8|045| 47 | PublicApi | .\PublicApi\CatalogTypeEndpoints | |
| |m1|070| 2 | |m8|064| 2 | |m11|038| 1 | |m0|076| 5min | |m0|143| 7min | |c50|094| 50% | |m3|112| 18 | PublicApi | .\PublicApi\CatalogBrandEndpoints | |
| |m1|069| 2 | |m8|081| 2 | |m11|039| 1 | |m0|081| 4min 0s | |m0|160| 6min | |c100|014| 100% | |m8|046| 47 | PublicApi | .\PublicApi\CatalogBrandEndpoints | |
| |m1|068| 2 | |m8|071| 2 | |m11|040| 1 | |m0|077| 5min | |m0|142| 7min | |c50|098| 50% | |m3|113| 18 | PublicApi | .\PublicApi\CatalogTypeEndpoints | |
| |m1|071| 2 | |m8|069| 2 | |m0|242| 0 | |m1|045| 20min | |m1|080| 23min | |c50|096| 50% | |m3|122| 17 | PublicApi | .\PublicApi\CatalogItemEndpoints | |
| |m1|082| 2 | |m0|231| 0 | |m0|234| 0 | |m0|071| 8min | |m0|138| 8min | |c100|047| 100% | |m1|181| 10 | Web | .\Web\ViewModels | |
| |m1|085| 2 | |m0|230| 0 | |m0|233| 0 | |m0|069| 8min | |m0|130| 8min | |c100|001| 100% | |m2|137| 15 | Web | .\Web\Features\MyOrders | |
| |m1|075| 2 | |m0|225| 0 | |m0|240| 0 | |m0|079| 4min 0s | |m0|170| 4min 0s | |c100|033| 100% | |m4|087| 23 | Web | .\Web\Pages | |
| |m1|079| 2 | |m0|224| 0 | |m0|230| 0 | |m0|059| 13min | |m0|115| 13min | |c100|002| 100% | |m2|139| 15 | Web | .\Web\Areas\Identity | |
| |m1|078| 2 | |m0|227| 0 | |m0|231| 0 | |m0|074| 6min | |m0|158| 6min | |c100|031| 100% | |m4|076| 25 | Web | .\Web\Extensions | |
| |m1|073| 2 | |m0|226| 0 | |m0|241| 0 | |m0|078| 4min 0s | |m0|172| 4min 0s | |c100|022| 100% | |m3|094| 22 | Web | .\Web\Configuration | |
| |m0|088| 1 | |m86|002| 20 | |m11|031| 1 | |m0|118| 1min 0s | |m5|015| 1h 18min | |c0|109| 0% | |m17|021| 97 | BlazorAdmin | .\BlazorAdmin\Services | |
| |m0|103| 1 | |m60|006| 14 | |m0|245| 0 | |m0|072| 6min | |m3|042| 41min | |c27|103| 27.27% | |m9|034| 55 | PublicApi | .\PublicApi\Middleware | |
| |m0|100| 1 | |m34|012| 8 | |m22|015| 2 | |m0|109| 1min 0s | |m3|038| 42min | |c0|187| 0% | |m9|040| 53 | BlazorAdmin | .\BlazorAdmin\Services | |
| |m0|107| 1 | |m30|013| 7 | |m66|002| 6 | |m0|115| 1min 0s | |m1|077| 25min | |c64|089| 64.71% | |m4|072| 27 | ApplicationCore | .\ApplicationCore\Entities\OrderAggregate | |
| |m0|098| 1 | |m21|020| 5 | |m11|037| 1 | |m0|065| 10min | |m9|008| 2h 3min | |c0|123| 0% | |m15|025| 87 | BlazorAdmin | .\BlazorAdmin | |
| |m0|099| 1 | |m21|026| 5 | |m0|254| 0 | |m0|102| 1min 0s | |m1|088| 20min | |c0|188| 0% | |m7|051| 44 | BlazorAdmin | .\BlazorAdmin\Services | |
| |m0|116| 1 | |m17|034| 4 | |m11|019| 1 | |m0|066| 10min | |m1|085| 22min | |c50|095| 50% | |m2|132| 16 | ApplicationCore | .\ApplicationCore\Extensions | |
| |m0|118| 1 | |m17|033| 4 | |m0|210| 0 | |m0|103| 1min 0s | |m0|148| 7min | |c100|016| 100% | |m7|053| 43 | PublicApi | .\PublicApi\CatalogItemEndpoints | |
| |m0|111| 1 | |m17|029| 4 | |m0|247| 0 | |m0|100| 1min 0s | |m0|137| 8min | |c100|055| 100% | |m10|033| 60 | PublicApi | .\PublicApi\AuthEndpoints | |
| |m0|112| 1 | |m17|032| 4 | |m0|229| 0 | |m0|105| 1min 0s | |m0|147| 7min | |c100|053| 100% | |m9|036| 55 | PublicApi | .\PublicApi\CatalogItemEndpoints | |
| |m0|105| 1 | |m13|057| 3 | |m33|008| 3 | |m0|117| 1min 0s | |m1|091| 18min | |c92|063| 92.86% | |m5|069| 29 | ApplicationCore | .\ApplicationCore\Entities\OrderAggregate | |
| |m0|095| 1 | |m13|051| 3 | |m22|018| 2 | |m0|113| 1min 0s | |m1|074| 26min | |c0|154| 0% | |m4|084| 24 | ApplicationCore | .\ApplicationCore\Entities\BuyerAggregate | |
| |m0|096| 1 | |m13|056| 3 | |m0|255| 0 | |m0|082| 3min 46s | |m3|039| 41min | |c0|119| 0% | |m2|151| 13 | PublicApi | .\PublicApi\AuthEndpoints | |
| |m0|087| 1 | |m13|055| 3 | |m0|243| 0 | |m0|107| 1min 0s | |m1|078| 23min | |c0|124| 0% | |m2|158| 13 | BlazorShared | .\BlazorShared\Models | |
| |m0|104| 1 | |m8|066| 2 | |m33|009| 3 | |m0|119| 1min 0s | |m1|111| 13min | |c90|065| 90.91% | |m3|106| 19 | ApplicationCore | .\ApplicationCore\Entities\OrderAggregate | |
| |m0|097| 1 | |m8|065| 2 | |m22|014| 2 | |m0|110| 1min 0s | |m0|164| 4min 17s | |c0|117| 0% | |m2|152| 13 | ApplicationCore | .\ApplicationCore\Exceptions | |
| |m0|090| 1 | |m8|070| 2 | |m11|030| 1 | |m0|114| 1min 0s | |m0|132| 8min | |c100|008| 100% | |m2|135| 15 | ApplicationCore | .\ApplicationCore\Specifications | |
| |m0|115| 1 | |m8|072| 2 | |m11|021| 1 | |m0|112| 1min 0s | |m0|140| 8min | |c100|038| 100% | |m2|153| 13 | ApplicationCore | .\ApplicationCore\Specifications | |
| |m0|089| 1 | |m8|073| 2 | |m11|033| 1 | |m0|108| 1min 0s | |m0|133| 8min | |c100|013| 100% | |m2|148| 14 | ApplicationCore | .\ApplicationCore\Specifications | |
| |m0|109| 1 | |m8|082| 2 | |m11|022| 1 | |m0|111| 1min 0s | |m0|135| 8min | |c100|029| 100% | |m2|127| 16 | ApplicationCore | .\ApplicationCore\Specifications | |
| |m0|094| 1 | |m8|083| 2 | |m0|256| 0 | |m0|101| 1min 0s | |m1|081| 22min | |c0|122| 0% | |m2|159| 12 | BlazorShared | .\BlazorShared\Models | |
| |m0|106| 1 | |m8|084| 2 | |m0|244| 0 | |m0|106| 1min 0s | |m0|161| 5min | |c88|067| 88.24% | |m5|071| 28 | Infrastructure | .\Infrastructure\Data | |
| |m0|091| 1 | |m8|079| 2 | |m0|253| 0 | |m0|099| 1min 0s | |m11|003| 2h 29min | 253N/A | |m0|208| 5 | ApplicationCore | .\ApplicationCore\Interfaces | |
| |m0|113| 1 | |m4|126| 1 | |m11|020| 1 | |m0|088| 3min 0s | |m0|139| 8min | |c100|054| 100% | |m1|199| 8 | PublicApi | .\PublicApi\CatalogTypeEndpoints | |
| |m0|086| 1 | |m4|119| 1 | |m11|032| 1 | |m0|116| 1min 0s | |m1|092| 18min | |c0|165| 0% | |m3|103| 19 | BlazorAdmin | .\BlazorAdmin\Services | |
| |m0|114| 1 | |m4|118| 1 | |m11|024| 1 | |m0|087| 3min 0s | |m0|134| 8min | |c100|042| 100% | |m1|196| 8 | PublicApi | .\PublicApi\CatalogBrandEndpoints | |
|m0|092| 1 | |m4|120| 1 | |m0|252| 0 | |m0|094| 2min 53s | |m0|163| 4min 53s | |c0|148| 0% | |m0|236| 0 | BlazorAdmin | .\BlazorAdmin\Shared | ||
| |m0|119| 1 | |m0|237| 0 | |m0|209| 0 | |m0|104| 1min 0s | |m0|193| 1min 0s | 223N/A | |m1|174| 10 | Web | .\Web\Controllers\Api | |
| |m0|117| 1 | |m0|236| 0 | |m0|211| 0 | |m0|083| 3min 0s | |m0|183| 3min 0s | |c100|019| 100% | |m3|096| 21 | Web | .\Web\ViewModels\Manage | |
| |m0|093| 1 | |m0|239| 0 | |m0|251| 0 | |m0|090| 3min 0s | |m0|184| 3min 0s | |c100|007| 100% | |m5|067| 31 | Web | .\Web\Configuration | |
| |m0|101| 1 | |m0|238| 0 | |m0|250| 0 | |m0|064| 10min | |m0|126| 10min | 251N/A | |m1|186| 9 | ApplicationCore | .\ApplicationCore\Interfaces | |
|m0|102| 1 | |m0|233| 0 | |m0|246| 0 | |m0|093| 2min 53s | |m0|191| 2min 53s | 216N/A | |m0|237| 0 | BlazorAdmin | .\BlazorAdmin\Pages | ||
| |m0|108| 1 | |m0|232| 0 | |m0|249| 0 | |m0|092| 3min 0s | |m0|185| 3min 0s | |c100|048| 100% | |m2|168| 12 | Web | .\Web\ViewModels | |
| |m0|110| 1 | |m0|235| 0 | |m0|248| 0 | |m0|089| 3min 0s | |m0|179| 3min 0s | |c100|058| 100% | |m1|203| 7 | Web | .\Web\ViewModels | |
| |m0|193| 0 | |m82|003| 19 | |m11|029| 1 | |m0|158| 0min 0s | |m3|024| 50min | |c68|085| 68.18% | |m18|016| 102 | Infrastructure | .\Infrastructure\Data | |
| |m0|224| 0 | |m60|005| 14 | |m0|095| 0 | |m0|252| 0min 0s | |m1|094| 17min | |c0|145| 0% | |m37|008| 207 | Infrastructure | .\Infrastructure\Data\Migrations | |
| |m0|238| 0 | |m52|009| 12 | |m0|094| 0 | |m0|249| 0min 0s | |m1|103| 15min | |c0|138| 0% | |m39|007| 219 | Infrastructure | .\Infrastructure\Identity\Migrations | |
| |m0|132| 0 | |m43|010| 10 | |m0|224| 0 | |m0|181| 0min 0s | |m1|112| 13min | 234N/A | |m2|157| 13 | ApplicationCore | .\ApplicationCore\Constants | |
| |m0|242| 0 | |m30|015| 7 | |m0|112| 0 | |m0|206| 0min 0s | |m3|025| 50min | |c0|125| 0% | |m9|035| 55 | BlazorAdmin | .\BlazorAdmin\Services | |
| |m0|234| 0 | |m26|018| 6 | |m11|043| 1 | |m0|154| 0min 0s | |m1|086| 21min | |c0|157| 0% | |m4|077| 25 | BlazorAdmin | .\BlazorAdmin\JavaScript | |
| |m0|198| 0 | |m26|019| 6 | |m0|117| 0 | |m0|217| 0min 0s | |m1|082| 22min | |c85|072| 85.71% | |m5|070| 28 | BlazorShared | .\BlazorShared\Models | |
| |m0|197| 0 | |m26|017| 6 | |m0|119| 0 | |m0|219| 0min 0s | |m2|067| 30min | |c100|057| 100% | |m1|204| 7 | ApplicationCore | .\ApplicationCore | |
| |m0|201| 0 | |m21|023| 5 | |m22|013| 2 | |m0|162| 0min 0s | |m0|152| 6min | |c100|015| 100% | |m3|105| 19 | PublicApi | .\PublicApi | |
| |m0|192| 0 | |m21|024| 5 | |m0|130| 0 | |m0|190| 0min 0s | |m1|084| 22min | |c76|078| 76.47% | |m8|044| 47 | Infrastructure | .\Infrastructure\Identity | |
| |m0|199| 0 | |m21|025| 5 | |m0|120| 0 | |m0|218| 0min 0s | |m0|116| 12min | |c87|070| 87.5% | |m2|140| 14 | PublicApi | .\PublicApi\CatalogItemEndpoints | |
| |m0|225| 0 | |m17|027| 4 | |m11|047| 1 | |m0|155| 0min 0s | |m0|141| 8min | |c0|141| 0% | |m1|188| 9 | BlazorShared | .\BlazorShared\Attributes | |
| |m0|223| 0 | |m17|028| 4 | |m0|096| 0 | |m0|255| 0min 0s | |m1|097| 16min | |c0|150| 0% | |m4|081| 24 | BlazorAdmin | .\BlazorAdmin\Helpers | |
| |m0|185| 0 | |m17|031| 4 | |m0|063| 0 | |m0|143| 0min 0s | |m0|155| 6min | |c100|052| 100% | |m9|037| 54 | ApplicationCore | .\ApplicationCore\Services | |
| |m0|208| 0 | |m17|030| 4 | |m0|140| 0 | |m0|196| 0min 0s | |m10|006| 2h 15min | |c100|005| 100% | |m2|131| 16 | PublicApi | .\PublicApi | |
| |m0|196| 0 | |m13|052| 3 | |m33|007| 3 | |m0|160| 0min 0s | |m0|151| 6min | |c87|069| 87.5% | |m6|063| 34 | ApplicationCore | .\ApplicationCore\Entities\BasketAggregate | |
| |m0|232| 0 | |m13|053| 3 | |m22|016| 2 | |m0|165| 0min 0s | |m3|040| 41min | |c0|175| 0% | |m6|057| 38 | BlazorAdmin | .\BlazorAdmin\Shared | |
| |m0|140| 0 | |m13|060| 3 | |m11|044| 1 | |m0|157| 0min 0s | |m0|123| 10min | |c0|186| 0% | |m4|074| 25 | BlazorAdmin | .\BlazorAdmin\JavaScript | |
| |m0|195| 0 | |m13|061| 3 | |m0|128| 0 | |m0|161| 0min 0s | |m0|113| 13min | |c83|073| 83.33% | |m7|055| 41 | Infrastructure | .\Infrastructure | |
| |m0|245| 0 | |m13|062| 3 | |m0|113| 0 | |m0|203| 0min 0s | |m2|057| 34min | |c0|106| 0% | |m2|167| 12 | Infrastructure | .\Infrastructure\Data | |
| |m0|194| 0 | |m13|058| 3 | |m0|129| 0 | |m0|191| 0min 0s | |m0|165| 4min 17s | |c75|083| 75% | |m4|082| 24 | Infrastructure | .\Infrastructure\Logging | |
| |m0|236| 0 | |m13|059| 3 | |m0|088| 0 | |m0|225| 0min 0s | |m0|145| 7min | |c0|160| 0% | |m2|126| 16 | Infrastructure | .\Infrastructure\Services | |
| |m0|153| 0 | |m13|050| 3 | |m0|062| 0 | |m0|148| 0min 0s | |m1|105| 14min | 222N/A | |m1|179| 10 | BlazorShared | .\BlazorShared\Authorization | |
| |m0|231| 0 | |m13|040| 3 | |m0|090| 0 | |m0|238| 0min 0s | |m3|032| 45min | |c0|181| 0% | |m2|142| 14 | BlazorShared | .\BlazorShared\Authorization | |
| |m0|145| 0 | |m13|041| 3 | |m0|219| 0 | |m0|168| 0min 0s | |m1|099| 16min | |c0|185| 0% | |m4|073| 26 | BlazorAdmin | .\BlazorAdmin\Helpers | |
| |m0|188| 0 | |m13|042| 3 | |m0|126| 0 | |m0|201| 0min 0s | |m0|153| 6min | |c100|043| 100% | |m1|195| 8 | PublicApi | .\PublicApi\AuthEndpoints | |
| |m0|229| 0 | |m13|054| 3 | |m0|100| 0 | |m0|241| 0min 0s | |m3|027| 47min | |c0|172| 0% | |m4|088| 23 | PublicApi | .\PublicApi\CatalogItemEndpoints | |
| |m0|215| 0 | |m13|038| 3 | |m0|133| 0 | |m0|183| 0min 0s | |m0|162| 5min | |c100|024| 100% | |m3|108| 19 | PublicApi | .\PublicApi\CatalogItemEndpoints | |
| |m0|183| 0 | |m13|039| 3 | |m0|051| 0 | |m0|133| 0min 0s | |m1|102| 15min | |c100|050| 100% | |m1|207| 7 | BlazorShared | .\BlazorShared\Models | |
| |m0|217| 0 | |m13|043| 3 | |m0|135| 0 | |m0|185| 0min 0s | |m2|049| 38min | |c100|026| 100% | |m3|100| 20 | PublicApi | .\PublicApi | |
| |m0|230| 0 | |m13|047| 3 | |m0|099| 0 | |m0|254| 0min 0s | |m2|066| 30min | |c0|167| 0% | |m3|115| 18 | BlazorShared | .\BlazorShared\Authorization | |
| |m0|244| 0 | |m13|048| 3 | |m0|110| 0 | |m0|210| 0min 0s | |m1|106| 14min | |c0|111| 0% | |m1|175| 10 | BlazorShared | .\BlazorShared\Models | |
| |m0|248| 0 | |m13|049| 3 | |m0|114| 0 | |m0|202| 0min 0s | |m0|127| 9min | |c0|135| 0% | |m1|205| 7 | BlazorShared | .\BlazorShared\Models | |
| |m0|184| 0 | |m13|044| 3 | |m0|061| 0 | |m0|149| 0min 0s | |m1|101| 15min | |c100|056| 100% | |m1|202| 7 | BlazorShared | .\BlazorShared\Models | |
| |m0|226| 0 | |m8|068| 2 | |m33|011| 3 | |m0|159| 0min 0s | |m1|093| 17min | |c0|139| 0% | |m1|189| 9 | ApplicationCore | .\ApplicationCore\Entities\BuyerAggregate | |
| |m0|206| 0 | |m8|067| 2 | |m11|035| 1 | |m0|152| 0min 0s | |m0|146| 7min | |c100|003| 100% | |m2|138| 15 | ApplicationCore | .\ApplicationCore\Specifications | |
| |m0|233| 0 | |m8|089| 2 | |m11|041| 1 | |m0|151| 0min 0s | |m0|150| 6min | |c0|162| 0% | |m3|101| 20 | BlazorAdmin | .\BlazorAdmin\JavaScript | |
| |m0|190| 0 | |m8|090| 2 | |m0|124| 0 | |m0|214| 0min 0s | |m0|173| 4min 0s | |c100|045| 100% | |m2|161| 12 | PublicApi | .\PublicApi\CatalogItemEndpoints | |
| |m0|138| 0 | |m8|091| 2 | |m0|218| 0 | |m0|167| 0min 0s | |m0|192| 2min 0s | 232N/A | |m2|130| 16 | BlazorShared | .\BlazorShared\Interfaces | |
| |m0|211| 0 | |m8|086| 2 | |m0|145| 0 | |m0|245| 0min 0s | |m0|168| 4min 0s | |c100|030| 100% | |m3|121| 17 | PublicApi | .\PublicApi\CatalogItemEndpoints | |
| |m0|256| 0 | |m8|087| 2 | |m0|118| 0 | |m0|216| 0min 0s | |m1|109| 14min | |c0|130| 0% | |m1|200| 8 | BlazorShared | .\BlazorShared\Models | |
| |m0|200| 0 | |m8|088| 2 | |m0|123| 0 | |m0|211| 0min 0s | |m0|136| 8min | |c100|039| 100% | |m2|155| 13 | PublicApi | .\PublicApi\CatalogItemEndpoints | |
| |m0|219| 0 | |m8|092| 2 | |m0|137| 0 | |m0|197| 0min 0s | |m0|144| 7min | |c50|099| 50% | |m1|187| 9 | ApplicationCore | .\ApplicationCore\Entities | |
| |m0|191| 0 | |m8|096| 2 | |m0|127| 0 | |m0|189| 0min 0s | |m0|175| 3min 17s | |c75|081| 75% | |m3|120| 17 | PublicApi | .\PublicApi\CatalogItemEndpoints | |
| |m0|237| 0 | |m8|097| 2 | |m0|091| 0 | |m0|250| 0min 0s | |m0|122| 10min | |c0|159| 0% | |m3|125| 17 | PublicApi | .\PublicApi\CatalogItemEndpoints | |
| |m0|216| 0 | |m8|098| 2 | |m0|132| 0 | |m0|184| 0min 0s | |m0|167| 4min 0s | |c100|023| 100% | |m3|098| 21 | PublicApi | .\PublicApi\AuthEndpoints | |
| |m0|243| 0 | |m8|093| 2 | |m0|111| 0 | |m0|209| 0min 0s | |m10|005| 2h 15min | |c0|116| 0% | |m15|023| 88 | BlazorAdmin | .\BlazorAdmin\Helpers | |
| |m0|210| 0 | |m8|095| 2 | |m0|142| 0 | |m0|192| 0min 0s | |m0|171| 4min 0s | |c100|032| 100% | |m2|129| 16 | ApplicationCore | .\ApplicationCore\Services | |
| |m0|162| 0 | |m8|094| 2 | |m0|082| 0 | |m0|223| 0min 0s | |m9|007| 2h 10min | 248N/A | |m1|192| 9 | BlazorShared | .\BlazorShared\Models | |
| |m0|189| 0 | |m8|085| 2 | |m0|125| 0 | |m0|213| 0min 0s | |m0|169| 4min 0s | |c100|046| 100% | |m2|160| 12 | PublicApi | .\PublicApi\CatalogItemEndpoints | |
| |m0|203| 0 | |m8|075| 2 | |m0|122| 0 | |m0|212| 0min 0s | |m0|166| 4min 0s | |c100|021| 100% | |m3|093| 22 | Infrastructure | .\Infrastructure\Identity | |
| |m0|222| 0 | |m8|076| 2 | |m0|097| 0 | |m0|256| 0min 0s | |m2|072| 27min | |c0|151| 0% | |m3|123| 17 | PublicApi | .\PublicApi | |
| |m0|209| 0 | |m8|077| 2 | |m0|139| 0 | |m0|199| 0min 0s | |m0|174| 4min 0s | |c100|004| 100% | |m5|066| 32 | Infrastructure | .\Infrastructure\Data\Queries | |
| |m0|220| 0 | |m4|113| 1 | |m11|026| 1 | |m0|164| 0min 0s | |m0|128| 9min | |c0|149| 0% | |m4|083| 24 | ApplicationCore | .\ApplicationCore\Exceptions | |
| |m0|186| 0 | |m4|110| 1 | |m11|028| 1 | |m0|163| 0min 0s | |m0|177| 3min 0s | |c100|049| 100% | |m2|154| 13 | ApplicationCore | .\ApplicationCore\Entities | |
| |m0|202| 0 | |m4|111| 1 | |m11|034| 1 | |m0|153| 0min 0s | |m0|188| 3min 0s | |c100|012| 100% | |m2|150| 13 | ApplicationCore | .\ApplicationCore\Entities | |
| |m0|239| 0 | |m4|116| 1 | |m0|093| 0 | |m0|248| 0min 0s | |m0|198| 1min 0s | |c0|121| 0% | |m9|039| 53 | Infrastructure | .\Infrastructure\Data\Migrations | |
|m0|241| 0 | |m4|117| 1 | |m0|102| 0 | |m0|239| 0min 0s | |m3|033| 45min | |c0|127| 0% | |m0|240| 0 | BlazorAdmin | .\BlazorAdmin\Pages\CatalogItemPage | ||
| |m0|157| 0 | |m4|114| 1 | |m0|052| 0 | |m0|122| 0min 0s | |m0|124| 10min | 250N/A | |m1|185| 9 | BlazorShared | .\BlazorShared\Models | |
| |m0|212| 0 | |m4|115| 1 | |m0|144| 0 | |m0|194| 0min 0s | |m0|186| 3min 0s | |c100|037| 100% | |m3|089| 22 | BlazorAdmin | .\BlazorAdmin | |
|m0|249| 0 | |m4|104| 1 | |m0|105| 0 | |m0|246| 0min 0s | |m0|149| 6min | |c0|134| 0% | |m0|218| 0 | BlazorAdmin | .\BlazorAdmin\Shared | ||
| |m0|187| 0 | |m4|105| 1 | |m0|057| 0 | |m0|145| 0min 0s | |m0|176| 3min 0s | |c100|044| 100% | |m2|162| 12 | Infrastructure | .\Infrastructure\Data | |
| |m0|235| 0 | |m4|102| 1 | |m0|089| 0 | |m0|226| 0min 0s | |m0|119| 11min | |c0|156| 0% | |m4|078| 25 | BlazorAdmin | .\BlazorAdmin\Helpers | |
| |m0|246| 0 | |m4|103| 1 | |m0|116| 0 | |m0|204| 0min 0s | |m0|118| 11min | |c0|113| 0% | |m1|173| 11 | BlazorAdmin | .\BlazorAdmin\JavaScript | |
|m0|227| 0 | |m4|108| 1 | |m0|098| 0 | |m0|253| 0min 0s | |m2|047| 38min | |c0|144| 0% | |m0|234| 0 | BlazorAdmin | .\BlazorAdmin\Pages\CatalogItemPage | ||
|m0|221| 0 | |m4|109| 1 | |m0|136| 0 | |m0|198| 0min 0s | |m2|056| 35min | |c0|146| 0% | |m0|235| 0 | BlazorAdmin | .\BlazorAdmin\Pages\CatalogItemPage | ||
|m0|228| 0 | |m4|106| 1 | |m0|101| 0 | |m0|242| 0min 0s | |m3|029| 46min | |c0|142| 0% | |m0|239| 0 | BlazorAdmin | .\BlazorAdmin\Pages\CatalogItemPage | ||
| |m0|213| 0 | |m4|107| 1 | |m0|143| 0 | |m0|195| 0min 0s | |m0|178| 3min 0s | |c100|035| 100% | |m3|091| 22 | Infrastructure | .\Infrastructure\Data\Config | |
| |m0|207| 0 | |m4|112| 1 | |m0|141| 0 | |m0|193| 0min 0s | |m0|187| 3min 0s | |c100|000| 100% | |m6|058| 37 | Infrastructure | .\Infrastructure\Data\Config | |
| |m0|214| 0 | |m4|122| 1 | |m0|134| 0 | |m0|186| 0min 0s | |m0|189| 3min 0s | |c100|028| 100% | |m3|092| 22 | Infrastructure | .\Infrastructure\Data\Config | |
| |m0|204| 0 | |m4|099| 1 | |m0|121| 0 | |m0|215| 0min 0s | |m0|181| 3min 0s | |c100|017| 100% | |m8|048| 46 | Infrastructure | .\Infrastructure\Data\Config | |
| |m0|205| 0 | |m4|101| 1 | |m0|131| 0 | |m0|187| 0min 0s | |m0|190| 3min 0s | |c100|006| 100% | |m4|075| 25 | Infrastructure | .\Infrastructure\Data\Config | |
| |m0|240| 0 | |m4|100| 1 | |m0|092| 0 | |m0|251| 0min 0s | |m0|117| 11min | |c0|120| 0% | |m2|149| 14 | BlazorShared | .\BlazorShared\Models | |
| |m0|182| 0 | |m4|129| 1 | |m0|066| 0 | |m0|136| 0min 0s | |m0|180| 3min 0s | |c100|051| 100% | |m2|128| 16 | Infrastructure | .\Infrastructure\Data\Config | |
| |m0|247| 0 | |m4|128| 1 | |m0|115| 0 | |m0|205| 0min 0s | |m0|197| 1min 0s | |c0|112| 0% | |m18|015| 104 | Infrastructure | .\Infrastructure\Data\Migrations | |
| |m0|133| 0 | |m4|131| 1 | |m0|223| 0 | |m0|180| 0min 0s | |m0|195| 1min 0s | 233N/A | |m2|134| 15 | ApplicationCore | .\ApplicationCore\Interfaces | |
| |m0|172| 0 | |m4|121| 1 | |m0|072| 0 | |m0|231| 0min 0s | |m0|196| 1min 0s | 225N/A | |m1|180| 10 | BlazorShared | .\BlazorShared\Interfaces | |
| |m0|218| 0 | |m4|130| 1 | |m0|138| 0 | |m0|200| 0min 0s | |m0|182| 3min 0s | |c100|025| 100% | |m3|107| 19 | Infrastructure | .\Infrastructure\Data\Config | |
| |m0|137| 0 | |m4|124| 1 | |m0|222| 0 | |m0|179| 0min 0s | |m0|194| 1min 0s | 235N/A | |m1|169| 11 | BlazorShared | .\BlazorShared\Interfaces | |
| |m0|143| 0 | |m0|182| 0 | |m11|046| 1 | |m0|156| 0min 0s | |m0|233| 0min 0s | 231N/A | |m2|156| 13 | ApplicationCore | .\ApplicationCore\Interfaces | |
| |m0|144| 0 | |m0|177| 0 | |m0|220| 0 | |m0|169| 0min 0s | |m0|232| 0min 0s | 230N/A | |m2|143| 14 | Web | .\Web\Interfaces | |
| |m0|141| 0 | |m0|176| 0 | |m0|216| 0 | |m0|173| 0min 0s | |m0|231| 0min 0s | 229N/A | |m1|182| 10 | Web | .\Web\Interfaces | |
|m0|120| 0 | |m0|175| 0 | |m0|214| 0 | |m0|171| 0min 0s | |m0|230| 0min 0s | 242N/A | |m0|211| 0 | Web | .\Web\Pages\Shared\Components\BasketComponent | ||
|m0|152| 0 | |m0|178| 0 | |m0|065| 0 | |m0|137| 0min 0s | |m0|229| 0min 0s | 243N/A | |m0|214| 0 | Web | .\Web\Views\Shared\Components\Basket | ||
|m0|175| 0 | |m0|143| 0 | |m0|075| 0 | |m0|230| 0min 0s | |m0|221| 0min 0s | 210N/A | |m0|245| 0 | Web | .\Web\Pages\Basket | ||
|m0|174| 0 | |m0|140| 0 | |m0|076| 0 | |m0|233| 0min 0s | |m0|224| 0min 0s | 207N/A | |m0|246| 0 | Web | .\Web\Pages\Basket | ||
|m0|173| 0 | |m0|139| 0 | |m0|073| 0 | |m0|232| 0min 0s | |m0|223| 0min 0s | 208N/A | |m0|247| 0 | Web | .\Web\Views\Shared | ||
|m0|176| 0 | |m0|138| 0 | |m0|068| 0 | |m0|142| 0min 0s | |m0|222| 0min 0s | 209N/A | |m0|248| 0 | Web | .\Web\Pages\Shared | ||
|m0|178| 0 | |m0|141| 0 | |m0|084| 0 | |m0|221| 0min 0s | |m0|219| 0min 0s | 203N/A | |m0|243| 0 | Web | .\Web\Views\Account | ||
|m0|163| 0 | |m0|144| 0 | |m0|080| 0 | |m0|235| 0min 0s | |m0|211| 0min 0s | 215N/A | |m0|251| 0 | Web | .\Web\Views\Shared | ||
|m0|181| 0 | |m0|133| 0 | |m0|078| 0 | |m0|237| 0min 0s | |m0|217| 0min 0s | 204N/A | |m0|249| 0 | Web | .\Web\Views\Shared | ||
|m0|158| 0 | |m0|134| 0 | |m0|053| 0 | |m0|123| 0min 0s | |m0|212| 0min 0s | 218N/A | |m0|250| 0 | Web | .\Web\Areas\Identity\Pages\Account | ||
|m0|126| 0 | |m0|132| 0 | |m0|202| 0 | |m0|124| 0min 0s | |m0|216| 0min 0s | 192N/A | |m0|254| 0 | Web | .\Web\Areas\Identity\Pages\Account | ||
|m0|177| 0 | |m0|137| 0 | |m0|069| 0 | |m0|141| 0min 0s | |m0|218| 0min 0s | 206N/A | |m0|244| 0 | Web | .\Web\Pages | ||
|m0|150| 0 | |m0|136| 0 | |m0|056| 0 | |m0|146| 0min 0s | |m0|214| 0min 0s | 212N/A | |m0|256| 0 | Web | .\Web\Areas\Identity\Pages\Account | ||
|m0|167| 0 | |m0|147| 0 | |m0|077| 0 | |m0|236| 0min 0s | |m0|204| 0min 0s | 200N/A | |m0|226| 0 | Web | .\Web\Areas\Identity\Pages\Account | ||
|m0|168| 0 | |m0|146| 0 | |m0|070| 0 | |m0|140| 0min 0s | |m0|203| 0min 0s | 198N/A | |m0|227| 0 | Web | .\Web\Pages\Admin | ||
|m0|131| 0 | |m0|145| 0 | |m0|225| 0 | |m0|178| 0min 0s | |m0|202| 0min 0s | 254N/A | |m0|209| 0 | Web | .\Web\Pages\Basket | ||
|m0|159| 0 | |m0|148| 0 | |m0|054| 0 | |m0|121| 0min 0s | |m0|199| 0min 0s | 217N/A | |m0|238| 0 | Web | .\Web\Areas\Identity\Pages | ||
|m0|171| 0 | |m0|151| 0 | |m0|074| 0 | |m0|229| 0min 0s | |m0|208| 0min 0s | 197N/A | |m0|230| 0 | Web | .\Web\Pages\Admin | ||
|m0|169| 0 | |m0|150| 0 | |m0|071| 0 | |m0|182| 0min 0s | |m0|201| 0min 0s | 196N/A | |m0|228| 0 | Web | .\Web\Views\Account | ||
|m0|151| 0 | |m0|149| 0 | |m0|064| 0 | |m0|138| 0min 0s | |m0|200| 0min 0s | 211N/A | |m0|233| 0 | Web | .\Web\Views\Manage | ||
|m0|155| 0 | |m0|156| 0 | |m0|048| 0 | |m0|166| 0min 0s | |m0|215| 0min 0s | 219N/A | |m0|255| 0 | Web | .\Web\Views\Order | ||
|m0|170| 0 | |m0|157| 0 | |m0|067| 0 | |m0|139| 0min 0s | |m0|207| 0min 0s | 195N/A | |m0|231| 0 | Web | .\Web\Views\Manage | ||
|m0|164| 0 | |m0|158| 0 | |m0|079| 0 | |m0|234| 0min 0s | |m0|225| 0min 0s | 199N/A | |m0|225| 0 | Web | .\Web\Views\Manage | ||
|m0|166| 0 | |m0|155| 0 | |m0|083| 0 | |m0|220| 0min 0s | |m0|206| 0min 0s | 201N/A | |m0|232| 0 | Web | .\Web\Views\Order | ||
|m0|122| 0 | |m0|154| 0 | |m0|212| 0 | |m0|130| 0min 0s | |m0|205| 0min 0s | 193N/A | |m0|229| 0 | Web | .\Web\Pages | ||
|m0|180| 0 | |m0|152| 0 | |m0|086| 0 | |m0|227| 0min 0s | |m0|209| 0min 0s | 205N/A | |m0|241| 0 | Web | .\Web\Pages | ||
|m0|161| 0 | |m0|153| 0 | |m0|081| 0 | |m0|222| 0min 0s | |m0|210| 0min 0s | 214N/A | |m0|252| 0 | Web | .\Web\Views | ||
|m0|179| 0 | |m0|142| 0 | |m0|085| 0 | |m0|224| 0min 0s | |m0|220| 0min 0s | 202N/A | |m0|242| 0 | Web | .\Web\Pages | ||
|m0|147| 0 | |m0|135| 0 | |m0|059| 0 | |m0|147| 0min 0s | |m0|213| 0min 0s | 213N/A | |m0|253| 0 | Web | .\Web\Views\Manage | ||
|m0|121| 0 | |m0|179| 0 | |m0|213| 0 | |m0|129| 0min 0s | |m0|226| 0min 0s | 240N/A | |m0|213| 0 | Web | .\Web\Views\Manage | ||
|m0|136| 0 | |m0|180| 0 | |m0|226| 0 | |m0|175| 0min 0s | |m0|227| 0min 0s | 239N/A | |m0|212| 0 | Web | .\Web\Views\Manage | ||
|m0|149| 0 | |m0|181| 0 | |m0|058| 0 | |m0|144| 0min 0s | |m0|228| 0min 0s | 246N/A | |m0|215| 0 | Web | .\Web\Views\Manage | ||
|m0|130| 0 | |m0|187| 0 | |m0|215| 0 | |m0|172| 0min 0s | |m0|234| 0min 0s | 241N/A | |m0|210| 0 | Web | .\Web\Views\Manage | ||
|m0|129| 0 | |m0|188| 0 | |m0|205| 0 | |m0|120| 0min 0s | |m0|235| 0min 0s | 190N/A | |m0|222| 0 | Web | .\Web\Views\Manage | ||
|m0|125| 0 | |m0|189| 0 | |m0|203| 0 | |m0|126| 0min 0s | |m0|236| 0min 0s | 191N/A | |m0|221| 0 | Web | .\Web\Views\Manage | ||
|m0|123| 0 | |m0|186| 0 | |m0|208| 0 | |m0|134| 0min 0s | |m0|237| 0min 0s | 194N/A | |m0|224| 0 | Web | .\Web\Views\Manage | ||
|m0|128| 0 | |m0|183| 0 | |m0|206| 0 | |m0|132| 0min 0s | |m0|238| 0min 0s | 189N/A | |m0|223| 0 | Web | .\Web\Views\Manage | ||
|m0|160| 0 | |m0|184| 0 | |m0|050| 0 | |m0|128| 0min 0s | |m0|239| 0min 0s | 220N/A | |m0|220| 0 | Web | .\Web\Views\Manage | ||
| |m0|252| 0 | |m0|185| 0 | |m0|106| 0 | |m0|247| 0min 0s | |m0|240| 0min 0s | |c0|133| 0% | |m57|001| 316 | Infrastructure | .\Infrastructure\Data\Migrations | |
| |m0|250| 0 | |m0|174| 0 | |m0|104| 0 | |m0|243| 0min 0s | |m0|241| 0min 0s | |c0|137| 0% | |m56|002| 314 | Infrastructure | .\Infrastructure\Data\Migrations | |
| |m0|251| 0 | |m0|163| 0 | |m0|103| 0 | |m0|240| 0min 0s | |m0|242| 0min 0s | |c0|136| 0% | |m56|003| 312 | Infrastructure | .\Infrastructure\Data\Migrations | |
| |m0|253| 0 | |m0|164| 0 | |m0|109| 0 | |m0|207| 0min 0s | |m0|243| 0min 0s | |c0|129| 0% | |m55|004| 307 | Infrastructure | .\Infrastructure\Data\Migrations | |
| |m0|254| 0 | |m0|169| 0 | |m0|108| 0 | |m0|208| 0min 0s | |m0|256| 0min 0s | |c0|128| 0% | |m49|005| 274 | Infrastructure | .\Infrastructure\Identity\Migrations | |
| |m0|255| 0 | |m0|168| 0 | |m0|107| 0 | |m0|188| 0min 0s | |m0|255| 0min 0s | |c0|132| 0% | |m49|006| 272 | Infrastructure | .\Infrastructure\Identity\Migrations | |
| |m0|135| 0 | |m0|167| 0 | |m0|227| 0 | |m0|176| 0min 0s | |m0|254| 0min 0s | 238N/A | |m2|165| 12 | ApplicationCore | .\ApplicationCore\Interfaces | |
| |m0|165| 0 | |m0|170| 0 | |m0|087| 0 | |m0|228| 0min 0s | |m0|253| 0min 0s | 224N/A | |m1|176| 10 | ApplicationCore | .\ApplicationCore\Interfaces | |
| |m0|127| 0 | |m0|173| 0 | |m0|207| 0 | |m0|131| 0min 0s | |m0|252| 0min 0s | 227N/A | |m1|184| 9 | PublicApi | .\PublicApi | |
| |m0|124| 0 | |m0|172| 0 | |m0|204| 0 | |m0|125| 0min 0s | |m0|251| 0min 0s | 226N/A | |m1|183| 9 | ApplicationCore | .\ApplicationCore\Interfaces | |
| |m0|156| 0 | |m0|171| 0 | |m0|055| 0 | |m0|135| 0min 0s | |m0|250| 0min 0s | 249N/A | |m1|193| 8 | Infrastructure | .\Infrastructure\Identity | |
| |m0|134| 0 | |m0|166| 0 | |m0|228| 0 | |m0|177| 0min 0s | |m0|249| 0min 0s | 255N/A | |m1|197| 8 | ApplicationCore | .\ApplicationCore\Interfaces | |
| |m0|142| 0 | |m0|161| 0 | |m0|221| 0 | |m0|174| 0min 0s | |m0|248| 0min 0s | 252N/A | |m1|194| 8 | ApplicationCore | .\ApplicationCore\Interfaces | |
| |m0|139| 0 | |m0|160| 0 | |m0|217| 0 | |m0|170| 0min 0s | |m0|247| 0min 0s | 256N/A | |m1|206| 7 | ApplicationCore | .\ApplicationCore\Interfaces | |
|m0|146| 0 | |m0|159| 0 | |m0|146| 0 | |m0|244| 0min 0s | |m0|246| 0min 0s | 245N/A | |m0|219| 0 | BlazorAdmin | .\BlazorAdmin | ||
|m0|148| 0 | |m0|162| 0 | |m0|060| 0 | |m0|150| 0min 0s | |m0|245| 0min 0s | 247N/A | |m0|216| 0 | BlazorAdmin | .\BlazorAdmin\Pages\CatalogItemPage | ||
|m0|154| 0 | |m0|165| 0 | |m0|049| 0 | |m0|127| 0min 0s | |m0|244| 0min 0s | 244N/A | |m0|217| 0 | BlazorAdmin | .\BlazorAdmin\Shared |
- 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 |
---|---|---|---|---|---|---|---|---|
|m100|0| 452 | |m0|5| 0 | |m0|5| 0 | |m100|0| 7d 4h | |m100|0| 7d 4h | |c42|2| 42.05% | |m100|0| 126 | |m100|0| 1 044 | |
|m9|1| 50 | |m87|1| 118 | |m42|2| 22 | |m3|2| 2h 39min | |m13|2| 1d 3h | |c73|1| 73.84% | |m15|4| 39 | |m26|3| 367 | |
|m7|2| 43 | |m74|2| 100 | |m100|0| 52 | |m4|1| 2h 52min | |m12|3| 1d 3h | |c77|0| 77.61% | |m25|2| 49 | |m16|4| 268 | |
|m3|3| 24 | |m100|0| 135 | |m51|1| 27 | |m0|3| 58min | |m26|1| 2d 3h | |c1|5| 1.41% | |m19|3| 43 | |m40|2| 496 | |
|m0|4| 9 | |m62|3| 85 | |m5|4| 3 | |m0|4| 35min | |m0|5| 4h 5min | |c13|4| 13.81% | |m28|1| 52 | |m68|1| 753 | |
|m0|5| 8 | |m46|4| 63 | |m7|3| 4 | |m0|5| 24min | |m8|4| 1d 0h | |c35|3| 35.04% | |m0|5| 23 | |m0|5| 117 |
- 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 | |||
---|---|---|---|---|---|---|---|
| Quality Gates | ||||||
| Quality Gates | ||||||
| Quality Gates | ||||||
| Quality Gates | ||||||
| Quality Gates | ||||||
| Quality Gates | ||||||
| Quality Gates | ||||||
| Quality Gates | ||||||
| Quality Gates | ||||||
| Quality Gates | ||||||
| Quality Gates | ||||||
| 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 | |
---|---|---|---|---|---|---|---|---|
Code should be tested | |m100|00| 101 | |m89|01| 98 | |m100|00| 11 | |m100|00| 3d 1h | |m100|00| 3d 1h | Code Coverage | ||
New Types and Methods should be tested | |m72|01| 73 | |m0|78| 0 | |m0|65| 0 | |m35|01| 1d 0h | |m0|62| 0min 0s | Code Coverage | ||
From now, all types added should be 100% covered by tests | |m48|02| 49 | |m0|76| 0 | |m0|66| 0 | |m32|02| 1d 0h | |m0|60| 0min 0s | Code Smells Regression | ||
Use .ConfigureAwait(false) | |m43|03| 44 | |m100|00| 110 | |m0|64| 0 | |m2|13| 44min | |m7|03| 1h 50min | Usage | ||
Do not use blocking call | |m20|04| 21 | |m10|08| 11 | |m9|08| 1 | |m1|19| 21min | |m0|20| 11min | Design | ||
Add comma after the last property | |m19|05| 20 | |m28|03| 31 | |m0|62| 0 | |m1|22| 20min | |m2|10| 31min | Style | ||
Types 100% covered should be tagged with FullCoveredAttribute | |m17|06| 18 | |m37|02| 41 | |m36|01| 4 | |m3|09| 54min | |m8|02| 2h 3min | Code Coverage | ||
Do not raise too general exception types | |m17|07| 18 | |m0|90| 0 | |m0|63| 0 | |m23|03| 6h 0min | |m0|66| 0min 0s | System | ||
Prefer return collection abstraction instead of implementation | |m13|08| 14 | |m8|10| 9 | |m9|05| 1 | |m0|27| 14min | |m0|23| 9min | Design | ||
File name must match type name | |m12|09| 13 | |m21|04| 24 | |m0|70| 0 | |m0|28| 13min | |m1|13| 24min | Design | ||
use String.Equals | |m11|10| 12 | |m0|58| 0 | |m0|71| 0 | |m0|30| 12min | |m0|82| 0min 0s | Usage | ||
Format empty block. | |m9|11| 10 | |m0|82| 0 | |m0|69| 0 | |m0|34| 10min | |m0|58| 0min 0s | Formatting | ||
IFormatProvider is missing | |m9|12| 10 | |m3|22| 4 | |m0|67| 0 | |m0|33| 10min | |m0|31| 4min 0s | Usage | ||
Format binary operator on next line. | |m7|13| 8 | |m0|81| 0 | |m0|68| 0 | |m0|37| 8min | |m0|55| 0min 0s | Formatting | ||
Assemblies and Namespaces should be tested | |m7|14| 8 | |m10|06| 12 | |m0|61| 0 | |m2|17| 32min | |m3|07| 48min | Code Coverage | ||
Simplify lambda expression. | |m7|15| 8 | |m7|11| 8 | |m9|04| 1 | |m0|36| 8min | |m0|25| 8min | Simplification | ||
Uri fields or properties should be of type System.Uri | |m6|16| 7 | |m10|07| 11 | |m0|54| 0 | |m2|16| 35min | |m3|06| 55min | System | ||
Name parameter | |m6|17| 7 | |m1|37| 2 | |m0|55| 0 | |m0|38| 7min | |m0|44| 2min 0s | Style | ||
Methods refactored should be tested | |m6|18| 7 | |m0|74| 0 | |m0|53| 0 | |m2|15| 35min | |m0|74| 0min 0s | Code Coverage | ||
API Breaking Changes: Methods | |m5|19| 6 | |m0|79| 0 | |m0|51| 0 | |m3|08| 1h 0min | |m0|59| 0min 0s | API Breaking Changes | ||
Remove redundant empty line. | |m5|20| 6 | |m9|09| 10 | |m36|02| 4 | |m0|40| 6min | |m0|22| 10min | Redundancy | ||
Avoid namespaces with few types | |m5|21| 6 | |m7|14| 8 | |m0|52| 0 | |m1|18| 30min | |m2|09| 40min | Design | ||
Avoid publicly visible constant fields | |m5|22| 6 | |m4|18| 5 | |m0|59| 0 | |m0|49| 3min 0s | |m0|39| 2min 30s | Visibility | ||
Remove trailing white-space. | |m5|23| 6 | |m2|26| 3 | |m36|03| 4 | |m0|39| 6min | |m0|33| 3min 0s | Redundancy | ||
Use a cancellation token | |m4|24| 5 | |m1|40| 2 | |m0|60| 0 | |m0|42| 5min | |m0|46| 2min 0s | Usage | ||
Avoid prefixing type name with parent namespace name | |m4|25| 5 | |m0|54| 1 | |m0|58| 0 | |m3|10| 50min | |m0|21| 10min | Naming Conventions | ||
Make method static | |m3|26| 4 | |m2|25| 3 | |m0|56| 0 | |m0|43| 4min 0s | |m0|34| 3min 0s | Design | ||
Avoid naming types and namespaces with the same identifier | |m3|27| 4 | |m0|50| 1 | |m0|57| 0 | |m3|11| 48min | |m0|19| 12min | Naming Conventions | ||
Collection properties should be read only | |m3|28| 4 | |m0|89| 0 | |m0|72| 0 | |m2|14| 40min | |m0|69| 0min 0s | System.Collections | ||
Avoid various capitalizations for method name | |m3|29| 4 | |m0|71| 0 | |m0|87| 0 | |m3|12| 48min | |m0|85| 0min 0s | Naming Conventions | ||
Avoid decreasing code coverage by tests of types | |m3|30| 4 | |m0|75| 0 | |m0|88| 0 | |m4|07| 1h 3min | |m0|61| 0min 0s | Code Smells Regression | ||
Forward the 'CancellationToken' parameter to methods | |m3|31| 4 | |m0|62| 0 | |m0|86| 0 | |m0|45| 4min 0s | |m0|78| 0min 0s | Reliability | ||
Types that used to be 100% covered by tests should still be 100% covered | |m3|32| 4 | |m0|68| 0 | |m0|84| 0 | |m0|35| 8min | |m0|92| 0min 0s | Code Coverage | ||
Declare types in namespaces | |m3|33| 4 | |m0|91| 0 | |m0|85| 0 | |m0|44| 4min 0s | |m0|65| 0min 0s | Design | ||
Replace 'Count' method with 'Count' or 'Length' property. | |m2|34| 3 | |m0|56| 0 | |m0|92| 0 | |m0|50| 3min 0s | |m0|80| 0min 0s | Performance | ||
Use direct methods instead of extension methods | |m2|35| 3 | |m6|15| 7 | |m0|93| 0 | |m0|53| 3min 0s | |m0|26| 7min | Performance | ||
Format declaration braces. | |m2|36| 3 | |m0|86| 0 | |m0|91| 0 | |m0|52| 3min 0s | |m0|70| 0min 0s | Formatting | ||
Fix TODO comment | |m2|37| 3 | |m3|20| 4 | |m0|89| 0 | |m0|48| 3min 0s | |m0|30| 4min 0s | Design | ||
Use Length/Count property instead of Count() when available | |m2|38| 3 | |m0|60| 0 | |m0|90| 0 | |m0|51| 3min 0s | |m0|76| 0min 0s | Performance | ||
Optimize StringBuilder usage | |m2|39| 3 | |m0|61| 0 | |m0|83| 0 | |m0|47| 3min 0s | |m0|75| 0min 0s | Performance | ||
Remove redundant parentheses. | |m1|40| 2 | |m0|63| 0 | |m0|76| 0 | |m0|56| 2min 0s | |m0|77| 0min 0s | Redundancy | ||
StringComparison is missing | |m1|41| 2 | |m1|39| 2 | |m0|77| 0 | |m0|55| 2min 0s | |m0|47| 2min 0s | Usage | ||
Make property static | |m1|42| 2 | |m0|83| 0 | |m0|75| 0 | |m0|59| 2min 0s | |m0|57| 0min 0s | Design | ||
Prefer 'AsSpan' over 'Substring' | |m1|43| 2 | |m0|57| 0 | |m0|73| 0 | |m0|57| 2min 0s | |m0|83| 0min 0s | Performance | ||
IEqualityComparer<string> is missing | |m1|44| 2 | |m0|66| 0 | |m0|74| 0 | |m0|58| 2min 0s | |m0|90| 0min 0s | Usage | ||
Namespace name should correspond to file location | |m1|45| 2 | |m1|34| 2 | |m0|81| 0 | |m0|41| 6min | |m0|28| 6min | Source Files Organization | ||
Make class static | |m1|46| 2 | |m4|19| 5 | |m0|82| 0 | |m0|62| 2min 0s | |m0|29| 5min | Design | ||
Avoid having different types with same name | |m1|47| 2 | |m7|13| 8 | |m0|80| 0 | |m1|21| 20min | |m5|05| 1h 20min | Naming Conventions | ||
Types with source files stored in the same directory, should be declared in the same namespace | |m1|48| 2 | |m1|33| 2 | |m0|78| 0 | |m1|24| 19min | |m0|18| 14min | Source Files Organization | ||
Do not use blocking call (make method async) | |m1|49| 2 | |m0|92| 0 | |m0|79| 0 | |m0|63| 2min 0s | |m0|68| 0min 0s | Design | ||
Type or member is obsolete | |m1|50| 2 | |m0|93| 0 | |m0|50| 0 | |m0|65| 2min 0s | |m0|67| 0min 0s | Compiler | ||
Assemblies Referenced in Multiple Versions | |m0|51| 1 | |m0|88| 0 | |m0|13| 0 | |m0|26| 15min | |m0|72| 0min 0s | System.Reflection | ||
Convert to 'GeneratedRegexAttribute'. | |m0|52| 1 | |m0|85| 0 | |m0|11| 0 | |m0|74| 1min 0s | |m0|71| 0min 0s | GeneratedRegex | ||
Add timeout parameter | |m0|53| 1 | |m0|67| 0 | |m0|28| 0 | |m0|73| 1min 0s | |m0|93| 0min 0s | Security | ||
Declare type inside namespace. | |m0|54| 1 | |m0|87| 0 | |m0|22| 0 | |m0|71| 1min 0s | |m0|73| 0min 0s | Design | ||
Software Composition Analysis (SCA) | |m0|55| 1 | |m0|73| 0 | |m9|07| 1 | |m1|20| 20min | |m0|87| 0min 0s | Security | ||
Types almost 100% tested should be 100% tested | |m0|56| 1 | |m0|70| 0 | |m0|23| 0 | |m0|64| 2min 0s | |m0|86| 0min 0s | Code Coverage | ||
Transitive Software Composition Analysis (SCA) | |m0|57| 1 | |m0|72| 0 | |m0|21| 0 | |m1|23| 20min | |m0|88| 0min 0s | Security | ||
Use C# 6.0 dictionary initializer. | |m0|58| 1 | |m0|65| 0 | |m0|19| 0 | |m0|66| 1min 0s | |m0|91| 0min 0s | Usage | ||
Namespaces almost 100% tested should be 100% tested | |m0|59| 1 | |m0|69| 0 | |m0|20| 0 | |m0|60| 2min 0s | |m0|89| 0min 0s | Code Coverage | ||
Avoid types too big | |m0|60| 1 | |m0|59| 0 | |m0|27| 0 | |m4|06| 1h 3min | |m0|79| 0min 0s | Code Smells | ||
Avoid namespaces mutually dependent | |m0|61| 1 | |m5|17| 6 | |m0|15| 0 | |m0|25| 15min | |m6|04| 1h 35min | Architecture | ||
Consider using 'StringBuilder.Append(char)' when applicable | |m0|62| 1 | |m0|55| 0 | |m0|26| 0 | |m0|69| 1min 0s | |m0|81| 0min 0s | Performance | ||
Remove file with no code. | |m0|63| 1 | |m0|64| 0 | |m0|24| 0 | |m0|68| 1min 0s | |m0|84| 0min 0s | Redundancy | ||
Avoid namespaces dependency cycles | |m0|64| 1 | |m2|30| 3 | |m0|25| 0 | |m7|04| 2h 0min | |m23|01| 6h 0min | Architecture | ||
Mark class as static. | |m0|65| 1 | |m2|28| 3 | |m0|10| 0 | |m0|72| 1min 0s | |m0|37| 3min 0s | Design | ||
Nested types should not be visible | |m0|66| 1 | |m0|43| 1 | |m0|12| 0 | |m0|31| 10min | |m0|42| 2min 0s | Design | ||
Methods should be declared static if possible | |m0|67| 1 | |m0|48| 1 | |m0|09| 0 | |m0|76| 0min 30s | |m0|48| 1min 30s | Object Oriented Design | ||
Mark members as static | |m0|68| 1 | |m2|29| 3 | |m0|17| 0 | |m0|75| 1min 0s | |m0|36| 3min 0s | Performance | ||
Template should be a static expression | |m0|69| 1 | |m7|12| 8 | |m0|18| 0 | |m0|67| 1min 0s | |m0|24| 8min | Usage | ||
Types declared in the same namespace, should have their source files stored in the same directory | |m0|70| 1 | |m0|53| 1 | |m0|16| 0 | |m0|29| 12min | |m0|27| 7min | Source Files Organization | ||
Static fields naming convention | |m0|71| 1 | |m0|47| 1 | |m0|14| 0 | |m0|54| 3min 0s | |m0|32| 3min 0s | Naming Conventions | ||
Non-static classes should be instantiated or turned to static | |m0|72| 1 | |m10|05| 12 | |m9|06| 1 | |m0|61| 2min 0s | |m1|14| 24min | Object Oriented Design | ||
Constructor should not call a virtual method | |m0|73| 1 | |m5|16| 6 | |m0|43| 0 | |m0|46| 4min 0s | |m1|12| 24min | Object Oriented Design | ||
Avoid making large methods even larger | |m0|74| 1 | |m0|80| 0 | |m0|44| 0 | |m0|32| 10min | |m0|56| 0min 0s | Code Smells Regression | ||
Avoid types with too many methods | |m0|75| 1 | |m0|77| 0 | |m0|42| 0 | |m4|05| 1h 15min | |m0|63| 0min 0s | Code Smells | ||
Add StructLayoutAttribute | |m0|76| 1 | |m0|84| 0 | |m0|40| 0 | |m0|70| 1min 0s | |m0|64| 0min 0s | Performance | ||
Attribute classes should be sealed | |m0|77| 0 | |m0|45| 1 | |m0|41| 0 | |m0|90| 0min 0s | |m0|40| 2min 0s | Design | ||
Abstract types should not have public or internal constructors | |m0|78| 0 | |m1|31| 2 | |m0|48| 0 | |m0|80| 0min 0s | |m0|41| 2min 0s | Design | ||
Avoid empty interfaces | |m0|79| 0 | |m0|42| 1 | |m0|49| 0 | |m0|79| 0min 0s | |m1|11| 28min | Object Oriented Design | ||
Use EventHandler<T> | |m0|80| 0 | |m2|27| 3 | |m0|47| 0 | |m0|78| 0min 0s | |m0|38| 3min 0s | Design | ||
Instance fields naming convention | |m0|81| 0 | |m0|51| 1 | |m0|45| 0 | |m0|81| 0min 0s | |m0|35| 3min 0s | Naming Conventions | ||
Avoid static fields with a mutable field type | |m0|82| 0 | |m1|41| 2 | |m0|46| 0 | |m0|77| 0min 0s | |m1|15| 20min | Immutability | ||
Potentially Dead Methods | |m0|83| 0 | |m3|21| 4 | |m0|39| 0 | |m0|89| 0min 0s | |m2|08| 40min | Dead Code | ||
Constructors of abstract classes should be declared as protected or private | |m0|84| 0 | |m1|35| 2 | |m0|32| 0 | |m0|82| 0min 0s | |m0|51| 1min 0s | Visibility | ||
Avoid public methods not publicly visible | |m0|85| 0 | |m1|36| 2 | |m0|33| 0 | |m0|87| 0min 0s | |m0|50| 1min 0s | Visibility | ||
A stateless class or structure might be turned into a static type | |m0|86| 0 | |m0|44| 1 | |m0|31| 0 | |m0|83| 0min 0s | |m0|52| 1min 0s | Object Oriented Design | ||
Mark attributes with AttributeUsageAttribute | |m0|87| 0 | |m0|46| 1 | |m0|29| 0 | |m0|91| 0min 0s | |m0|54| 1min 0s | Design | ||
Mark attributes with AttributeUsageAttribute | |m0|88| 0 | |m0|49| 1 | |m0|30| 0 | |m0|84| 0min 0s | |m0|53| 1min 0s | Design | ||
Abstract base class should be suffixed with 'Base' | |m0|89| 0 | |m2|23| 3 | |m0|37| 0 | |m0|93| 0min 0s | |m0|17| 15min | Naming Conventions | ||
Dispose methods should call SuppressFinalize | |m0|90| 0 | |m1|38| 2 | |m0|38| 0 | |m0|88| 0min 0s | |m0|43| 2min 0s | Usage | ||
Method is too long | |m0|91| 0 | |m1|32| 2 | |m0|36| 0 | |m0|92| 0min 0s | |m0|45| 2min 0s | Design | ||
Add braces. | |m0|92| 0 | |m0|52| 1 | |m0|34| 0 | |m0|86| 0min 0s | |m0|49| 1min 0s | Style | ||
Fields should be marked as ReadOnly when possible | |m0|93| 0 | |m2|24| 3 | |m0|35| 0 | |m0|85| 0min 0s | |m0|16| 15min | Immutability |
Trend Charts |
|
Size
% Coverage and % Debt
Issues
Rules
Quality Gates
Debt
Analysis Logs
Message | |
---|---|
Begin full analysis with NDepend v2025.1.0 on 11 Mar 2025 11:50:29. Runtime .NET Framework 4.8.9290.0 | |
Input directory resolved to absolute directory path: from {..\tes} to {C:\My\NDepend\WebSite\SampleReport\eShopOnWeb\v2023\tes} | |
Visual Studio solution file resolved to absolute file path: from {..\eShopOnWeb.sln} to {C:\My\NDepend\WebSite\SampleReport\eShopOnWeb\v2023\eShopOnWeb.sln} | |
Output directory resolved to absolute directory path: C:\My\NDepend\WebSite\SampleReport\eShopOnWeb\v2023\NDependStuff\NDependOut | |
Coverage file resolved to absolute file path: from {.\Coverage_27Sep2023_DetailedXml.xml} to {C:\My\NDepend\WebSite\SampleReport\eShopOnWeb\v2023\NDependStuff\Coverage_27Sep2023_DetailedXml.xml} | |
Input directory not found {C:\My\NDepend\WebSite\SampleReport\eShopOnWeb\v2023\tes} | |
Compare with project {eShopOnWeb v2022} most recent analysis result (analysis result obtained on 15 Jan 2025 11:24:27) | |
.NET Assemblies resolved from the Visual Studio solution file {C:\My\NDepend\WebSite\SampleReport\eShopOnWeb\v2023\eShopOnWeb.sln} C:\My\NDepend\WebSite\SampleReport\eShopOnWeb\v2023\src\ApplicationCore\bin\Debug\net7.0\ApplicationCore.dll C:\My\NDepend\WebSite\SampleReport\eShopOnWeb\v2023\src\BlazorAdmin\bin\Debug\net7.0\BlazorAdmin.dll C:\My\NDepend\WebSite\SampleReport\eShopOnWeb\v2023\src\BlazorShared\bin\Debug\net7.0\BlazorShared.dll C:\My\NDepend\WebSite\SampleReport\eShopOnWeb\v2023\src\Infrastructure\bin\Debug\net7.0\Infrastructure.dll C:\My\NDepend\WebSite\SampleReport\eShopOnWeb\v2023\src\PublicApi\bin\Debug\net7.0\PublicApi.dll C:\My\NDepend\WebSite\SampleReport\eShopOnWeb\v2023\src\Web\bin\Debug\net7.0\Web.dll | |
.NET Assemblies filtered out from the Visual Studio solution file {C:\My\NDepend\WebSite\SampleReport\eShopOnWeb\v2023\eShopOnWeb.sln} UnitTests IntegrationTests FunctionalTests PublicApiIntegrationTests | |
Serial mode | |
.NET Assemblies loaded from {C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\6.0.36} [ 0 , 19 ] Microsoft.AspNetCore.Hosting.Abstractions.dll v6.0.0.0 Microsoft.Extensions.Configuration.UserSecrets.dll v6.0.0.0 Microsoft.AspNetCore.Mvc.Core.dll v6.0.0.0 Microsoft.AspNetCore.Razor.Runtime.dll v6.0.0.0 Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.dll v6.0.0.0 Microsoft.AspNetCore.dll v6.0.0.0 Microsoft.AspNetCore.Authentication.Cookies.dll v6.0.0.0 Microsoft.AspNetCore.Routing.dll v6.0.0.0 Microsoft.AspNetCore.Mvc.RazorPages.dll v6.0.0.0 Microsoft.AspNetCore.Http.Abstractions.dll v6.0.0.0 Microsoft.AspNetCore.Mvc.Abstractions.dll v6.0.0.0 Microsoft.AspNetCore.Routing.Abstractions.dll v6.0.0.0 Microsoft.AspNetCore.Mvc.ViewFeatures.dll v6.0.0.0 Microsoft.AspNetCore.Authentication.Abstractions.dll v6.0.0.0 Microsoft.AspNetCore.Mvc.Razor.dll v6.0.0.0 Microsoft.AspNetCore.Razor.dll v6.0.0.0 Microsoft.AspNetCore.Mvc.TagHelpers.dll v6.0.0.0 Microsoft.AspNetCore.Identity.dll v6.0.0.0 Microsoft.AspNetCore.Http.Features.dll v6.0.0.0 Microsoft.AspNetCore.Html.Abstractions.dll v6.0.0.0 | |
.NET Assemblies loaded from {C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\6.0.36} [ 20 , 39 ] Microsoft.Extensions.Caching.Abstractions.dll v6.0.0.0 Microsoft.AspNetCore.CookiePolicy.dll v6.0.0.0 Microsoft.Extensions.Logging.Console.dll v6.0.0.0 Microsoft.Extensions.Hosting.Abstractions.dll v6.0.0.0 Microsoft.AspNetCore.Authentication.dll v6.0.0.0 Microsoft.Extensions.Configuration.EnvironmentVariables.dll v6.0.0.0 Microsoft.Extensions.Caching.Memory.dll v6.0.0.0 Microsoft.AspNetCore.Mvc.dll v6.0.0.0 Microsoft.AspNetCore.Http.dll v6.0.0.0 Microsoft.Extensions.Diagnostics.HealthChecks.dll v6.0.0.0 Microsoft.AspNetCore.Components.Server.dll v6.0.0.0 Microsoft.AspNetCore.Diagnostics.HealthChecks.dll v6.0.0.0 Microsoft.AspNetCore.Diagnostics.dll v6.0.0.0 Microsoft.AspNetCore.HttpsPolicy.dll v6.0.0.0 Microsoft.AspNetCore.StaticFiles.dll v6.0.0.0 Microsoft.AspNetCore.Authorization.Policy.dll v6.0.0.0 Microsoft.Extensions.Features.dll v6.0.0.0 Microsoft.AspNetCore.Cors.dll v6.0.0.0 Microsoft.AspNetCore.Mvc.ApiExplorer.dll v6.0.0.0 Microsoft.AspNetCore.Http.Results.dll v6.0.0.0 | |
No application or third party assembly found in directory {C:\My\NDepend\WebSite\SampleReport\eShopOnWeb\v2023\tes}. This directory doesn't need to be referenced by the NDepend project. | |
257 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 reference graph. | |
No coverage exclusion file provided (a file with extension .runsettings). | |
Coverage file correctly parsed: C:\My\NDepend\WebSite\SampleReport\eShopOnWeb\v2023\NDependStuff\Coverage_27Sep2023_DetailedXml.xml | |
The assembly {BlazorAdmin} is not in sync with corresponding coverage data. The analysis found 1 methods in the assembly that have no associated coverage data. For example, one of this method is {BlazorAdmin.Pages.CatalogItemPage.List.DetailsClick(Int32)} | |
Do merge code generated by compiler into application code. | |
SARIF .json files parsed successfully and number of issues imported: All these files are in the folder {C:\My\NDepend\WebSite\SampleReport\eShopOnWeb\v2023\.sarif}. ApplicationCore.json (44) BlazorAdmin.json (139) BlazorShared.json (16) FunctionalTests.json (37) Infrastructure.json (63) IntegrationTests.json (7) PublicApi.json (89) PublicApiIntegrationTests.json (24) UnitTests.json (56) Web.json (305) | |
501 issues emitted by 48 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\eShopOnWeb\v2023\NDependStuff\NDependOut\NDependAnalysisResult_eShopOnWeb_v2023_2025Mar11_11h50m29.ndar} | |
Execute queries and rules | |
Output report projects | |
Output report source files | |
The report lists 257 sources files (104 new and 37 modified since the baseline) on a total of 257 source files for the application analyzed. See 'Project Properties > Report' to adjust the set of source files listed in the report. | |
1 quality gate warns: - 'Treat Compiler Warnings as Error' value 2 issues greater than warn threshold 0 issues | |
8 quality gates fail: - 'Percentage Coverage' value 35.14 % lower than fail threshold 70 % - 'Percentage Coverage on New Code' value 44.04 % lower than fail threshold 70 % - 'Percentage Coverage on Refactored Code' value 52.4 % lower than fail threshold 70 % - 'New Blocker / Critical / High Issues' value 418 issues greater than fail threshold 0 issues - 'Critical Rules Violated' value 6 rules greater than fail threshold 0 rules - 'New Debt since Baseline' value 8.11 man-days greater than fail threshold 2 man-days - 'Debt Rating per Namespace' value 18 namespaces greater than fail threshold 0 namespaces - 'New Annual Interest since Baseline' value 13 man-days greater than fail threshold 2 man-days | |
Building the report (standard, not compressed). | |
NDepend analysis done. Duration: 00:08.323 |
Application Statistics
Stat | # Occurences | Avg | StdDev | Max |
---|---|---|---|---|
Properties on interfaces | 16 interfaces | 0.06 | 0.24 | 1 properties on BlazorShared.Interfaces.ILookupDataResponse<TLookupData> |
Methods on interfaces | 16 interfaces | 1.69 | 1.57 | 6 methods on BlazorShared.Interfaces.ICatalogItemService |
Arguments on methods on interfaces | 27 methods | 1.3 | 1.05 | 4 arguments on Microsoft.eShopWeb.Web.Services.ICatalogViewModelService.GetCatalogItems(Int32,Int32,Nullable<Int32>,Nullable<Int32>) |
Public properties on classes | 314 Classes | 1.99 | 2.57 | 15 public properties on <>f__AnonymousType8<<Id>j__TPar,<UserName>j__TPar,<NormalizedUserName>j__TPar,<Email>j__TPar,<NormalizedEmail>j__TPar,<EmailConfirmed>j__TPar,<PasswordHash>j__TPar,<SecurityStamp>j__TPar,<ConcurrencyStamp>j__TPar,<PhoneNumber>j__TPar,<PhoneNumberConfirmed>j__TPar,<TwoFactorEnabled>j__TPar,<LockoutEnd>j__TPar,<LockoutEnabled>j__TPar,<AccessFailedCount>j__TPar> |
Public methods on classes | 314 classes | 4.66 | 4 | 25 public methods on BlazorShared.Models.CatalogItem |
Arguments on public methods on classes | 1,462 methods | 0.55 | 1.19 | 15 arguments on <>f__AnonymousType8<<Id>j__TPar,<UserName>j__TPar,<NormalizedUserName>j__TPar,<Email>j__TPar,<NormalizedEmail>j__TPar,<EmailConfirmed>j__TPar,<PasswordHash>j__TPar,<SecurityStamp>j__TPar,<ConcurrencyStamp>j__TPar,<PhoneNumber>j__TPar,<PhoneNumberConfirmed>j__TPar,<TwoFactorEnabled>j__TPar,<LockoutEnd>j__TPar,<LockoutEnabled>j__TPar,<AccessFailedCount>j__TPar>..ctor(<Id>j__TPar,<UserName>j__TPar,<NormalizedUserName>j__TPar,<Email>j__TPar,<NormalizedEmail>j__TPar,<EmailConfirmed>j__TPar,<PasswordHash>j__TPar,<SecurityStamp>j__TPar,<ConcurrencyStamp>j__TPar,<PhoneNumber>j__TPar,<PhoneNumberConfirmed>j__TPar,<TwoFactorEnabled>j__TPar,<LockoutEnd>j__TPar,<LockoutEnabled>j__TPar,<AccessFailedCount>j__TPar) |
IL instructions in non-abstract methods | 2,015 methods | 57.15 | 276.69 | 5988 IL instructions in Microsoft.eShopWeb.Web.Pages.Shared.Views_Shared__Layout.ExecuteAsync() |
Cyclomatic complexity on non abstract Methods | 2,015 Methods | 4.02 | 16.28 | CC = 383 for Microsoft.eShopWeb.Web.Pages.Shared.Views_Shared__Layout.ExecuteAsync() |
Projects Metrics
Clicking column header arrows sorts values.
Clicking column header title text redirect to the online Code Metric definition.
Projects | # lines of code | # IL instruction | # Types | # Abstract Types | # lines of comment | % Comment | % Coverage | Afferent Coupling | Efferent Coupling | Relational Cohesion | Instability | Abstractness | Distance |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ApplicationCore v1.0.0.0 | 268 | 3240 | 49 | 11 | 31 | 10.37 | 77.61 | 43 | 83 | 2.86 | 0.66 | 0.22 | 0.08 |
Infrastructure v1.0.0.0 | 753 | 14923 | 52 | 0 | 22 | 2.84 | 13.81 | 13 | 170 | 1.77 | 0.93 | 0 | 0.05 |
BlazorShared v1.0.0.0 | 117 | 656 | 23 | 4 | 2 | 1.68 | 35.04 | 20 | 38 | 0.83 | 0.66 | 0.17 | 0.12 |
BlazorAdmin v1.0.0.0 | 496 | 14852 | 43 | 0 | 6 | 1.2 | 1.41 | 1 | 169 | 2.21 | 0.99 | 0 | 0 |
Web v1.0.0.0 | 1044 | 76539 | 126 | 3 | 35 | 3.24 | 42.05 | 0 | 398 | 2.79 | 1 | 0.02 | 0.02 |
PublicApi v1.0.0.0 | 367 | 4948 | 39 | 3 | 46 | 11.14 | 73.84 | 0 | 190 | 3.28 | 1 | 0.08 | 0.05 |
Quality Gates 318 |
|
Quality Gate Fail: Percentage Coverage |
Scalar Result: 35.14 %
Quality Gate Fail: Percentage Coverage on New Code |
Scalar Result: 44.04 %
Quality Gate Fail: Percentage Coverage on Refactored Code |
Scalar Result: 52.4 %
Quality Gate Pass: Blocker Issues |
No issuematched
Quality Gate Pass: Critical Issues |
No issuematched
Quality Gate Fail: New Blocker / Critical / High Issues |
418 issues matched
418 issues | Severity | Debt | Annual Interest | Full Name |
---|---|---|---|---|
High issue on: | 06High | |m5|06| 10min | 061h 0min | Rule violated: From now, all types added should be 100% covered by tests |
High issue on: | 05High | |m5|05| 10min | 051h 0min | Rule violated: From now, all types added should be 100% covered by tests |
High issue on: | 07High | |m5|07| 10min | 071h 0min | Rule violated: From now, all types added should be 100% covered by tests |
High issue on: | 09High | |m5|09| 10min | 091h 0min | Rule violated: From now, all types added should be 100% covered by tests |
High issue on: | 08High | |m5|08| 10min | 081h 0min | Rule violated: From now, all types added should be 100% covered by tests |
High issue on: | 01High | |m5|01| 10min | 011h 0min | Rule violated: From now, all types added should be 100% covered by tests |
High issue on: | 00High | |m5|00| 10min | 001h 0min | Rule violated: From now, all types added should be 100% covered by tests |
High issue on: | 02High | |m5|02| 10min | 021h 0min | Rule violated: From now, all types added should be 100% covered by tests |
High issue on: | 04High | |m5|04| 10min | 041h 0min | Rule violated: From now, all types added should be 100% covered by tests |
High issue on: | 03High | |m5|03| 10min | 031h 0min | Rule violated: From now, all types added should be 100% covered by tests |
High issue on: | 16High | |m5|16| 10min | 161h 0min | Rule violated: From now, all types added should be 100% covered by tests |
High issue on: | 15High | |m5|15| 10min | 151h 0min | Rule violated: From now, all types added should be 100% covered by tests |
High issue on: | 17High | |m5|17| 10min | 171h 0min | Rule violated: From now, all types added should be 100% covered by tests |
High issue on: | 19High | |m5|19| 10min | 191h 0min | Rule violated: From now, all types added should be 100% covered by tests |
High issue on: | 18High | |m5|18| 10min | 181h 0min | Rule violated: From now, all types added should be 100% covered by tests |
High issue on: | 11High | |m5|11| 10min | 111h 0min | Rule violated: From now, all types added should be 100% covered by tests |
High issue on: | 10High | |m5|10| 10min | 101h 0min | Rule violated: From now, all types added should be 100% covered by tests |
High issue on: | 12High | |m5|12| 10min | 121h 0min | Rule violated: From now, all types added should be 100% covered by tests |
High issue on: | 14High | |m5|14| 10min | 141h 0min | Rule violated: From now, all types added should be 100% covered by tests |
High issue on: | 13High | |m5|13| 10min | 131h 0min | Rule violated: From now, all types added should be 100% covered by tests |
Quality Gate Fail: Critical Rules Violated |
6 rules matched
6 rules | issues | Full Name |
---|---|---|
Avoid types too big | |m0|3|
1 issue
| Rule |
Avoid namespaces mutually dependent | |m66|1|
First 5 of 7 issues
| Rule |
Methods | |m55|2|
First 5 of 6 issues
| Rule |
Software Composition Analysis (SCA) | |m0|5|
1 issue
| Rule |
Transitive Software Composition Analysis (SCA) | |m0|4|
1 issue
| Rule |
Avoid having different types with same name | |m100|0|
First 5 of 10 issues
| Rule |
Quality Gate Warn: Treat Compiler Warnings as Error |
2 issues matched
2 issues | Explanation | Full Name |
---|---|---|
C# BasketWithItemsSpecification .cs L6 | 0 'Use ISingleResultSpecification<T> instead. This interface will be removed in a future version of Ardalis.Specification.' | Rule violated: Type or member is obsolete |
C# OrderWithItemsByIdSpec.cs L6 | 1 'Use ISingleResultSpecification<T> instead. This interface will be removed in a future version of Ardalis.Specification.' | Rule violated: Type or member is obsolete |
Quality Gate Pass: Percentage Debt |
Scalar Result: 10.63 %
Quality Gate Fail: New Debt since Baseline |
Scalar Result: 8.11 man-days
Quality Gate Fail: Debt Rating per Namespace |
18 namespaces matched
18 namespaces | debtRating | debtRatio | devTimeInManDay | debtInManDay | issues | Full Name |
---|---|---|---|---|---|---|
09D | |m2|12| 26.55 | |m4|09| 2h 26min | |m1|13| 39min | |m7|08|
First 5 of 11 issues
| Microsoft.eShopWeb | |
05E | |m29|02| 84.18 | |m5|07| 3h 10min | |m9|03| 2h 40min | |m2|15|
5 issues
| Microsoft.eShopWeb.ApplicationCore .Interfaces | |
08D | |m3|10| 28.23 | |m3|11| 2h 18min | |m1|12| 39min | |m6|10|
First 5 of 9 issues
| Microsoft.eShopWeb.ApplicationCore .Exceptions | |
06D | |m2|13| 26.04 | |m0|14| 51min | |m0|16| 13min | |m6|09|
First 5 of 10 issues
| Microsoft.eShopWeb.ApplicationCore .Constants | |
02E | |m14|05| 51.75 | |m0|16| 43min | |m0|15| 22min | |m2|14|
5 issues
| Ardalis.GuardClauses | |
10D | |m2|14| 25.73 | |m17|03| 1d 0h | |m7|06| 2h 6min | |m4|11|
First 5 of 7 issues
| BlazorAdmin | |
07D | |m0|17| 20.18 | |m80|01| 4d 4h | |m27|01| 7h 21min | |m80|01|
First 5 of 95 issues
| BlazorAdmin.Services | |
03E | |m42|01| 110.82 | |m0|17| 34min | |m1|14| 38min | |m4|12|
First 5 of 7 issues
| Microsoft.AspNetCore.Mvc | |
15D | |m5|07| 32.2 | |m3|12| 2h 9min | |m1|10| 41min | |m7|07|
First 5 of 11 issues
| Microsoft.eShopWeb.Web | |
01E | |m100|00| 234.79 | |m0|13| 1h 0min | |m8|05| 2h 22min | |m0|16|
3 issues
| Microsoft.eShopWeb.Web.Interfaces | |
16D | |m9|06| 40.52 | |m7|06| 4h 1min | |m5|07| 1h 38min | |m15|02|
First 5 of 20 issues
| Microsoft.eShopWeb.Web .HealthChecks | |
17D | |m4|08| 30.2 | |m5|08| 3h 1min | |m2|09| 54min | |m3|13|
First 5 of 6 issues
| Microsoft.eShopWeb.Web.ViewModels .File | |
14D | |m0|16| 20.72 | |m26|02| 1d 4h | |m9|04| 2h 35min | |m9|05|
First 5 of 13 issues
| Microsoft.eShopWeb.Web.ViewModels .Account | |
11D | |m1|15| 23.63 | |m8|05| 4h 19min | |m3|08| 1h 1min | |m8|06|
First 5 of 12 issues
| Microsoft.eShopWeb.Web.Features .OrderDetails | |
00E | |m17|04| 58.12 | |m100|00| 5d 5h | |m100|00| 3d 2h | |m100|00|
First 5 of 117 issues
| Microsoft.eShopWeb.Web.Controllers | |
12D | |m4|09| 30.09 | |m0|15| 43min | |m0|17| 13min | |m0|17|
2 issues
| Microsoft.eShopWeb.Web.Areas .Identity | |
04E | |m22|03| 67.81 | |m11|04| 5h 45min | |m14|02| 3h 54min | |m13|03|
First 5 of 18 issues
| Microsoft.eShopWeb.PublicApi | |
13D | |m3|11| 28.04 | |m4|10| 2h 26min | |m1|11| 41min | |m11|04|
First 5 of 15 issues
| Microsoft.eShopWeb.PublicApi .Middleware |
Quality Gate Fail: New Annual Interest since Baseline |
Scalar Result: 13 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 |
R# Code Inspections 000 |
Rules extracted from Source Code 000 |
Project Rules 123406 |
Code Smells 611 |
|
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.
1 type matched |
Formatting: bold✱ means added ● means code was changed |
1 type | nbMethods | instanceMethods | staticMethods | # lines of code (LOC) | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|---|
|m0|0| 25 | |m0|0|
First 5 of 25 methods
| 0no method | |m0|0| 212 | |m0|0| 1h 15min | 05min | Microsoft.eShopWeb.Web.Controllers .ManageController |
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 |
1 type | locJustMyCode | # IL instructions | Methods | Fields | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|---|
|m0|0| 212 | |m0|0| 5 348 | |m0|0|
First 5 of 27 methods
| |m0|0|
First 5 of 8 fields
| |m0|0| 1h 3min | 02min 47s | Microsoft.eShopWeb.Web.Controllers .ManageController |
Code Smells Regression 630 |
Rule Violated: ND1101 From now, all types added should be 100% covered by tests |
• 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. 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. Issues of this rule have a constant 10 minutes Debt, because the Debt, which means the effort to write tests for the culprit type, is already estimated for issues in the category Code Coverage. However issues of this rule have a High severity, with even more interests for issues on new types since baseline, because the proper time to write tests for these types is now, before they get committed in the next production release.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1101:FromNowAllTypesAddedShouldBe100PercentCoveredByTests", 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 types matched |
Formatting: bold✱ means added ● means code was changed |
Matched code elements on code base treemap
Statistics
Stat | Percentage Coverage | methodsCulprit | # lines of code not covered | # lines of code (LOC) | Debt | Annual Interest |
---|---|---|---|---|---|---|
Sum: | 1 283 | 170 | 500 | 717 | 1d 0h | 6d 1h |
Average: | 26.17 | 3.47 | 10.2 | 14.63 | 10min | 1h 0min |
Minimum: | 0 | 0 | 0 | 0 | 10min | 1h 0min |
Maximum: | 94.12 | 25 | 192 | 212 | 10min | 1h 0min |
Standard deviation: | 35.3 | 3.9 | 27.1 | 30.23 | 0min 0s | 0min 0s |
Variance: | 1 246 | 15.23 | 734.28 | 913.91 | 0min 0s | 0min 0s |
Rule Violated: ND1103 Avoid decreasing code coverage by tests of types |
• How to Fix Issues of this Rule: Write more unit-tests dedicated to cover changes in matched types 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. The estimated Debt, which means the effort to cover by test code that used to be covered, varies linearly 15 minutes to 3 hours, depending on the number of lines of code that are not covered by tests anymore. Severity of issues of this rule varies from High to Critical depending on the number of lines of code that are not covered by tests anymore. Because the loss in code coverage happened since the baseline, the severity is high 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", "ND1103:AvoidDecreasingCodeCoverageByTestsOfTypes", 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 | OldCoveragePercent | NewCoveragePercent | OldLoc | NewLoc | uncoveredLoc | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|---|---|
|m0|3| 62.16 | |m75|1| 56.76 | |m100|0| 37 | |m100|0| 37 | |m100|1| 2 | |m100|1| 16min | 124min | Microsoft.eShopWeb.ApplicationCore .Entities.CatalogItem | |
|m55|2| 83.33 | |m66|2| 50 | |m13|1| 6 | |m13|1| 6 | |m100|0| 2 | |m100|0| 16min | 024min | Microsoft.eShopWeb.PublicApi .CatalogItemEndpoints .DeleteCatalogItemResponse | |
|m100|0| 100 | |m0|3| 0 | |m0|3| 1 | |m0|3| 1 | |m0|3| 1 | |m0|3| 15min | 320min | Microsoft.eShopWeb.ApplicationCore .Exceptions .BasketNotFoundException | |
|m100|1| 100 | |m100|0| 75 | |m8|2| 4 | |m8|2| 4 | |m0|2| 1 | |m0|2| 15min | 220min | BlazorShared.BaseUrlConfiguration |
Rule Violated: ND1105 Avoid making large methods even larger |
• How to Fix Issues of this Rule: Usually too big methods should be split in smaller methods. But long methods with no branch conditions, that typically initialize some data, are not necessarily a problem to maintain, and might not need refactoring. The estimated Debt, which means the effort to fix such issue, varies linearly from 5 to 20 minutes depending on the number of lines of code added. The estimated Debt, which means the effort to fix such issue, varies linearly from 10 to 60 minutes depending on the extra complexity 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", "ND1105:AvoidMakingLargeMethodsEvenLarger", 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 | oldLoc | newLoc | diff | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|
|m0|0| 64 | |m0|0| 65 | |m0|0| 1 | |m0|0| 10min | 020min | Program.<Main>$(String[]) |
Object Oriented Design 950 |
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 |
---|---|---|---|---|
03public | |m0|03| 2min 0s | 03Medium | Microsoft.eShopWeb.ApplicationCore .Exceptions .BasketNotFoundException | |
04public | |m0|04| 2min 0s | 04Medium | Microsoft.eShopWeb.ApplicationCore .Constants.AuthorizationConstants | |
05public | |m0|05| 2min 0s | 05Medium | Microsoft.eShopWeb.ApplicationCore .Entities.BuyerAggregate .PaymentMethod | |
00public | |m0|00| 2min 0s | 00Medium | Microsoft.eShopWeb.Infrastructure .Data.FileItem | |
01public | |m0|01| 2min 0s | 01Medium | BlazorShared.Models .CreateCatalogItemResponse | |
02public | |m0|02| 2min 0s | 02Medium | BlazorShared.Models .DeleteCatalogItemResponse | |
06public | |m0|06| 2min 0s | 06Medium | BlazorShared.Models .EditCatalogItemResult | |
10public | |m0|10| 2min 0s | 10Medium | BlazorShared.Models .PagedCatalogItemResponse | |
11public | |m0|11| 2min 0s | 11Medium | BlazorAdmin.JavaScript.Cookies | |
12public | |m0|12| 2min 0s | 12Medium | Microsoft.eShopWeb.PublicApi .CatalogItemEndpoints .CreateCatalogItemRequest | |
07public | |m0|07| 2min 0s | 07Medium | Microsoft.eShopWeb.PublicApi .AuthEndpoints.AuthenticateRequest | |
08public | |m0|08| 2min 0s | 08Medium | Microsoft.eShopWeb.PublicApi .AuthEndpoints.ClaimValue | |
09public | |m0|09| 2min 0s | 09Medium | Microsoft.eShopWeb.PublicApi .AuthEndpoints .AuthenticateEndpoint |
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.
7 methods matched |
Formatting: bold✱ means added ● means code was changed |
7 methods | virtualMethodsCalled | DerivedTypes | Debt | Severity | Full Name |
---|---|---|---|---|---|
|m0|2|
1 method
| 2no type | |m0|2| 4min 0s | 2High | Microsoft.eShopWeb.ApplicationCore .Specifications .CustomerOrdersSpecification..ctor (String) | |
|m0|1|
1 method
| 1no type | |m0|1| 4min 0s | 1High | Microsoft.eShopWeb.ApplicationCore .Specifications .CatalogFilterPaginatedSpecificati on..ctor(Int32,Int32,Nullable <Int32>,Nullable<Int32>) | |
|m0|0|
1 method
| 0no type | |m0|0| 4min 0s | 0High | Microsoft.eShopWeb.ApplicationCore .Specifications .CatalogFilterSpecification..ctor (Nullable<Int32>,Nullable<Int32>) | |
|m0|3|
1 method
| 3no type | |m0|3| 4min 0s | 3High | Microsoft.eShopWeb.ApplicationCore .Specifications .CatalogItemNameSpecification. .ctor(String) | |
|m0|6|
1 method
| 6no type | |m0|6| 4min 0s | 6High | Microsoft.eShopWeb.ApplicationCore .Specifications .CatalogItemsSpecification..ctor (Int32[]) | |
|m0|5|
1 method
| 5no type | |m0|5| 4min 0s | 5High | Microsoft.eShopWeb.ApplicationCore .Specifications .CustomerOrdersWithItemsSpecificat ion..ctor(String) | |
|m0|4|
1 method
| 4no type | |m0|4| 4min 0s | 4High | Microsoft.eShopWeb.ApplicationCore .Specifications .OrderWithItemsByIdSpec..ctor (Int32) |
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 |
---|---|---|---|---|---|
0no field | 1no method | |m0|1| 0min 30s | 0Medium | Microsoft.eShopWeb.Web.ViewModels .OrderItemViewModel.get_Discount() | |
1no field | |m100|0|
2 methods | |m100|0| 1min 30s | 1Medium | BlazorAdmin.Services.HttpService .ToJson(Object) |
Rule Violated: ND1212 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.
1 type matched |
Formatting: bold✱ means added ● means code was changed |
1 type | TypesThatImplementMe | Debt | Severity | Full Name |
---|---|---|---|---|
|m0|0|
First 5 of 6 types | |m0|0| 28min | 0Medium | Microsoft.eShopWeb.ApplicationCore .Interfaces.IAggregateRoot |
Rule Violated: ND1206 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.
1 type matched |
Formatting: bold✱ means added ● means code was changed |
1 type | methodsUsingMe | Debt | Severity | Full Name |
---|---|---|---|---|
0no method | |m0|0| 1min 0s | 0Low | Microsoft.eShopWeb.ApplicationCore .Constants.AuthorizationConstants |
Design 930 |
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.
14 namespaces matched |
Formatting: bold✱ means added ● means code was changed |
14 namespaces | types | Debt | Severity | Full Name |
---|---|---|---|---|
|m0|09|
1 type | |m0|04| 5min | 04Low | Microsoft.AspNetCore.Mvc | |
|m33|08|
2 types | |m0|05| 5min | 05Low | Microsoft.eShopWeb.Web | |
|m33|06|
2 types | |m0|06| 5min | 06Low | Microsoft.eShopWeb.Web .HealthChecks | |
|m33|04|
2 types | |m0|03| 5min | 03Low | Microsoft.eShopWeb.Web.Features .OrderDetails | |
|m33|05|
2 types | |m0|00| 5min | 00Low | Microsoft.eShopWeb.Web.Features .MyOrders | |
|m100|00|
4 types | |m0|01| 5min | 01Low | Microsoft.eShopWeb.Web .Configuration | |
|m0|12|
1 type | |m0|02| 5min | 02Low | Microsoft.eShopWeb.ApplicationCore .Constants | |
|m0|13|
1 type | |m0|11| 5min | 11Low | Ardalis.GuardClauses | |
|m0|10|
1 type | |m0|12| 5min | 12Low | Microsoft.eShopWeb.Infrastructure | |
|m0|11|
1 type | |m0|13| 5min | 13Low | Microsoft.eShopWeb.PublicApi .Middleware | |
|m33|07|
2 types | |m0|10| 5min | 10Low | Microsoft.eShopWeb | |
|m66|02|
3 types | |m0|07| 5min | 07Low | Microsoft.eShopWeb.PublicApi .CatalogTypeEndpoints | |
|m66|03|
3 types | |m0|08| 5min | 08Low | Microsoft.eShopWeb.PublicApi .CatalogBrandEndpoints | |
|m100|01|
4 types | |m0|09| 5min | 09Low | BlazorAdmin.JavaScript |
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.
2 types matched |
Formatting: bold✱ means added ● means code was changed |
2 types | Visibility | typesUser | Debt | Severity | Full Name |
---|---|---|---|---|---|
0public | |m100|0|
2 types | |m100|0| 10min | 0Medium | Microsoft.eShopWeb.ApplicationCore .Entities .CatalogItem+CatalogItemDetails | |
1public | 1no type | |m0|1| 2min 0s | 1Medium | BlazorShared.Authorization .Constants+Roles |
Rule Violated: ND1310 Attribute classes should be sealed |
• How to Fix Issues of this Rule: To fix a violation of this rule, seal the attribute type or make it abstract.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND1310:AttributeClassesShouldBeSealed", 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 | # lines of code (LOC) | Debt | Severity | Full Name |
---|---|---|---|---|
|m0|0| 2 | |m0|0| 2min 0s | 0Medium | BlazorShared.Attributes .EndpointAttribute |
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.
10 members matched |
Formatting: bold✱ means added ● means code was changed |
10 types and methods | shouldntUse | becauseNamespace | shouldntUseNamespace | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|
|m0|04|
1 type | 03 | 03 | |m0|04| 15min | 011h 1min | Microsoft.eShopWeb.Web.Interfaces .IBasketViewModelService | |
|m0|05|
1 type | 04 | 04 | |m0|05| 15min | 031h 0min | Microsoft.eShopWeb.ApplicationCore .Entities.BasketAggregate.Basket | |
|m0|02|
1 type | 02 | 02 | |m0|02| 15min | 021h 1min | Microsoft.eShopWeb.ApplicationCore .Entities.OrderAggregate.Order | |
|m0|03|
1 type | 00 | 00 | |m0|03| 15min | 0430min | BlazorShared.Models .CatalogBrandResponse | |
|m0|08|
1 type | 01 | 01 | |m0|08| 15min | 0530min | BlazorShared.Models .CatalogTypeResponse | |
|m0|09|
1 type | 08 | 08 | |m0|09| 15min | 001h 3min | Microsoft.eShopWeb.PublicApi .MappingProfile | |
|m0|06|
1 type | 09 | 09 | |m0|06| 15min | 0830min | Microsoft.eShopWeb.PublicApi .MappingProfile | |
|m0|07|
1 type | 07 | 07 | |m0|07| 15min | 0930min | Microsoft.eShopWeb.PublicApi .MappingProfile..ctor() | |
|m100|00|
1 method 1 property | 05 | 05 | |m100|00| 20min | 0630min | Microsoft.eShopWeb.PublicApi .MappingProfile | |
|m100|01|
1 method 1 property | 06 | 06 | |m100|01| 20min | 0730min | Microsoft.eShopWeb.PublicApi .MappingProfile..ctor() |
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.
4 namespaces matched |
Formatting: bold✱ means added ● means code was changed |
4 namespaces | cycle | Debt | Severity | Full Name |
---|---|---|---|---|
|m0|2|
2 namespaces | |m0|1| 2h 0min | 1High | Microsoft.eShopWeb.Web.Interfaces | |
|m100|0|
4 namespaces | |m0|0| 2h 0min | 0High | Microsoft.eShopWeb.ApplicationCore .Interfaces | |
|m0|3|
2 namespaces | |m0|3| 2h 0min | 3High | BlazorShared.Models | |
|m100|1|
4 namespaces | |m0|2| 2h 0min | 2High | Microsoft.eShopWeb.PublicApi |
API Breaking Changes 501 |
|
Critical Rule Violated: ND1501 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.
7 methods matched |
Formatting: bold✱ means added ● means code was changed |
7 methods | NewVisibility | reason | Debt | Severity | Full Name |
---|---|---|---|---|---|
2 | 2is public and has different parameters than in baseline | |m0|2| 10min | 2High | Microsoft.eShopWeb.ApplicationCore .Entities.CatalogItem .UpdateDetails(String,String ,Decimal) | |
1 | 1was public and has been removed | |m0|1| 10min | 1High | Ardalis.GuardClauses.BasketGuards .NullBasket(IGuardClause,Int32 ,Basket) | |
0 | 0is public and has different parameters than in baseline | |m0|0| 10min | 0High | Microsoft.eShopWeb.Infrastructure .Identity.AppIdentityDbContextSeed .SeedAsync(UserManager <ApplicationUser>,RoleManager <IdentityRole>) | |
3Public | 3is public and has a different return type | |m0|3| 10min | 3High | Microsoft.eShopWeb.PublicApi .CatalogItemEndpoints .ListPagedCatalogItemRequest .get_PageSize() | |
6 | 6is public and has different parameters than in baseline | |m0|6| 10min | 6High | Microsoft.eShopWeb.PublicApi .CatalogItemEndpoints .ListPagedCatalogItemRequest .set_PageSize(Nullable<Int32>) | |
5Public | 5is public and has a different return type | |m0|5| 10min | 5High | Microsoft.eShopWeb.PublicApi .CatalogItemEndpoints .ListPagedCatalogItemRequest .get_PageIndex() | |
4 | 4is public and has different parameters than in baseline | |m0|4| 10min | 4High | Microsoft.eShopWeb.PublicApi .CatalogItemEndpoints .ListPagedCatalogItemRequest .set_PageIndex(Nullable<Int32>) |
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.
199 members matched |
Formatting: bold✱ means added ● means code was changed |
199 types and methods | Percentage Coverage | # lines of code (LOC) | # lines of code not covered | Cyclomatic Complexity (CC) | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|---|
|c0|06| 0% | |m60|00| 39 | |m70|00| 39 | |m38|03| 8 | |m100|00| 2h 54min | 0028min | Microsoft.eShopWeb.Web.Controllers .UserController | |
|c0|05| 0% | |m43|01| 28 | |m50|01| 28 | |m47|00| 10 | |m57|01| 1h 40min | 0124min | Microsoft.eShopWeb.Web.Areas .Identity.Pages.Account .RegisterModel | |
|c0|07| 0% | |m13|05| 9 | |m16|05| 9 | |m23|13| 5 | |m9|08| 18min | 0216min | Microsoft.eShopWeb.Web.Pages.Admin .EditCatalogItemModel | |
|c0|09| 0% | |m12|08| 8 | |m14|08| 8 | |m38|04| 8 | |m9|06| 18min | 0516min | Microsoft.eShopWeb.Web.ViewModels .Manage.ChangePasswordViewModel | |
|c0|08| 0% | |m12|07| 8 | |m14|07| 8 | |m38|01| 8 | |m9|05| 18min | 0416min | Microsoft.eShopWeb.Web.ViewModels .Manage.ExternalLoginsViewModel | |
|c0|01| 0% | |m12|06| 8 | |m14|06| 8 | |m38|02| 8 | |m9|07| 18min | 0316min | Microsoft.eShopWeb.Web.ViewModels .Account.ResetPasswordViewModel | |
|c0|00| 0% | |m6|19| 4 | |m7|19| 4 | |m23|15| 5 | |m5|19| 11min | 0613min | Microsoft.eShopWeb.Web.Pages .ErrorModel | |
|c0|02| 0% | |m9|10| 6 | |m10|10| 6 | |m28|07| 6 | |m6|16| 13min | 0912min | Microsoft.eShopWeb.Web.ViewModels .Manage .EnableAuthenticatorViewModel | |
|c0|04| 0% | |m9|16| 6 | |m10|16| 6 | |m28|08| 6 | |m6|15| 13min | 0812min | Microsoft.eShopWeb.Web.ViewModels .Manage.SetPasswordViewModel | |
|c0|03| 0% | |m9|11| 6 | |m10|11| 6 | |m28|05| 6 | |m6|12| 13min | 0712min | Microsoft.eShopWeb.Web.ViewModels .Manage .TwoFactorAuthenticationViewModel | |
|c0|16| 0% | |m9|18| 6 | |m10|18| 6 | |m28|06| 6 | |m6|17| 13min | 1312min | Microsoft.eShopWeb.Web.ViewModels .File.FileViewModel | |
|c0|15| 0% | |m9|13| 6 | |m10|13| 6 | |m28|11| 6 | |m6|14| 13min | 1412min | Microsoft.eShopWeb.Web.ViewModels .Account.LoginViewModel | |
|c0|17| 0% | |m9|12| 6 | |m10|12| 6 | |m28|12| 6 | |m6|11| 13min | 1212min | Microsoft.eShopWeb.Web.ViewModels .Account.LoginWith2faViewModel | |
|c0|19| 0% | |m9|15| 6 | |m10|15| 6 | |m28|09| 6 | |m6|10| 13min | 1012min | Microsoft.eShopWeb.Web.ViewModels .Account.RegisterViewModel | |
|c0|18| 0% | |m9|14| 6 | |m10|14| 6 | |m28|10| 6 | |m6|13| 13min | 1112min | Microsoft.eShopWeb.Web.Areas .Identity.Pages.Account .RegisterModel+InputModel | |
|c0|11| 0% | |m9|17| 6 | |m10|17| 6 | |m23|14| 5 | |m6|18| 13min | 1510min | Microsoft.eShopWeb.Web.ViewModels .Manage.RemoveLoginViewModel | |
|c0|10| 0% | |m18|03| 12 | |m21|03| 12 | |m4|19| 1 | |m11|04| 22min | 169min | Microsoft.eShopWeb.PublicApi .CatalogItemEndpoints .UpdateCatalogItemEndpoint .HandleAsync (UpdateCatalogItemRequest ,IRepository<CatalogItem>) | |
|c0|12| 0% | |m21|02| 14 | |m25|02| 14 | |m14|17| 3 | |m14|03| 26min | 177min | Microsoft.eShopWeb.Web.Areas .Identity.Pages.Account .LogoutModel | |
|c0|14| 0% | |m12|09| 8 | |m14|09| 8 | |m14|16| 3 | |m16|02| 30min | 186min | Microsoft.eShopWeb.Web.Controllers .ManageController.FormatKey (String ) | |
|c0|13| 0% | |m15|04| 10 | |m18|04| 10 | |m9|18| 2 | |m9|09| 18min | 196min | Microsoft.eShopWeb.Web.Controllers .OrderController |
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.
73 members matched |
Formatting: bold✱ means added ● means code was changed |
73 types and methods | Percentage Coverage | # lines of code (LOC) | # lines of code not covered | Cyclomatic Complexity (CC) | Debt | Severity | Full Name |
---|---|---|---|---|---|---|---|
|c0|06| 0% | |m100|00| 39 | |m100|00| 39 | |m80|01| 8 | |m100|00| 25min | 06High | Microsoft.eShopWeb.Web.Controllers .UserController | |
|c0|05| 0% | |m71|01| 28 | |m71|01| 28 | |m100|00| 10 | |m99|01| 25min | 05High | Microsoft.eShopWeb.Web.Areas .Identity.Pages.Account .RegisterModel | |
|c0|07| 0% | |m42|02| 17 | |m42|02| 17 | |m50|03| 5 | |m33|14| 10min | 07High | Microsoft.eShopWeb.Web.Controllers .ManageController .EnableAuthenticator (EnableAuthenticatorViewModel) | |
|c0|09| 0% | |m34|04| 14 | |m34|04| 14 | |m30|05| 3 | |m33|09| 10min | 09High | Microsoft.eShopWeb.Web.Controllers .ManageController .SendVerificationEmail (IndexViewModel) | |
|c0|08| 0% | |m34|03| 14 | |m34|03| 14 | |m30|08| 3 | |m53|02| 14min | 08High | Microsoft.eShopWeb.Web.Areas .Identity.Pages.Account .LogoutModel | |
|c0|01| 0% | |m31|05| 13 | |m31|05| 13 | |m30|09| 3 | |m33|10| 10min | 01High | Microsoft.eShopWeb.Web.Controllers .ManageController.ChangePassword (ChangePasswordViewModel) | |
|c0|00| 0% | |m28|07| 12 | |m28|07| 12 | |m30|07| 3 | |m33|12| 10min | 00High | Microsoft.eShopWeb.Web.Controllers .ManageController.SetPassword (SetPasswordViewModel) | |
|c0|02| 0% | |m28|06| 12 | |m28|06| 12 | |m30|12| 3 | |m33|08| 10min | 02High | Microsoft.eShopWeb.Web.Controllers .ManageController .LinkLoginCallback() | |
|c0|04| 0% | |m26|09| 11 | |m26|09| 11 | |m30|06| 3 | |m33|11| 10min | 04High | Microsoft.eShopWeb.Web.Controllers .ManageController.RemoveLogin (RemoveLoginViewModel) | |
|c0|03| 0% | |m26|08| 11 | |m26|08| 11 | |m50|02| 5 | |m42|05| 12min | 03High | Microsoft.eShopWeb.Web.Areas .Identity.Pages.Account .ConfirmEmailModel | |
|c0|16| 0% | |m23|12| 10 | |m23|12| 10 | |m20|19| 2 | |m33|13| 10min | 16High | Microsoft.eShopWeb.Web.Controllers .ManageController.ExternalLogins( ) | |
|c0|15| 0% | |m23|11| 10 | |m23|11| 10 | |m20|16| 2 | |m38|06| 11min | 15High | Microsoft.eShopWeb.Web .HealthChecks.HomePageHealthCheck | |
|c0|17| 0% | |m23|10| 10 | |m23|10| 10 | |m20|17| 2 | |m42|04| 12min | 17High | Microsoft.eShopWeb.Web.Controllers .OrderController | |
|c0|19| 0% | |m21|15| 9 | |m21|15| 9 | |m30|11| 3 | |m29|15| 9min | 19High | Microsoft.eShopWeb.Web.Controllers .ManageController .GenerateRecoveryCodes() | |
|c0|18| 0% | |m21|14| 9 | |m21|14| 9 | |m20|18| 2 | |m34|07| 10min | 18High | Microsoft.eShopWeb.Web .HealthChecks.ApiHealthCheck | |
|c0|11| 0% | |m21|13| 9 | |m21|13| 9 | |m50|04| 5 | |m48|03| 13min | 11High | Microsoft.eShopWeb.Web.Pages.Admin .EditCatalogItemModel | |
|c0|10| 0% | |m18|18| 8 | |m18|18| 8 | |m30|10| 3 | |m26|19| 8min | 10High | Microsoft.eShopWeb.Web.Pages .Basket.CheckoutModel .GetOrSetBasketCookieAndUserName() | |
|c0|12| 0% | |m18|19| 8 | |m18|19| 8 | |m20|15| 2 | |m26|18| 8min | 12High | Microsoft.eShopWeb.Web.Controllers .ManageController.ChangePassword( ) | |
|c0|14| 0% | |m18|16| 8 | |m18|16| 8 | |m20|14| 2 | |m26|16| 8min | 14High | Microsoft.eShopWeb.Web.Controllers .ManageController.SetPassword() | |
|c0|13| 0% | |m18|17| 8 | |m18|17| 8 | |m20|13| 2 | |m26|17| 8min | 13High | Microsoft.eShopWeb.Web.Controllers .ManageController.Disable2fa() |
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.
59 types matched |
Formatting: bold✱ means added ● means code was changed |
59 types | # lines of code (LOC) | Debt | Severity | Full Name |
---|---|---|---|---|
|m3|17| 2 | |m0|06| 3min 0s | 06Low | Microsoft.eShopWeb.ApplicationCore .Specifications .CustomerOrdersSpecification | |
|m100|00| 32 | |m0|05| 3min 0s | 05Low | Microsoft.eShopWeb.Web.Services .CatalogViewModelService | |
|m12|11| 5 | |m0|07| 3min 0s | 07Low | Microsoft.eShopWeb.Web.Extensions .CacheHelpers | |
|m32|03| 11 | |m0|09| 3min 0s | 09Low | Microsoft.eShopWeb.Web .Configuration .ConfigureCookieSettings | |
|m29|05| 10 | |m0|08| 3min 0s | 08Low | Microsoft.eShopWeb.Web .Configuration .ConfigureCoreServices | |
|m22|07| 8 | |m0|01| 3min 0s | 01Low | Microsoft.eShopWeb.Web .Configuration .ConfigureWebServices | |
|m3|18| 2 | |m0|00| 3min 0s | 00Low | Microsoft.eShopWeb.Web.ViewModels .BasketComponentViewModel | |
|m45|01| 15 | |m0|02| 3min 0s | 02Low | Microsoft.eShopWeb.Web.ViewModels .CatalogIndexViewModel | |
|m22|06| 8 | |m0|04| 3min 0s | 04Low | Microsoft.eShopWeb.Web.ViewModels .CatalogItemViewModel | |
|m35|02| 12 | |m0|03| 3min 0s | 03Low | Microsoft.eShopWeb.Web.ViewModels .PaginationInfoViewModel | |
|m29|04| 10 | |m0|16| 3min 0s | 16Low | Microsoft.eShopWeb.Web.ViewModels .Manage.IndexViewModel | |
|m16|10| 6 | |m0|15| 3min 0s | 15Low | Microsoft.eShopWeb.Web.Pages .IndexModel | |
|m9|12| 4 | |m0|17| 3min 0s | 17Low | Microsoft.eShopWeb.Web.Features .MyOrders.GetMyOrders | |
|m0|19| 1 | |m0|19| 3min 0s | 19Low | Microsoft.eShopWeb.Web.Areas .Identity.IdentityHostingStartup | |
|m9|13| 4 | |m0|18| 3min 0s | 18Low | Microsoft.eShopWeb.PublicApi .CatalogTypeEndpoints .CatalogTypeDto | |
|m22|09| 8 | |m0|11| 3min 0s | 11Low | Microsoft.eShopWeb.PublicApi .CatalogTypeEndpoints .CatalogTypeListEndpoint | |
|m9|14| 4 | |m0|10| 3min 0s | 10Low | Microsoft.eShopWeb.PublicApi .CatalogBrandEndpoints .CatalogBrandDto | |
|m22|08| 8 | |m0|12| 3min 0s | 12Low | Microsoft.eShopWeb.PublicApi .CatalogBrandEndpoints .CatalogBrandListEndpoint | |
|m3|16| 2 | |m0|14| 3min 0s | 14Low | Microsoft.eShopWeb.CatalogSettings | |
|m6|15| 3 | |m0|13| 3min 0s | 13Low | Microsoft.eShopWeb.JsonExtensions |
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.
20 namespaces matched |
Formatting: bold✱ means added ● means code was changed |
20 namespaces | # lines of code not covered | Debt | Severity | Full Name |
---|---|---|---|---|
|m5|05| 26 | |m0|06| 4min 0s | 06Low | Microsoft.eShopWeb.Web.ViewModels .Account | |
|m4|07| 19 | |m0|05| 4min 0s | 05Low | Microsoft.eShopWeb.Web .HealthChecks | |
|m2|12| 13 | |m0|07| 4min 0s | 07Low | Microsoft.eShopWeb.Web.Pages.Order | |
|m2|11| 13 | |m0|09| 4min 0s | 09Low | Microsoft.eShopWeb.Web.Pages.Admin | |
|m1|14| 6 | |m0|08| 4min 0s | 08Low | Microsoft.eShopWeb.ApplicationCore .Exceptions | |
|m1|13| 6 | |m0|01| 4min 0s | 01Low | Microsoft.eShopWeb.Web.ViewModels .File | |
|m0|17| 2 | |m0|00| 4min 0s | 00Low | Microsoft.eShopWeb.Web.Pages .Account | |
|m0|19| 1 | |m0|02| 4min 0s | 02Low | Microsoft.AspNetCore.Mvc | |
|m100|00| 422 | |m0|04| 4min 0s | 04Low | Microsoft.eShopWeb.Infrastructure .Data.Migrations | |
|m46|01| 195 | |m0|03| 4min 0s | 03Low | Microsoft.eShopWeb.Infrastructure .Identity.Migrations | |
|m41|02| 174 | |m0|16| 4min 0s | 16Low | BlazorAdmin.Pages.CatalogItemPage | |
|m40|03| 172 | |m0|15| 4min 0s | 15Low | BlazorAdmin.Services | |
|m12|04| 53 | |m0|17| 4min 0s | 17Low | BlazorAdmin.Helpers | |
|m4|06| 20 | |m0|19| 4min 0s | 19Low | BlazorAdmin.Shared | |
|m4|08| 19 | |m0|18| 4min 0s | 18Low | BlazorShared.Authorization | |
|m3|09| 16 | |m0|11| 4min 0s | 11Low | BlazorAdmin.JavaScript | |
|m3|10| 14 | |m0|10| 4min 0s | 10Low | Microsoft.eShopWeb.ApplicationCore .Entities.BuyerAggregate | |
|m0|16| 2 | |m0|12| 4min 0s | 12Low | BlazorShared.Attributes | |
|m0|15| 2 | |m0|14| 4min 0s | 14Low | BlazorAdmin.Pages | |
|m0|18| 1 | |m0|13| 4min 0s | 13Low | Microsoft.eShopWeb.Infrastructure .Services |
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.
7 methods matched |
Formatting: bold✱ means added ● means code was changed |
7 methods | Percentage Coverage | # lines of code (LOC) | # lines of code not covered | Debt | Severity | Full Name |
---|---|---|---|---|---|---|
|c0|2| 0% | |m100|0| 16 | |m100|0| 16 | |m100|0| 10min | 2High | BlazorAdmin .CustomAuthStateProvider.FetchUser () | |
|c0|1| 0% | |m28|1| 6 | |m28|1| 6 | |m50|1| 6min | 1High | Microsoft.eShopWeb.PublicApi .Middleware.ExceptionMiddleware .HandleExceptionAsync(HttpContext ,Exception) | |
|c0|0| 0% | |m21|2| 5 | |m21|2| 5 | |m37|2| 5min | 0High | Microsoft.eShopWeb.PublicApi .AuthEndpoints.ClaimValue..ctor (String,String) | |
|c0|3| 0% | |m7|3| 3 | |m7|3| 3 | |m12|3| 3min 46s | 3High | Microsoft.eShopWeb.PublicApi .AuthEndpoints.ClaimValue..ctor() | |
|c0|6| 0% | |m7|4| 3 | |m7|4| 3 | |m12|4| 3min 46s | 6High | Microsoft.eShopWeb.PublicApi .AuthEndpoints.UserInfo..ctor() | |
|c0|5| 0% | |m0|6| 2 | |m0|6| 2 | |m0|6| 2min 53s | 5High | BlazorAdmin.Shared.RedirectToLogin .OnInitialized() | |
|c0|4| 0% | |m0|5| 2 | |m0|5| 2 | |m0|5| 2min 53s | 4High | BlazorAdmin.Pages.Logout .OnInitializedAsync() |
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.
4 methods matched |
Formatting: bold✱ means added ● means code was changed |
4 methods | Percentage Coverage | Debt | Severity | Full Name |
---|---|---|---|---|
|c93|0| 93.33% | |m0|1| 2min 0s | 1High | Microsoft.eShopWeb.ApplicationCore .Services.BasketService .SetQuantities(Int32,Dictionary <String,Int32>) | |
|c0|2| 0% | |m0|2| 2min 0s | 0High | Microsoft.eShopWeb.ApplicationCore .Exceptions .BasketNotFoundException..ctor (Int32) | |
|c81|1| 81.82% | |m100|0| 2min 53s | 3High | Microsoft.eShopWeb.Infrastructure .Identity.AppIdentityDbContextSeed .SeedAsync(AppIdentityDbContext ,UserManager<ApplicationUser> ,RoleManager<IdentityRole>) | |
|c0|3| 0% | |m0|3| 2min 0s | 2High | BlazorShared.BaseUrlConfiguration .get_ApiBase() |
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.
1 namespace matched |
Formatting: bold✱ means added ● means code was changed |
1 namespace | Percentage Coverage | # lines of code (LOC) | # lines of code not covered | methodsCulprit | Debt | Severity | Full Name |
---|---|---|---|---|---|---|---|
|c98|0| 98.53% | |m0|0| 68 | |m0|0| 1 | |m0|0|
1 method | |m0|0| 2min 0s | 0High | Microsoft.eShopWeb.ApplicationCore .Services |
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.
1 type matched |
Formatting: bold✱ means added ● means code was changed |
1 type | Percentage Coverage | # lines of code (LOC) | # lines of code not covered | methodsCulprit | Debt | Severity | Full Name |
---|---|---|---|---|---|---|---|
|c97|0| 97.78% | |m0|0| 45 | |m0|0| 1 | |m0|0|
1 method | |m0|0| 2min 0s | 0High | Microsoft.eShopWeb.ApplicationCore .Services.BasketService |
Dead Code 310 |
|
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.
4 methods matched |
Formatting: bold✱ means added ● means code was changed |
4 methods | depth | MethodsCallingMe | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|
|m0|1| 0 | 1no method | |m0|1| 10min | 19min | Microsoft.eShopWeb.ApplicationCore .Entities.OrderAggregate.Address. .ctor() | |
|m0|0| 0 | 0no method | |m0|0| 10min | 29min | Microsoft.eShopWeb.ApplicationCore .Entities.OrderAggregate .CatalogItemOrdered..ctor() | |
|m0|3| 0 | 3no method | |m0|3| 10min | 011min | Microsoft.eShopWeb.ApplicationCore .Entities.OrderAggregate.Order. .ctor() | |
|m0|2| 0 | 2no method | |m0|2| 10min | 39min | Microsoft.eShopWeb.ApplicationCore .Entities.OrderAggregate .OrderItem ..ctor() |
Security 902 |
|
Critical Rule Violated: ND3121 Transitive Software Composition Analysis (SCA) |
• How to Fix Issues of this Rule: Update the package that contains DirectAsm to a version that doesn't use a package that has known security advisories.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND3121:SoftwareCompositionAnalysisTransitive", 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 | DirectAsm | DirectAsmVersion | PackageName | PackageVersion | ThirdPartyAssembliesImpacted | AppAssembliesUser | PatchAllAdvisoriesVersion | HighestSeverity | AdvisoryWithHighestSeverity | AdvisorySummary | NbAdvisory | AdvisoriesUrl | Debt | Full Name |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 01.9.0.0 | 0Microsoft.Identity.Client | 04.49.1.0 | |m0|0|
1 assembly
| |m0|0|
1 assembly | 04.60.4 | 1Medium | 0https://github.com/advisories/GHSA-m5vv-6r4h-3vj9 | 0Azure Identity Libraries and Microsoft Authentication Library Elevation of Privilege Vulnerability | |m100|0| 2 | 0https://github.com/advisories/GHSA-x674-v45j-fwxw | |m0|0| 20min | Program+<<Main>$>d__0 | |
1 | 11.9.0.0 | 1Microsoft.WindowsDesktop.App.Runtime | 14.0.5.0 | |m0|1|
1 assembly
| |m0|1|
1 assembly | 16.0.29 | 0High | 1https://github.com/advisories/GHSA-6qmx-42h2-j8h6 | 1.NET Elevation of Privilege Vulnerability | |m0|1| 1 | 1{empty string} | |m0|1| 20min | Program+<<Main>$>d__0 |
Critical Rule Violated: ND3120 Software Composition Analysis (SCA) |
• How to Fix Issues of this Rule: Update the affected NuGet package to a version that is at or above the patched version recommended in the advisory. The patched version resolves all matching security advisories known for the package. The patched version is not always the latest available version. For example, if an issue exists in version 4.0.2, it might be resolved in version 4.1.0, even though the highest available version could be 7.0.8.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND3120:SoftwareCompositionAnalysis", 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 | PackageName | ThirdPartyAssembliesImpacted | AppAssembliesUser | PackageVersion | PatchAllAdvisoriesVersion | HighestSeverity | AdvisoryWithHighestSeverity | AdvisorySummary | NbAdvisory | AdvisoriesUrl | Debt | Full Name |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0Azure.Identity | |m0|0|
1 assembly
| |m0|0|
1 assembly | 01.9.0.0 | 01.11.4 | 0High | 0https://github.com/advisories/GHSA-5mfx-4wcx-rv27 | 0Azure Identity SDK Remote Code Execution Vulnerability | |m0|0| 3 | 0https://github.com/advisories/GHSA-m5vv-6r4h-3vj9 ; https://github.com/advisories/GHSA-wvxc-855f-jvrv | |m0|0| 20min | Program+<<Main>$>d__0 |
Visibility 830 |
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.
11 fields matched |
Formatting: bold✱ means added ● means code was changed |
11 fields | Debt | Severity | Full Name |
---|---|---|---|
|m0|03| 0min 30s | 03Medium | Microsoft.eShopWeb.Web.Constants .BASKET_COOKIENAME | |
|m0|04| 0min 30s | 04Medium | Microsoft.eShopWeb.Web.Constants .ITEMS_PER_PAGE | |
|m0|02| 0min 30s | 02Medium | Microsoft.eShopWeb.Web.Constants .DEFAULT_USERNAME | |
|m0|00| 0min 30s | 00Medium | Microsoft.eShopWeb.Web.Constants .BASKET_ID | |
|m0|01| 0min 30s | 01Medium | Microsoft.eShopWeb.Web .Configuration .ConfigureCookieSettings .ValidityMinutesPeriod | |
|m0|05| 0min 30s | 05Medium | Microsoft.eShopWeb.Web .Configuration .ConfigureCookieSettings .IdentifierCookieName | |
|m0|09| 0min 30s | 09Medium | Microsoft.eShopWeb.ApplicationCore .Constants.AuthorizationConstants .AUTH_KEY | |
|m0|10| 0min 30s | 10Medium | Microsoft.eShopWeb.ApplicationCore .Constants.AuthorizationConstants .DEFAULT_PASSWORD | |
|m0|08| 0min 30s | 08Medium | Microsoft.eShopWeb.ApplicationCore .Constants.AuthorizationConstants .JWT_SECRET_KEY | |
|m0|06| 0min 30s | 06Medium | BlazorShared.BaseUrlConfiguration .CONFIG_NAME | |
|m0|07| 0min 30s | 07Medium | BlazorShared.Authorization .Constants+Roles.ADMINISTRATORS |
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.
2 methods matched |
Formatting: bold✱ means added ● means code was changed |
2 methods | parentTypeVisibility | declareMethodAs | methodsCaller | Debt | Severity | Full Name |
---|---|---|---|---|---|---|
0declared as *internal* | 0internal | |m0|0|
2 methods | |m0|0| 0min 30s | 0Low | BlazorAdmin.Helpers .RefreshBroadcast.get_Instance() | |
1declared as *internal* | 1internal | |m0|1|
2 methods | |m0|1| 0min 30s | 1Low | BlazorAdmin.Helpers .RefreshBroadcast .CallRequestRefresh() |
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 |
---|---|---|---|---|
0 | |m0|0| 0min 30s | 0Medium | Microsoft.eShopWeb.PublicApi .BaseResponse..ctor(Guid) | |
1 | |m0|1| 0min 30s | 1Medium | Microsoft.eShopWeb.PublicApi .BaseResponse..ctor() |
Immutability 1120 |
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.
3 fields matched |
Formatting: bold✱ means added ● means code was changed |
3 fields | MethodsReadingMeButNotAssigningMe | MethodsAssigningMe | Debt | Severity | Full Name |
---|---|---|---|---|---|
|m100|0|
2 methods | 0no method | |m0|0| 5min | 0Medium | Microsoft.eShopWeb.ApplicationCore .Entities.BuyerAggregate.Buyer ._paymentMethods | |
|m0|1|
1 method | 1no method | |m0|1| 5min | 1Medium | BlazorAdmin.Pages.CatalogItemPage .Create._badFileMessage | |
|m0|2|
1 method | 2no method | |m0|2| 5min | 2Medium | BlazorAdmin.Pages.CatalogItemPage .Edit._badFileMessage |
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 |
---|---|---|---|---|---|---|
0 | 0Immutable | 0ReadOnly | |m0|0| 10min | 0Medium | BlazorShared.Authorization .UserInfo.Anonymous | |
1 | 1Immutable | 1ReadOnly | |m0|1| 10min | 1Medium | Microsoft.eShopWeb.PublicApi .AuthEndpoints.UserInfo.Anonymous |
Naming Conventions 1561 |
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.
6 types matched |
Formatting: bold✱ means added ● means code was changed |
6 types | namespaceName | Debt | Severity | Full Name |
---|---|---|---|---|
2Manage | |m0|2| 10min | 2Medium | Microsoft.eShopWeb.Web.Views .Manage.ManageNavPages | |
1File | |m0|1| 10min | 1Medium | Microsoft.eShopWeb.Web.ViewModels .File.FileViewModel | |
0Basket | |m0|0| 10min | 0Medium | Microsoft.eShopWeb.Web.Pages .Basket.BasketItemViewModel | |
5Basket | |m0|5| 10min | 5Medium | Microsoft.eShopWeb.Web.Pages .Basket.BasketViewModel | |
4Identity | |m0|4| 10min | 4Medium | Microsoft.eShopWeb.Web.Areas .Identity.IdentityHostingStartup | |
3Identity | |m0|3| 10min | 3Medium | Microsoft.eShopWeb.Infrastructure .Identity .IdentityTokenClaimService |
Rule Violated: ND2014 Avoid naming types and namespaces with the same identifier |
• How to Fix Issues of this Rule: To fix a violation of this rule, renamed the concerned type or namespace.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND2014:AvoidNamingTypesAndNamespacesWithTheSameIdentifier", 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 | namespaces | Debt | Severity | Full Name |
---|---|---|---|---|
|m0|2|
1 namespace
| |m0|1| 12min | 1High | Microsoft.eShopWeb.ApplicationCore .Entities.OrderAggregate.Order | |
|m100|1|
2 namespaces
| |m0|0| 12min | 0High | Microsoft.eShopWeb.ApplicationCore .Entities.BasketAggregate.Basket | |
|m0|4|
1 namespace | |m0|2| 12min | 2High | Microsoft.eShopWeb.Web.Constants | |
|m100|0|
2 namespaces
| |m0|4| 12min | 4High | Microsoft.eShopWeb.Web.Pages .Shared.Components.BasketComponent .Basket | |
|m0|3|
1 namespace | |m0|3| 12min | 3High | BlazorShared.Authorization .Constants |
Rule Violated: ND2020 Avoid various capitalizations for method name |
• How to Fix Issues of this Rule: Choose a single capitalization for the method name used accross the whole application. Or alternatively make the distinction clear by having different method names that don't only differ by capitalization. The technical-debt for each issue, the estimated cost to fix an issue, is proportional to the number of capitalizations found (2 minimum).
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND2020:AvoidVariousCapitalizationsForMethodName", 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 methods matched |
Formatting: bold✱ means added ● means code was changed |
4 methods | methods | nbCapitalizations | Debt | Severity | Full Name |
---|---|---|---|---|---|
|m0|1|
2 methods
| |m0|1| 2 | |m0|1| 12min | 1Medium | BlazorAdmin.Shared.RedirectToLogin .get_JsRuntime() | |
|m0|0|
2 methods
| |m0|0| 2 | |m0|0| 12min | 0Medium | BlazorAdmin.Shared.RedirectToLogin .set_JsRuntime(IJSRuntime) | |
|m0|3|
2 methods | |m0|3| 2 | |m0|3| 12min | 3Medium | Microsoft.eShopWeb.Web.Features .OrderDetails.GetOrderDetails .get_UserName() | |
|m0|2|
2 methods | |m0|2| 2 | |m0|2| 12min | 2Medium | Microsoft.eShopWeb.Web.Features .OrderDetails.GetOrderDetails .set_UserName(String) |
Critical Rule Violated: ND2012 Avoid having different types with same name |
• How to Fix Issues of this Rule: To fix a violation of this rule, rename concerned types.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND2012:AvoidHavingDifferentTypesWithSameName", 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.
10 types matched |
Formatting: bold✱ means added ● means code was changed |
10 types | types | namespaces | Debt | Severity | Full Name |
---|---|---|---|---|---|
|m0|03|
2 types
| |m0|03|
1 namespace
| |m0|03| 10min | 03High | Microsoft.eShopWeb.ApplicationCore .Interfaces.IEmailSender | |
|m0|04|
2 types | |m0|04|
1 namespace | |m0|04| 10min | 04High | Microsoft.eShopWeb.ApplicationCore .Entities.BasketAggregate.Basket | |
|m0|02|
2 types | |m0|02|
1 namespace | |m0|02| 10min | 02High | BlazorShared.Models.CatalogBrand | |
|m0|00|
2 types | |m0|00|
1 namespace | |m0|00| 10min | 00High | BlazorShared.Models.CatalogItem | |
|m0|01|
2 types | |m0|01|
1 namespace | |m0|01| 10min | 01High | BlazorShared.Models.CatalogType | |
|m0|08|
2 types | |m0|08|
1 namespace | |m0|08| 10min | 08High | BlazorShared.Models .CreateCatalogItemRequest | |
|m0|09|
2 types | |m0|09|
1 namespace | |m0|09| 10min | 09High | BlazorShared.Models .CreateCatalogItemResponse | |
|m0|07|
2 types | |m0|07|
1 namespace | |m0|07| 10min | 07High | BlazorShared.Models .DeleteCatalogItemResponse | |
|m0|05|
2 types | |m0|05|
1 namespace | |m0|05| 10min | 05High | BlazorShared.Authorization .ClaimValue | |
|m0|06|
2 types | |m0|06|
1 namespace | |m0|06| 10min | 06High | BlazorShared.Authorization .UserInfo |
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.
2 fields matched |
Formatting: bold✱ means added ● means code was changed |
2 fields | Size of instance | Debt | Severity | Full Name |
---|---|---|---|---|
0N/A | |m0|0| 3min 0s | 0Medium | Microsoft.eShopWeb.Web.Extensions .CacheHelpers._itemsKeyTemplate | |
1N/A | |m0|1| 3min 0s | 1Medium | Microsoft.eShopWeb.JsonExtensions ._jsonOptions |
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.
3 types matched |
Formatting: bold✱ means added ● means code was changed |
3 types | Debt | Severity | Full Name |
---|---|---|---|
|m0|0| 5min | 0Medium | Microsoft.eShopWeb.ApplicationCore .Entities.BaseEntity | |
|m0|1| 5min | 1Medium | BlazorShared.Models.LookupData | |
|m0|2| 5min | 2Medium | Microsoft.eShopWeb.PublicApi .BaseMessage |
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.
1 field matched |
Formatting: bold✱ means added ● means code was changed |
1 field | Size of instance | Debt | Severity | Full Name |
---|---|---|---|---|
|m0|0| 4 | |m0|0| 3min 0s | 0Medium | BlazorAdmin.Services.ToastService .Countdown |
Source Files Organization 330 |
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.
4 namespaces matched |
Formatting: bold✱ means added ● means code was changed |
4 namespaces | typesOutOfMainNamespace | typesInMainNamespace | Debt | Severity | Full Name |
---|---|---|---|---|---|
|m100|0|
2 types | |m0|2|
1 type | |m100|0| 12min | 1High | Microsoft.AspNetCore.Mvc | |
|m0|1|
1 type | |m20|1|
2 types | |m0|1| 7min | 0High | Microsoft.eShopWeb.Web.Interfaces | |
|m0|3|
1 type | |m0|3|
1 type | |m0|3| 7min | 3High | Microsoft.eShopWeb | |
|m0|2|
1 type | |m100|0|
First 5 of 6 types | |m0|2| 7min | 2High | Microsoft.eShopWeb.PublicApi |
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.
4 namespaces matched |
Formatting: bold✱ means added ● means code was changed |
4 namespaces | dirShouldContain | dir | justACaseSensitiveIssueStr | typesConcerned | Debt | Severity | Full Name |
---|---|---|---|---|---|---|---|
1 AspNetCore Mvc | 1 | 1{empty string} | |m0|1|
1 type | |m0|1| 3min 0s | 1Medium | Microsoft.AspNetCore.Mvc | |
0 Web Services | 0 | 0{empty string} | |m0|0|
1 type | |m0|0| 3min 0s | 0Medium | Microsoft.eShopWeb.Web.Services | |
3 eShopWeb | 3 | 3{empty string} | |m0|3|
1 type | |m0|3| 3min 0s | 3Medium | Microsoft.eShopWeb | |
2 GuardClauses | 2 | 2{empty string} | |m0|2|
1 type | |m0|2| 3min 0s | 2Medium | Ardalis.GuardClauses |
Rule Violated: ND2105 Types declared in the same namespace, should have their source files stored in the same directory |
• How to Fix Issues of this Rule: Violations of this rule are types in the typesDeclaredOutOfMainDir 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 the namespace corresponding to the parent directory. • … 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 main 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 typesDeclaredOutOfMainDir.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND2105:TypesDeclaredInTheSameNamespaceShouldHaveTheirSourceFilesStoredInTheSameDirectory", 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 namespaces matched |
Formatting: bold✱ means added ● means code was changed |
2 namespaces | typesDeclaredOutOfMainDir | mainDir | typesDeclaredInMainDir | Debt | Severity | Full Name |
---|---|---|---|---|---|---|
|m100|0|
2 types | 0 | |m100|0|
4 types | |m100|0| 12min | 0High | Microsoft.eShopWeb.Web.Services | |
|m0|1|
1 type | 1 | |m0|1|
1 type | |m0|1| 7min | 1High | Microsoft.eShopWeb |
.NET Framework Usage 2240 |
System 820 |
Rule Violated: ND2207 Do not raise too general exception types |
• How to Fix Issues of this Rule: To fix a violation of this rule, change the type of the thrown exception to either a more derived type that already exists in the framework, or create your own type that derives from System.Exception. The estimated Debt, which means the effort to fix such issue, is equal to 15 minutes per method matched, plus 5 minutes per too general exception types instantiated by the method.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND2207:DoNotRaiseTooGeneralExceptionTypes", 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.
18 methods matched |
Formatting: bold✱ means added ● means code was changed |
18 methods | exceptionsCreated | Debt | Severity | Full Name |
---|---|---|---|---|
|m0|06|
1 type
| |m0|06| 20min | 06High | Microsoft.eShopWeb.Web.Controllers .ManageController.MyAccount() | |
|m0|05|
1 type
| |m0|05| 20min | 05High | Microsoft.eShopWeb.Web.Controllers .ManageController.MyAccount (IndexViewModel) | |
|m0|08|
1 type
| |m0|08| 20min | 08High | Microsoft.eShopWeb.Web.Controllers .ManageController .SendVerificationEmail (IndexViewModel) | |
|m0|07|
1 type
| |m0|07| 20min | 07High | Microsoft.eShopWeb.Web.Controllers .ManageController.ChangePassword( ) | |
|m0|04|
1 type
| |m0|04| 20min | 04High | Microsoft.eShopWeb.Web.Controllers .ManageController.ChangePassword (ChangePasswordViewModel) | |
|m0|01|
1 type
| |m0|01| 20min | 01High | Microsoft.eShopWeb.Web.Controllers .ManageController.SetPassword() | |
|m0|00|
1 type
| |m0|00| 20min | 00High | Microsoft.eShopWeb.Web.Controllers .ManageController.SetPassword (SetPasswordViewModel) | |
|m0|03|
1 type
| |m0|03| 20min | 03High | Microsoft.eShopWeb.Web.Controllers .ManageController.ExternalLogins( ) | |
|m0|02|
1 type
| |m0|02| 20min | 02High | Microsoft.eShopWeb.Web.Controllers .ManageController .LinkLoginCallback() | |
|m0|15|
1 type
| |m0|15| 20min | 15High | Microsoft.eShopWeb.Web.Controllers .ManageController.RemoveLogin (RemoveLoginViewModel) | |
|m0|14|
1 type
| |m0|14| 20min | 14High | Microsoft.eShopWeb.Web.Controllers .ManageController .TwoFactorAuthentication() | |
|m0|17|
1 type
| |m0|17| 20min | 17High | Microsoft.eShopWeb.Web.Controllers .ManageController .Disable2faWarning() | |
|m0|16|
1 type
| |m0|16| 20min | 16High | Microsoft.eShopWeb.Web.Controllers .ManageController.Disable2fa() | |
|m0|13|
1 type
| |m0|13| 20min | 13High | Microsoft.eShopWeb.Web.Controllers .ManageController .EnableAuthenticator() | |
|m0|10|
1 type
| |m0|10| 20min | 10High | Microsoft.eShopWeb.Web.Controllers .ManageController .EnableAuthenticator (EnableAuthenticatorViewModel) | |
|m0|09|
1 type
| |m0|09| 20min | 09High | Microsoft.eShopWeb.Web.Controllers .ManageController .ResetAuthenticator() | |
|m0|12|
1 type
| |m0|12| 20min | 12High | Microsoft.eShopWeb.Web.Controllers .ManageController .GenerateRecoveryCodes() | |
|m0|11|
1 type
| |m0|11| 20min | 11High | Microsoft.eShopWeb.Web.Controllers .ManageController .GenerateRecoveryCodesWarning() |
Rule Violated: ND2209 Uri fields or properties should be of type System.Uri |
• How to Fix Issues of this Rule: Rename the field or property, or change the field or property type to System.Uri. 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", "ND2209:UriFieldsShouldBeOfTypeSystemUri", 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.
18 members matched |
Formatting: bold✱ means added ● means code was changed |
18 members | type | Debt | Severity | Full Name |
---|---|---|---|---|
06 | |m0|06| 5min | 06Low | Microsoft.eShopWeb.Web.ViewModels .CatalogItemViewModel.PictureUri | |
05 | |m0|05| 5min | 05Low | Microsoft.eShopWeb.Web.ViewModels .OrderItemViewModel.PictureUrl | |
08 | |m0|08| 5min | 08Low | Microsoft.eShopWeb.Web.ViewModels .Manage .EnableAuthenticatorViewModel .AuthenticatorUri | |
07 | |m0|07| 5min | 07Low | Microsoft.eShopWeb.Web.ViewModels .File.FileViewModel.Url | |
04 | |m0|04| 5min | 04Low | Microsoft.eShopWeb.Web.Pages .Basket.BasketItemViewModel .PictureUrl | |
01 | |m0|01| 5min | 01Low | Microsoft.eShopWeb.Web.Areas .Identity.Pages.Account.LoginModel .ReturnUrl | |
00 | |m0|00| 5min | 00Low | Microsoft.eShopWeb.Web.Areas .Identity.Pages.Account .RegisterModel.ReturnUrl | |
03 | |m0|03| 5min | 03Low | Microsoft.eShopWeb.CatalogSettings .CatalogBaseUrl | |
02 | |m0|02| 5min | 02Low | Microsoft.eShopWeb.ApplicationCore .Entities.CatalogItem.PictureUri | |
15 | |m0|15| 5min | 15Low | Microsoft.eShopWeb.ApplicationCore .Entities.OrderAggregate .CatalogItemOrdered.PictureUri | |
14 | |m0|14| 5min | 14Low | Microsoft.eShopWeb.Infrastructure .Data.FileItem.Url | |
17 | |m0|17| 5min | 17Low | BlazorShared.Models.CatalogItem .PictureUri | |
16 | |m0|16| 5min | 16Low | BlazorShared.Models .CreateCatalogItemRequest .PictureUri | |
13 | |m0|13| 5min | 13Low | BlazorAdmin.Services .CatalogLookupDataService <TLookupData,TReponse>._apiUrl | |
10 | |m0|10| 5min | 10Low | BlazorAdmin.Services.HttpService ._apiUrl | |
09 | |m0|09| 5min | 09Low | Microsoft.eShopWeb.PublicApi .CatalogItemEndpoints .CatalogItemDto.PictureUri | |
12 | |m0|12| 5min | 12Low | Microsoft.eShopWeb.PublicApi .CatalogItemEndpoints .CreateCatalogItemRequest .PictureUri | |
11 | |m0|11| 5min | 11Low | Microsoft.eShopWeb.PublicApi .CatalogItemEndpoints .UpdateCatalogItemRequest .PictureUri |
System.Collections 110 |
|
Rule Violated: ND2300 Collection properties should be read only |
• How to Fix Issues of this Rule: To fix a violation of this rule, make the property read-only and, if the design requires it, add methods to clear and re-populate the collection.
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND2300:CollectionPropertiesShouldBeReadOnly", 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 properties matched |
Formatting: bold✱ means added ● means code was changed |
4 properties | CollectionType | Debt | Severity | Full Name |
---|---|---|---|---|
1 | |m0|1| 10min | 1Medium | Microsoft.eShopWeb.Web.ViewModels .Manage.ExternalLoginsViewModel .CurrentLogins | |
0 | |m0|0| 10min | 0Medium | Microsoft.eShopWeb.Web.ViewModels .Manage.ExternalLoginsViewModel .OtherLogins | |
3 | |m0|3| 10min | 3Medium | Microsoft.eShopWeb.Web.ViewModels .Manage.ShowRecoveryCodesViewModel .RecoveryCodes | |
2 | |m0|2| 10min | 2Medium | Microsoft.eShopWeb.Web.Areas .Identity.Pages.Account.LoginModel .ExternalLogins |
System.Reflection 210 |
|
Rule Violated: ND2802 Assemblies Referenced in Multiple Versions |
• How to Fix Issues of this Rule: Make sure that all packages consummed by the application are referenced in a single version. To do so rely on Transitive pinning in Central Package Management. Set the MSBuild property CentralPackageTransitivePinningEnabled to true in a Directory.Packages.props or Directory.Build.props import file. More on this here: https://blog.ndepend.com/understand-nuget-central-package-management-and-transitive-pinning-with-examples/
• How to Suppress an Issue of this Rule: In source code, tag the concerned code element with this attribute: [SuppressMessage("NDepend", "ND2802:AssembliesReferencedInMultipleVersions", 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 | asm | NbVersions | Versions | Severity | Debt | Full Name |
---|---|---|---|---|---|---|
0 | |m0|0| 2 | 0Web uses v1.28.0.0 ; Azure.Extensions.AspNetCore.Configuration.Secrets uses v1.14.0.0 | 0Medium | |m0|0| 15min | Program+<<Main>$>d__0 |
Roslyn Analyzers 0480 |
Compiler 010 |
|
Roslyn Analyzer Violated: CS0618 Type or member is obsolete |
2 issues |
Formatting: bold✱ means added ● means code was changed |
2 issues | Severity | Explanation |
---|---|---|
C# BasketWithItemsSpecification .cs L6 | 0Medium | 0 'Use ISingleResultSpecification<T> instead. This interface will be removed in a future version of Ardalis.Specification.' |
C# OrderWithItemsByIdSpec.cs L6 | 1Medium | - same explanation - |
Design 0160 |
Roslyn Analyzer Violated: MA0042 Do not use blocking call |
32 issues |
Formatting: bold✱ means added ● means code was changed |
32 issues | Severity | Explanation |
---|---|---|
C# AppIdentityDbContextSeed.cs L15 | 06High | 06Use 'MigrateAsync' instead of 'Migrate' |
C# ManageController.cs L52 | 05High | 05Use 'GetUserIdAsync' instead of 'GetUserId' |
C# ManageController.cs L79 | 07High | 07Use 'GetUserIdAsync' instead of 'GetUserId' |
C# ManageController.cs L142 | 09High | 09Use 'GetUserIdAsync' instead of 'GetUserId' |
C# ManageController.cs L118 | 08High | 08Use 'GetUserIdAsync' instead of 'GetUserId' |
C# ManageController.cs L191 | 01High | 01Use 'GetUserIdAsync' instead of 'GetUserId' |
C# ManageController.cs L167 | 00High | 00Use 'GetUserIdAsync' instead of 'GetUserId' |
C# ManageController.cs L217 | 02High | 02Use 'GetUserIdAsync' instead of 'GetUserId' |
C# ManageController.cs L239 | 04High | 04Use 'GetUserIdAsync' instead of 'GetUserId' |
C# ManageController.cs L261 | 03High | 03Use 'GetUserIdAsync' instead of 'GetUserId' |
C# ManageController.cs L300 | 16High | 16Use 'GetUserIdAsync' instead of 'GetUserId' |
C# ManageController.cs L324 | 15High | 15Use 'GetUserIdAsync' instead of 'GetUserId' |
C# ManageController.cs L343 | 17High | 17Use 'GetUserIdAsync' instead of 'GetUserId' |
C# ManageController.cs L271 | 19High | 19Use 'GetUserIdAsync' instead of 'GetUserId' |
C# ManageController.cs L361 | 18High | 18Use 'GetUserIdAsync' instead of 'GetUserId' |
C# ManageController.cs L380 | 11High | 11Use 'GetUserIdAsync' instead of 'GetUserId' |
C# ManageController.cs L453 | 10High | 10Use 'GetUserIdAsync' instead of 'GetUserId' |
C# ManageController.cs L410 | 12High | 12Use 'GetUserIdAsync' instead of 'GetUserId' |
C# ManageController.cs L470 | 14High | 14Use 'GetUserIdAsync' instead of 'GetUserId' |
C# ManageController.cs L492 | 13High | 13Use 'GetUserIdAsync' instead of 'GetUserId' |
Roslyn Analyzer Violated: MA0016 Prefer return collection abstraction instead of implementation |
23 issues |
Formatting: bold✱ means added ● means code was changed |
23 issues | Severity | Explanation |
---|---|---|
C# BasketService.cs L47 | 06High | 06Prefer return collection abstraction instead of implementation |
C# CatalogItemService.cs L59 | 05High | - same explanation - |
C# CatalogItemService.cs L78 | 07High | - same explanation - |
C# CachedCatalogLookupDataService Decorator .cs L29 | 09High | - same explanation - |
C# CatalogLookupDataService.cs L35 | 08High | - same explanation - |
C# CachedCatalogItemServiceDecora tor.cs L27 | 01High | - same explanation - |
C# CachedCatalogItemServiceDecora tor.cs L51 | 00High | - same explanation - |
C# CatalogBrandResponse.cs L10 | 02High | - same explanation - |
C# CatalogTypeResponse.cs L11 | 04High | - same explanation - |
C# CatalogIndexViewModel.cs L7 | 03High | - same explanation - |
C# CatalogIndexViewModel.cs L8 | 16High | - same explanation - |
C# CatalogIndexViewModel.cs L9 | 15High | - same explanation - |
C# OrderDetailViewModel.cs L5 | 17High | - same explanation - |
C# BasketViewModel.cs L6 | 19High | - same explanation - |
C# IBasketService.cs L12 | 18High | - same explanation - |
C# ILookupDataResponse.cs L8 | 11High | - same explanation - |
C# ICatalogLookupDataService.cs L9 | 10High | - same explanation - |
C# ICatalogItemService.cs L13 | 12High | - same explanation - |
C# ICatalogItemService.cs L14 | 14High | - same explanation - |
C# PagedCatalogItemResponse.cs L7 | 13High | - same explanation - |
Roslyn Analyzer Violated: MA0048 File name must match type name |
37 issues |
Formatting: bold✱ means added ● means code was changed |
37 issues | Severity | Explanation |
---|---|---|
C# BasketWithItemsSpecification .cs L10 | 06High | 06File name must match type name |
C# Login.cshtml.cs L14 | 05High | - same explanation - |
C# Logout.cshtml.cs L14 | 07High | - same explanation - |
C# ConfirmEmail.cshtml.cs L14 | 09High | - same explanation - |
C# Register.cshtml.cs L18 | 08High | - same explanation - |
C# EditCatalogItem.cshtml.cs L12 | 01High | - same explanation - |
C# Index.cshtml.cs L13 | 00High | - same explanation - |
C# Index.cshtml.cs L7 | 02High | - same explanation - |
C# Privacy.cshtml.cs L5 | 04High | - same explanation - |
C# Error.cshtml.cs L8 | 03High | - same explanation - |
C# Checkout.cshtml.cs L15 | 16High | - same explanation - |
C# Success.cshtml.cs L12 | 15High | - same explanation - |
C# Index.cshtml.cs L11 | 17High | - same explanation - |
C# GuardExtensions.cs L8 | 19High | - same explanation - |
C# CachedCatalogLookupDataService Decorator .cs L11 | 18High | - same explanation - |
C# ToastService.cs L6 | 11High | - same explanation - |
C# EditCatalogItemResponse.cs L3 | 10High | - same explanation - |
C# 20211026175614_FixBuyerId.cs L5 | 12High | - same explanation - |
C# 20201202111507_InitialModel.cs L6 | 14High | - same explanation - |
C# 20211231093753_FixShipToAddres s.cs L7 | 13High | - same explanation - |
Roslyn Analyzer Violated: MA0038 Make method static |
7 issues |
Formatting: bold✱ means added ● means code was changed |
7 issues | Severity | Explanation |
---|---|---|
C# Logout.cshtml.cs L27 | 2High | 2Make method static |
C# ManageController.cs L511 | 1High | - same explanation - |
C# Privacy.cshtml.cs L7 | 0High | - same explanation - |
C# Success.cshtml.cs L14 | 3High | - same explanation - |
C# HttpService.cs L84 | 6High | - same explanation - |
C# HttpService.cs L89 | 5High | - same explanation - |
C# ExceptionMiddleware.cs L31 | 4High | - same explanation - |
Roslyn Analyzer Violated: MA0047 Declare types in namespaces |
4 issues |
Formatting: bold✱ means added ● means code was changed |
4 issues | Severity | Explanation |
---|---|---|
C# Program.cs L16 | 1High | 1Declare types in namespaces |
C# Program.cs L181 | 0High | - same explanation - |
C# Program.cs L26 | 3High | - same explanation - |
C# Program.cs L22 | 2High | - same explanation - |
Roslyn Analyzer Violated: MA0026 Fix TODO comment |
7 issues |
Formatting: bold✱ means added ● means code was changed |
7 issues | Severity | Explanation |
---|---|---|
C# Logout.cshtml.cs L13 | 2High | 2 replace IMemoryCache by distributed cache if you are in multi-host scenario |
C# ConfigureCookieSettings.cs L18 | 1High | 1TODO need to check that. |
C# RevokeAuthenticationEvents.cs L11 | 0High | 0 replace IMemoryCache with a distributed cache if you are in multi-host scenario |
C# AuthorizationConstants.cs L7 | 3High | 3 Don't use this in production |
C# AuthorizationConstants.cs L10 | 6High | 6 Change this to an environment variable |
C# CustomAuthStateProvider.cs L15 | 5High | 5 Get Default Cache Duration from Config |
C# EmailSender.cs L12 | 4High | 4 Wire this up to actual email sending logic via SendGrid, local SMTP, etc. |
Roslyn Analyzer Violated: MA0036 Make class static |
7 issues |
Formatting: bold✱ means added ● means code was changed |
7 issues | Severity | Explanation |
---|---|---|
C# Program.cs L16 | 2High | 2Make class static |
C# Program.cs L22 | 1High | - same explanation - |
C# AuthorizationConstants.cs L3 | 0High | - same explanation - |
C# CatalogContextSeed.cs L10 | 3High | - same explanation - |
C# AppIdentityDbContextSeed.cs L8 | 6High | - same explanation - |
C# Program.cs L181 | 5High | - same explanation - |
C# Program.cs L26 | 4High | - same explanation - |
Roslyn Analyzer Violated: MA0041 Make property static |
2 issues |
Formatting: bold✱ means added ● means code was changed |
2 issues | Severity | Explanation |
---|---|---|
C# OrderItemViewModel.cs L8 | 0High | 0Make property static |
C# OrderViewModel.cs L12 | 1High | - same explanation - |
Roslyn Analyzer Violated: MA0045 Do not use blocking call (make method async) |
2 issues |
Formatting: bold✱ means added ● means code was changed |
2 issues | Severity | Explanation |
---|---|---|
C# HttpService.cs L86 | 0High | 0Use 'SerializeAsync' instead of 'Serialize' and make method async |
C# CatalogItemListPagedEndpoint .cs L68 | 1High | 1Use await instead of 'Result' and make method async |
Roslyn Analyzer Violated: RCS1102 Mark class as static. |
4 issues |
Formatting: bold✱ means added ● means code was changed |
4 issues | Severity | Explanation |
---|---|---|
C# Program.cs L181 | 1High | 1Mark class as static. |
C# AuthorizationConstants.cs L3 | 0High | - same explanation - |
C# CatalogContextSeed.cs L10 | 3High | - same explanation - |
C# AppIdentityDbContextSeed.cs L8 | 2High | - same explanation - |
Roslyn Analyzer Violated: RCS1110 Declare type inside namespace. |
1 issue |
Formatting: bold✱ means added ● means code was changed |
1 issue | Severity | Explanation |
---|---|---|
C# Program.cs L181 | 0High | 0Declare 'Program' inside namespace. |
Roslyn Analyzer Violated: MA0046 Use EventHandler<T> |
3 issues |
Formatting: bold✱ means added ● means code was changed |
3 issues | Severity | Explanation |
---|---|---|
C# RefreshBroadcast.cs L18 | 0High | 0Use EventHandler<T> |
C# ToastService.cs L16 | 1High | - same explanation - |
C# ToastService.cs L17 | 2High | - 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 |
---|---|---|
C# BaseResponse.cs L10 | 0High | 0Abstract types should not have public or internal constructors |
C# BaseResponse.cs L15 | 1High | - same explanation - |
Roslyn Analyzer Violated: MA0051 Method is too long |
2 issues |
Formatting: bold✱ means added ● means code was changed |
2 issues | Severity | Explanation |
---|---|---|
C# 20201202111507_InitialModel.cs L8 | 0High | 0 60) |
C# 20201202111612_InitialIdentity Model.cs L8 | 1High | 1 60) |
Roslyn Analyzer Violated: MA0010 Mark attributes with AttributeUsageAttribute |
1 issue |
Formatting: bold✱ means added ● means code was changed |
1 issue | Severity | Explanation |
---|---|---|
C# EndpointAttribute.cs L5 | 0High | 0Mark attributes with AttributeUsageAttribute |
Roslyn Analyzer Violated: CA1018 Mark attributes with AttributeUsageAttribute |
1 issue |
Formatting: bold✱ means added ● means code was changed |
1 issue | Severity | Explanation |
---|---|---|
C# EndpointAttribute.cs L5 | 0High | 0Specify AttributeUsage on EndpointAttribute |
Formatting 030 |
Roslyn Analyzer Violated: RCS1023 Format empty block. |
10 issues |
Formatting: bold✱ means added ● means code was changed |
10 issues | Severity | Explanation |
---|---|---|
C# DuplicateException.cs L8 | 03High | 03Format empty block. |
C# OrderItem.cs L10 | 04High | - same explanation - |
C# Order.cs L11 | 02High | - same explanation - |
C# Buyer.cs L16 | 00High | - same explanation - |
C# Address.cs L16 | 01High | - same explanation - |
C# CatalogItemOrdered.cs L23 | 08High | - same explanation - |
C# CacheEntry.cs L12 | 09High | - same explanation - |
C# CatalogContext.cs L12 | 07High | - same explanation - |
C# Index.cshtml.cs L16 | 05High | - same explanation - |
C# Success.cshtml.cs L15 | 06High | - same explanation - |
Roslyn Analyzer Violated: RCS1029 Format binary operator on next line. |
8 issues |
Formatting: bold✱ means added ● means code was changed |
8 issues | Severity | Explanation |
---|---|---|
C# CatalogFilterPaginatedSpecific ation.cs L16 | 2High | 2Format binary operator on next line. |
C# CatalogFilterSpecification.cs L10 | 3High | - same explanation - |
C# CatalogItem.cs L84 | 0High | - same explanation - |
C# CatalogItem.cs L83 | 1High | - same explanation - |
C# CatalogItem.cs L82 | 6High | - same explanation - |
C# ImageValidators.cs L21 | 7High | - same explanation - |
C# ImageValidators.cs L20 | 4High | - same explanation - |
C# ImageValidators.cs L19 | 5High | - same explanation - |
Roslyn Analyzer Violated: RCS1076 Format declaration braces. |
3 issues |
Formatting: bold✱ means added ● means code was changed |
3 issues | Severity | Explanation |
---|---|---|
C# IAggregateRoot.cs L4 | 0High | 0Format declaration braces. |
C# Program.cs L181 | 1High | - same explanation - |
C# BaseApiController.cs L9 | 2High | - same explanation - |
GeneratedRegex 010 |
|
Roslyn Analyzer Violated: SYSLIB1045 Convert to 'GeneratedRegexAttribute'. |
1 issue |
Formatting: bold✱ means added ● means code was changed |
1 issue | Severity | Explanation |
---|---|---|
C# SlugifyParameterTransformer.cs L15 | 0High | 0Use 'GeneratedRegexAttribute' to generate the regular expression implementation at compile-time. |
Performance 080 |
Roslyn Analyzer Violated: MA0020 Use direct methods instead of extension methods |
10 issues |
Formatting: bold✱ means added ● means code was changed |
10 issues | Severity | Explanation |
---|---|---|
C# CatalogItemListPagedEndpoint .cs L25 | 03High | 03Use 'Count' instead of 'Count()' |
C# CatalogItemListPagedEndpoint .cs L40 | 04High | - same explanation - |
C# CatalogItemListPagedEndpoint .cs L49 | 02High | - same explanation - |
C# CatalogItemService.cs L54 | 00High | 00Use 'Find()' instead of 'FirstOrDefault()' |
C# CatalogItemService.cs L55 | 01High | 01Use 'Find()' instead of 'FirstOrDefault()' |
C# CatalogItemService.cs L72 | 08High | 08Use 'Find()' instead of 'FirstOrDefault()' |
C# CatalogItemService.cs L73 | 09High | 09Use 'Find()' instead of 'FirstOrDefault()' |
C# CatalogItemService.cs L91 | 07High | 07Use 'Find()' instead of 'FirstOrDefault()' |
C# CatalogItemService.cs L92 | 05High | 05Use 'Find()' instead of 'FirstOrDefault()' |
C# CachedCatalogItemServiceDecora tor.cs L77 | 06High | 06Use 'Find()' instead of 'FirstOrDefault()' |
Roslyn Analyzer Violated: RCS1082 Replace 'Count' method with 'Count' or 'Length' property. |
3 issues |
Formatting: bold✱ means added ● means code was changed |
3 issues | Severity | Explanation |
---|---|---|
C# CatalogItemListPagedEndpoint .cs L25 | 0High | 0Replace 'Count' method with 'Count' property. |
C# CatalogItemListPagedEndpoint .cs L40 | 1High | - same explanation - |
C# CatalogItemListPagedEndpoint .cs L49 | 2High | - same explanation - |
Roslyn Analyzer Violated: MA0028 Optimize StringBuilder usage |
3 issues |
Formatting: bold✱ means added ● means code was changed |
3 issues | Severity | Explanation |
---|---|---|
C# ManageController.cs L517 | 0High | 0Replace Append(string) with Append(char) |
C# ManageController.cs L517 | 1High | 1Use Append(string, int, int) instead of Substring |
C# ManageController.cs L522 | 2High | 2Use Append(string, int, int) instead of Substring |
Roslyn Analyzer Violated: CA1829 Use Length/Count property instead of Count() when available |
3 issues |
Formatting: bold✱ means added ● means code was changed |
3 issues | Severity | Explanation |
---|---|---|
C# CatalogItemListPagedEndpoint .cs L40 | 0High | 0Use the "Count" property instead of Enumerable.Count() |
C# CatalogItemListPagedEndpoint .cs L49 | 1High | - same explanation - |
C# CatalogItemListPagedEndpoint .cs L25 | 2High | - same explanation - |
Roslyn Analyzer Violated: CA1846 Prefer 'AsSpan' over 'Substring' |
2 issues |
Formatting: bold✱ means added ● means code was changed |
2 issues | Severity | Explanation |
---|---|---|
C# ManageController.cs L517 | 0High | 0Prefer 'AsSpan' over 'Substring' when span-based overloads are available |
C# ManageController.cs L522 | 1High | - same explanation - |
Roslyn Analyzer Violated: CA1822 Mark members as static |
4 issues |
Formatting: bold✱ means added ● means code was changed |
4 issues | Severity | Explanation |
---|---|---|
C# ManageController.cs L511 | 1High | 1Member 'FormatKey' does not access instance data and can be marked as static |
C# HttpService.cs L84 | 0High | 0Member 'ToJson' does not access instance data and can be marked as static |
C# HttpService.cs L89 | 3High | 3Member 'FromHttpResponseMessage' does not access instance data and can be marked as static |
C# ExceptionMiddleware.cs L31 | 2High | 2Member 'HandleExceptionAsync' does not access instance data and can be marked as static |
Roslyn Analyzer Violated: MA0008 Add StructLayoutAttribute |
1 issue |
Formatting: bold✱ means added ● means code was changed |
1 issue | Severity | Explanation |
---|---|---|
C# CatalogItem.cs L66 | 0High | 0Add StructLayoutAttribute |
Roslyn Analyzer Violated: CA1834 Consider using 'StringBuilder.Append(char)' when applicable |
1 issue |
Formatting: bold✱ means added ● means code was changed |
1 issue | Severity | Explanation |
---|---|---|
C# ManageController.cs L517 | 0High | 0Use 'StringBuilder.Append(char)' instead of 'StringBuilder.Append(string)' when the input is a constant unit string |
Redundancy 040 |
Roslyn Analyzer Violated: RCS1036 Remove redundant empty line. |
16 issues |
Formatting: bold✱ means added ● means code was changed |
16 issues | Severity | Explanation |
---|---|---|
C# AppIdentityDbContextSeed.cs L12 | 05High | 05Remove redundant empty line. |
C# CatalogItemListPagedEndpoint .cs L31 | 04High | - same explanation - |
C# ManageController.cs L402 | 07High | - same explanation - |
C# ManageController.cs L549 | 06High | - same explanation - |
C# Program.cs L193 | 01High | - same explanation - |
C# Program.cs L78 | 00High | - same explanation - |
C# Basket.cs L16 | 03High | - same explanation - |
C# DuplicateException.cs L11 | 02High | - same explanation - |
C# BasketItem.cs L7 | 13High | - same explanation - |
C# CatalogItemService.cs L8 | 12High | - same explanation - |
C# HttpService.cs L17 | 15High | - same explanation - |
C# BlazorComponent.cs L24 | 14High | - same explanation - |
C# CatalogLookupDataService.cs L21 | 09High | - same explanation - |
C# CatalogTypeResponse.cs L9 | 08High | - same explanation - |
C# CreateCatalogItemRequest.cs L26 | 11High | - same explanation - |
C# AppIdentityDbContext.cs L4 | 10High | - same explanation - |
Roslyn Analyzer Violated: RCS1037 Remove trailing white-space. |
9 issues |
Formatting: bold✱ means added ● means code was changed |
9 issues | Severity | Explanation |
---|---|---|
C# UpdateCatalogItemEndpoint.cs L17 | 2High | 2Remove trailing white-space. |
C# GetOrderDetails.cs L17 | 3High | - same explanation - |
C# Login.cshtml.cs L77 | 0High | - same explanation - |
C# ConfigureWebServices.cs L11 | 1High | - same explanation - |
C# OrderController.cs L24 | 4High | - same explanation - |
C# BasketItemViewModel.cs L15 | 7High | - same explanation - |
C# CatalogContextSeed.cs L53 | 8High | - same explanation - |
C# Dependencies.cs L23 | 5High | - same explanation - |
C# ExceptionMiddleware.cs L27 | 6High | - same explanation - |
Roslyn Analyzer Violated: RCS1032 Remove redundant parentheses. |
2 issues |
Formatting: bold✱ means added ● means code was changed |
2 issues | Severity | Explanation |
---|---|---|
C# BasketViewModelService.cs L31 | 0High | 0Remove redundant parentheses. |
C# CatalogViewModelService.cs L70 | 1High | - same explanation - |
Roslyn Analyzer Violated: RCS1093 Remove file with no code. |
1 issue |
Formatting: bold✱ means added ● means code was changed |
1 issue | Severity | Explanation |
---|---|---|
C# AuthenticateEndpoint.cs L1 | 0High | 0Remove file with no code. |
Reliability 010 |
|
Roslyn Analyzer Violated: CA2016 Forward the 'CancellationToken' parameter to methods |
4 issues |
Formatting: bold✱ means added ● means code was changed |
4 issues | Severity | Explanation |
---|---|---|
C# ApiHealthCheck.cs L25 | 1High | 1Forward the 'cancellationToken' parameter to the 'GetAsync' method or pass in 'CancellationToken.None' explicitly to indicate intentionally not propagating the token |
C# ApiHealthCheck.cs L26 | 0High | 0Forward the 'cancellationToken' parameter to the 'ReadAsStringAsync' method or pass in 'CancellationToken.None' explicitly to indicate intentionally not propagating the token |
C# HomePageHealthCheck.cs L26 | 3High | - same explanation - |
C# HomePageHealthCheck.cs L27 | 2High | 2Forward the 'cancellationToken' parameter to the 'ReadAsStringAsync' method or pass in 'CancellationToken.None' explicitly to indicate intentionally not propagating the token |
Security 010 |
|
Roslyn Analyzer Violated: MA0009 Add timeout parameter |
1 issue |
Formatting: bold✱ means added ● means code was changed |
1 issue | Severity | Explanation |
---|---|---|
C# SlugifyParameterTransformer.cs L15 | 0High | 0Regular expressions should not be vulnerable to Denial of Service attacks |
Simplification 010 |
|
Roslyn Analyzer Violated: RCS1021 Simplify lambda expression. |
16 issues |
Formatting: bold✱ means added ● means code was changed |
16 issues | Severity | Explanation |
---|---|---|
C# UpdateCatalogItemEndpoint.cs L30 | 05High | 05Simplify lambda expression. |
C# CatalogTypeListEndpoint.cs L29 | 04High | - same explanation - |
C# CatalogBrandListEndpoint.cs L29 | 07High | - same explanation - |
C# CreateCatalogItemEndpoint.cs L32 | 06High | - same explanation - |
C# DeleteCatalogItemEndpoint.cs L23 | 01High | - same explanation - |
C# CatalogItemGetByIdEndpoint.cs L27 | 00High | - same explanation - |
C# CatalogItemListPagedEndpoint .cs L33 | 03High | - same explanation - |
C# Program.cs L82 | 02High | - same explanation - |
C# 20201202111507_InitialModel.cs L31 | 13High | - same explanation - |
C# 20201202111507_InitialModel.cs L43 | 12High | - same explanation - |
C# 20201202111507_InitialModel.cs L55 | 15High | - same explanation - |
C# 20201202111507_InitialModel.cs L74 | 14High | - same explanation - |
C# 20201202111612_InitialIdentity Model.cs L20 | 09High | - same explanation - |
C# 20201202111612_InitialIdentity Model.cs L45 | 08High | - same explanation - |
C# Program.cs L56 | 11High | - same explanation - |
C# Program.cs L171 | 10High | - same explanation - |
Style 030 |
Roslyn Analyzer Violated: MA0007 Add comma after the last property |
51 issues |
Formatting: bold✱ means added ● means code was changed |
51 issues | Severity | Explanation |
---|---|---|
C# JsonExtensions.cs L14 | 06High | 06Add comma after the last property |
C# JsonExtensions.cs L18 | 05High | - same explanation - |
C# Logout.cshtml.cs L39 | 07High | - same explanation - |
C# ConfigureCookieSettings.cs L32 | 09High | - same explanation - |
C# ManageController.cs L61 | 08High | - same explanation - |
C# Program.cs L104 | 01High | - same explanation - |
C# Program.cs L154 | 00High | - same explanation - |
C# Program.cs L159 | 02High | - same explanation - |
C# Program.cs L162 | 04High | - same explanation - |
C# BasketViewModelService.cs L69 | 03High | - same explanation - |
C# BasketViewModelService.cs L83 | 16High | - same explanation - |
C# UserController.cs L53 | 15High | - same explanation - |
C# UserController.cs L69 | 17High | - same explanation - |
C# GetOrderDetailsHandler.cs L42 | 19High | - same explanation - |
C# GetOrderDetailsHandler.cs L38 | 18High | - same explanation - |
C# CatalogViewModelService.cs L65 | 11High | - same explanation - |
C# CatalogViewModelService.cs L59 | 10High | - same explanation - |
C# CatalogViewModelService.cs L70 | 12High | - same explanation - |
C# GetMyOrdersHandler.cs L29 | 14High | - same explanation - |
C# Basket.cs L28 | 13High | - same explanation - |
Roslyn Analyzer Violated: MA0003 Name parameter |
9 issues |
Formatting: bold✱ means added ● means code was changed |
9 issues | Severity | Explanation |
---|---|---|
C# CatalogFilterPaginatedSpecific ation.cs L11 | 2High | 2Name the parameter to improve the readability of the code |
C# CatalogFilterPaginatedSpecific ation.cs L11 | 3High | - same explanation - |
C# Login.cshtml.cs L78 | 0High | - same explanation - |
C# Login.cshtml.cs L78 | 1High | - same explanation - |
C# ManageController.cs L364 | 4High | - same explanation - |
C# ManageController.cs L432 | 7High | - same explanation - |
C# ManageController.cs L456 | 8High | - same explanation - |
C# AuthenticateEndpoint.cs L44 | 5High | - same explanation - |
C# AuthenticateEndpoint.cs L44 | 6High | - same explanation - |
Roslyn Analyzer Violated: RCS1001 Add braces. |
1 issue |
Formatting: bold✱ means added ● means code was changed |
1 issue | Severity | Explanation |
---|---|---|
C# CustomSchemaFilters.cs L13 | 0High | 0Add braces to foreach statement. |
Usage 090 |
Roslyn Analyzer Violated: MA0004 Use .ConfigureAwait(false) |
154 issues |
Formatting: bold✱ means added ● means code was changed |
154 issues | Severity | Explanation |
---|---|---|
C# List.razor.cs L33 | 06High | 06Use ConfigureAwait(false) as the current SynchronizationContext is not needed |
C# List.razor.cs L34 | 05High | - same explanation - |
C# List.razor.cs L45 | 07High | - same explanation - |
C# List.razor.cs L35 | 09High | - same explanation - |
C# List.razor.cs L40 | 08High | - same explanation - |
C# List.razor.cs L50 | 01High | - same explanation - |
C# List.razor.cs L55 | 00High | - same explanation - |
C# List.razor.cs L60 | 02High | - same explanation - |
C# List.razor.cs L65 | 04High | - same explanation - |
C# CatalogItemListPagedEndpoint .cs L54 | 03High | - same explanation - |
C# RevokeAuthenticationEvents.cs L32 | 16High | - same explanation - |
C# Program.cs L128 | 15High | - same explanation - |
C# Program.cs L133 | 17High | - same explanation - |
C# Program.cs L166 | 19High | - same explanation - |
C# BasketViewModelService.cs L31 | 18High | - same explanation - |
C# BasketViewModelService.cs L35 | 11High | - same explanation - |
C# BasketViewModelService.cs L37 | 10High | - same explanation - |
C# BasketViewModelService.cs L44 | 12High | - same explanation - |
C# BasketViewModelService.cs L56 | 14High | - same explanation - |
C# BasketViewModelService.cs L83 | 13High | - same explanation - |
Roslyn Analyzer Violated: MA0006 use String.Equals |
12 issues |
Formatting: bold✱ means added ● means code was changed |
12 issues | Severity | Explanation |
---|---|---|
C# BasketWithItemsSpecification .cs L18 | 03High | 03Use string.Equals instead of Equals operator |
C# CatalogItemNameSpecification .cs L10 | 04High | - same explanation - |
C# CustomerOrdersSpecification.cs L10 | 05High | - same explanation - |
C# CustomerOrdersWithItemsSpecifi cation.cs L10 | 00High | - same explanation - |
C# Logout.cshtml.cs L35 | 01High | - same explanation - |
C# RevokeAuthenticationEvents.cs L25 | 02High | - same explanation - |
C# ManageController.cs L83 | 09High | 09Use string.Equals instead of NotEquals operator |
C# ManageController.cs L93 | 10High | 10Use string.Equals instead of NotEquals operator |
C# ManageController.cs L244 | 11High | 11Use string.Equals instead of NotEquals operator |
C# Program.cs L25 | 06High | - same explanation - |
C# Program.cs L169 | 07High | - same explanation - |
C# UserController.cs L49 | 08High | - same explanation - |
Roslyn Analyzer Violated: MA0011 IFormatProvider is missing |
14 issues |
Formatting: bold✱ means added ● means code was changed |
14 issues | Severity | Explanation |
---|---|---|
C# Login.cshtml.cs L111 | 04High | 04Use an overload of 'TryParse' that has a 'System.IFormatProvider' parameter |
C# Checkout.cshtml.cs L55 | 05High | 05Use an overload of 'ToString' that has a 'System.IFormatProvider' parameter |
C# Index.cshtml.cs L63 | 06High | 06Use an overload of 'ToString' that has a 'System.IFormatProvider' parameter |
C# Index.cshtml.cs L85 | 03High | - same explanation - |
C# CatalogViewModelService.cs L70 | 00High | 00Use an overload of 'Parse' that has a 'System.IFormatProvider' parameter |
C# CatalogViewModelService.cs L70 | 01High | 01Use an overload of 'ToString' that has a 'System.IFormatProvider' parameter |
C# CatalogViewModelService.cs L86 | 02High | 02Use an overload of 'ToString' that has a 'System.IFormatProvider' parameter |
C# CatalogViewModelService.cs L102 | 11High | 11Use an overload of 'ToString' that has a 'System.IFormatProvider' parameter |
C# SlugifyParameterTransformer.cs L15 | 12High | 12Use an overload of 'ToLower' that has a 'System.Globalization.CultureInfo' parameter |
C# Basket.cs L54 | 13High | - same explanation - |
C# BasketService.cs L55 | 10High | 10Use an overload of 'ToString' that has a 'System.IFormatProvider' parameter |
C# CustomInputSelect.cs L17 | 07High | - same explanation - |
C# CatalogItemListPagedEndpoint .cs L64 | 08High | 08Use an overload of 'Parse' that has a 'System.IFormatProvider' parameter |
C# CatalogItemListPagedEndpoint .cs L64 | 09High | 09Use an overload of 'ToString' that has a 'System.IFormatProvider' parameter |
Roslyn Analyzer Violated: MA0040 Use a cancellation token |
7 issues |
Formatting: bold✱ means added ● means code was changed |
7 issues | Severity | Explanation |
---|---|---|
C# Program.cs L166 | 2High | 2Specify a CancellationToken (app.Lifetime.ApplicationStarted, app.Lifetime.ApplicationStopped, app.Lifetime.ApplicationStopping) |
C# ApiHealthCheck.cs L25 | 1High | 1Specify a CancellationToken (cancellationToken) |
C# ApiHealthCheck.cs L26 | 0High | 0Specify a CancellationToken (cancellationToken) |
C# HomePageHealthCheck.cs L26 | 3High | 3Specify a CancellationToken (cancellationToken, request.HttpContext.RequestAborted) |
C# HomePageHealthCheck.cs L27 | 6High | 6Specify a CancellationToken (cancellationToken, request.HttpContext.RequestAborted) |
C# ExceptionMiddleware.cs L38 | 5High | 5Specify a CancellationToken (context.RequestAborted) |
C# ExceptionMiddleware.cs L47 | 4High | 4Specify a CancellationToken (context.RequestAborted) |
Roslyn Analyzer Violated: MA0001 StringComparison is missing |
4 issues |
Formatting: bold✱ means added ● means code was changed |
4 issues | Severity | Explanation |
---|---|---|
C# ManageController.cs L420 | 1High | 1Use an overload of 'Replace' that has a StringComparison parameter |
C# ManageController.cs L420 | 0High | - same explanation - |
C# UriComposer.cs L13 | 3High | - same explanation - |
C# Program.cs L78 | 2High | - same explanation - |
Roslyn Analyzer Violated: MA0002 IEqualityComparer<string> is missing |
2 issues |
Formatting: bold✱ means added ● means code was changed |
2 issues | Severity | Explanation |
---|---|---|
C# Checkout.cshtml.cs L55 | 0High | 0Use an overload that has a IEqualityComparer<string> parameter |
C# Index.cshtml.cs L63 | 1High | - same explanation - |
Roslyn Analyzer Violated: CA2254 Template should be a static expression |
9 issues |
Formatting: bold✱ means added ● means code was changed |
9 issues | Severity | Explanation |
---|---|---|
C# RevokeAuthenticationEvents.cs L30 | 2High | 2The logging message template should not vary between calls to 'LoggerExtensions.LogDebug(ILogger, string?, params object?[])' |
C# CachedCatalogLookupDataService Decorator .cs L35 | 3High | 3The logging message template should not vary between calls to 'LoggerExtensions.LogInformation(ILogger, string?, params object?[])' |
C# CachedCatalogLookupDataService Decorator .cs L42 | 0High | 0The logging message template should not vary between calls to 'LoggerExtensions.LogInformation(ILogger, string?, params object?[])' |
C# CatalogLookupDataService.cs L38 | 1High | 1The logging message template should not vary between calls to 'LoggerExtensions.LogInformation(ILogger, string?, params object?[])' |
C# CachedCatalogItemServiceDecora tor.cs L40 | 4High | 4The logging message template should not vary between calls to 'LoggerExtensions.LogInformation(ILogger, string?, params object?[])' |
C# CachedCatalogItemServiceDecora tor.cs L64 | 7High | 7The logging message template should not vary between calls to 'LoggerExtensions.LogInformation(ILogger, string?, params object?[])' |
C# CatalogContextSeed.cs L54 | 8High | 8The logging message template should not vary between calls to 'LoggerExtensions.LogError(ILogger, string?, params object?[])' |
C# LoggerAdapter.cs L16 | 5High | 5The logging message template should not vary between calls to 'LoggerExtensions.LogWarning(ILogger, string?, params object?[])' |
C# LoggerAdapter.cs L21 | 6High | 6The logging message template should not vary between calls to 'LoggerExtensions.LogInformation(ILogger, string?, params object?[])' |
Roslyn Analyzer Violated: RCS1095 Use C# 6.0 dictionary initializer. |
1 issue |
Formatting: bold✱ means added ● means code was changed |
1 issue | Severity | Explanation |
---|---|---|
C# Program.cs L107 | 0High | 0Use C# 6.0 dictionary initializer. |
Roslyn Analyzer Violated: CA1816 Dispose methods should call SuppressFinalize |
2 issues |
Formatting: bold✱ means added ● means code was changed |
2 issues | Severity | Explanation |
---|---|---|
C# ToastService.cs L50 | 0High | 0Change ToastService.Dispose() to call GC.SuppressFinalize(object). This will prevent derived types that introduce a finalizer from needing to re-implement 'IDisposable' to call it. |
C# ToastComponent.cs L83 | 1High | 1Change ToastComponent.Dispose() to call GC.SuppressFinalize(object). This will prevent derived types that introduce a finalizer from needing to re-implement 'IDisposable' to call it. |
Hot Spots
Code Query: Types Hot Spots |
177 types matched
177 types | Debt | Issues | Annual Interest | Breaking Point | # lines of code (LOC) | DebtRating | DebtRatio | Full Name |
---|---|---|---|---|---|---|---|---|
|m100|00| 2d 6h | |m100|00|
First 5 of 107 issues
| |m100|00| 2d 0h | |m11|11| 1y 113d | |m100|00| 212 | 01E | |m18|00| 61.22 | Microsoft.eShopWeb.Web.Controllers .ManageController | |
|m16|01| 3h 33min | |m4|13|
First 5 of 6 issues
| |m10|01| 1h 51min | |m18|03| 1y 331d | |m18|06| 39 | 00E | |m15|01| 51.37 | Microsoft.eShopWeb.Web.Controllers .UserController | |
|m10|02| 2h 22min | |m3|14|
5 issues
| |m10|02| 1h 45min | |m12|10| 1y 127d | |m13|13| 28 | 06D | |m10|03| 37.38 | Microsoft.eShopWeb.Web.Areas .Identity.Pages.Account .RegisterModel | |
|m10|03| 2h 15min | |m0|18|
2 issues
| |m9|04| 1h 36min | |m12|09| 1y 147d | |m17|08| 38 | 07D | |m6|10| 22.78 | BlazorAdmin.Helpers.ToastComponent | |
|m9|04| 2h 3min | |m4|12|
First 5 of 6 issues
| |m4|17| 48min | |m24|00| 2y 192d | |m13|12| 29 | 02D | |m10|04| 35.8 | BlazorAdmin .CustomAuthStateProvider | |
|m8|05| 1h 54min | |m22|01|
First 5 of 25 issues
| |m6|13| 1h 3min | |m17|04| 1y 299d | |m25|01| 55 | 13C | |m5|12| 19.84 | BlazorAdmin.Services .CatalogItemService | |
|m8|06| 1h 52min | |m21|02|
First 5 of 24 issues
| |m5|14| 56min | |m19|02| 1y 361d | |m20|02| 44 | 03D | |m6|09| 23.24 | BlazorAdmin.Services .CachedCatalogItemServiceDecorator | |
|m8|07| 1h 48min | |m16|04|
First 5 of 19 issues
| |m6|11| 1h 7min | |m15|05| 1y 219d | |m19|04| 42 | 16C | |m3|15| 13.65 | BlazorShared.Models.CatalogItem | |
|m6|08| 1h 24min | |m10|06|
First 5 of 12 issues
| |m9|06| 1h 33min | |m7|13| 327d | |m18|07| 39 | 15C | |m4|13| 15.44 | Microsoft.eShopWeb.Web.Areas .Identity.Pages.Account.LoginModel | |
|m5|09| 1h 18min | |m18|03|
First 5 of 21 issues
| |m4|16| 49min | |m14|06| 1y 210d | |m12|14| 27 | 05D | |m6|08| 23.79 | BlazorAdmin.Services.HttpService | |
|m5|10| 1h 17min | |m8|08|
First 5 of 10 issues
| |m5|15| 51min | |m14|08| 1y 186d | |m19|05| 41 | 17C | |m3|17| 11.1 | BlazorAdmin.Pages.CatalogItemPage .List | |
|m5|11| 1h 8min | |m6|10|
First 5 of 8 issues
| |m9|07| 1h 33min | |m5|15| 266d | |m17|10| 37 | 14C | |m4|14| 14.89 | Microsoft.eShopWeb.Web.Pages .Basket.CheckoutModel | |
|m4|12| 1h 4min | |m3|15|
5 issues
| |m9|03| 1h 40min | |m4|17| 235d | |m3|18| 8 | 10D | |m8|07| 28.66 | Microsoft.eShopWeb.Web.ViewModels .Manage.ExternalLoginsViewModel | |
|m4|13| 1h 3min | |m9|07|
First 5 of 11 issues
| |m6|12| 1h 3min | |m8|12| 1y 1d | |m17|11| 37 | 18B | |m2|18| 9.88 | Microsoft.eShopWeb.ApplicationCore .Entities.CatalogItem | |
|m4|14| 59min | |m2|17|
4 issues
| |m8|09| 1h 26min | |m5|16| 253d | |m5|17| 11 | 09D | |m13|02| 46.07 | Microsoft.eShopWeb.Web.Areas .Identity.Pages.Account .ConfirmEmailModel | |
|m4|15| 55min | |m6|09|
First 5 of 8 issues
| |m7|10| 1h 13min | |m6|14| 273d | |m19|03| 42 | 12C | |m3|16| 11.6 | Microsoft.eShopWeb.Web.Pages .Basket.IndexModel | |
|m4|16| 55min | |m5|11|
First 5 of 7 issues
| |m8|08| 1h 31min | |m4|18| 219d | |m6|16| 14 | 08D | |m8|05| 30.34 | Microsoft.eShopWeb.Web.Areas .Identity.Pages.Account .LogoutModel | |
|m3|17| 51min | |m0|19|
2 issues
| |m3|18| 33min | |m14|07| 1y 201d | |m17|09| 38 | 19B | |m2|19| 7.72 | BlazorAdmin.Pages.CatalogItemPage .Edit | |
|m3|18| 50min | |m3|16|
5 issues
| |m9|05| 1h 34min | |m3|19| 197d | |m2|19| 6 | 11D | |m8|06| 29.39 | Microsoft.eShopWeb.Web.ViewModels .File.FileViewModel | |
|m3|19| 50min | |m16|05|
First 5 of 19 issues
| |m2|19| 21min | |m23|01| 2y 135d | |m10|15| 22 | 04D | |m5|11| 20.89 | Microsoft.eShopWeb.Infrastructure .Data.CatalogContextSeed |
Code Query: Types to Fix Priority |
61 types matched
61 types | Breaking Point | Debt | Annual Interest | Issues | # lines of code (LOC) | DebtRating | DebtRatio | Full Name |
---|---|---|---|---|---|---|---|---|
|m0|19| 69d | |m0|15| 32min | |m16|01| 2h 51min | |m10|02|
First 5 of 12 issues
| |m2|07| 9 | 18C | |m11|17| 12.54 | Microsoft.eShopWeb.Web.ViewModels .OrderViewModel | |
|m0|18| 83d | |m0|03| 39min | |m17|00| 2h 55min | |m13|00|
First 5 of 15 issues
| |m2|05| 10 | 14C | |m12|16| 13.61 | Microsoft.eShopWeb.Web.ViewModels .OrderItemViewModel | |
|m1|17| 117d | |m0|18| 30min | |m9|06| 1h 34min | |m2|10|
4 issues
| |m0|19| 4 | 05D | |m37|03| 27.04 | Microsoft.eShopWeb.Web.Pages .ErrorModel | |
|m1|16| 123d | |m0|06| 37min | |m10|02| 1h 50min | |m9|03|
First 5 of 11 issues
| |m4|04| 13 | 06D | |m27|07| 21.47 | Microsoft.eShopWeb.Web.Services .CachedCatalogViewModelService | |
|m1|15| 127d | |m0|14| 33min | |m9|05| 1h 35min | |m12|01|
First 5 of 14 issues
| |m10|00| 26 | 15C | |m7|18| 10.4 | Microsoft.eShopWeb.Web.Services .BasketViewModelService | |
|m1|14| 130d | |m0|19| 30min | |m8|19| 1h 25min | |m4|06|
First 5 of 6 issues
| |m4|03| 14 | 19B | |m2|19| 7.97 | Microsoft.eShopWeb.Web.Pages .Basket.BasketItemViewModel | |
|m1|13| 130d | |m0|17| 30min | |m8|18| 1h 26min | |m3|08|
5 issues
| |m1|09| 7 | 07D | |m47|01| 32.39 | Microsoft.eShopWeb.Web.Services .CatalogItemViewModelService | |
|m1|12| 133d | |m0|16| 31min | |m8|17| 1h 27min | |m6|04|
First 5 of 8 issues
| |m6|02| 17 | 17C | |m16|14| 15.33 | Microsoft.eShopWeb.Web.Pages .Shared.Components.BasketComponent .Basket | |
|m2|11| 140d | |m0|13| 34min | |m8|15| 1h 30min | |m1|19|
3 issues
| |m0|16| 6 | 04D | |m33|05| 25 | Microsoft.eShopWeb.Web.ViewModels .Manage.RemoveLoginViewModel | |
|m2|07| 141d | |m0|08| 35min | |m8|08| 1h 32min | |m1|12|
3 issues
| |m0|12| 6 | 01D | |m25|08| 20.71 | Microsoft.eShopWeb.Web.ViewModels .Manage.SetPasswordViewModel | |
|m2|06| 141d | |m0|07| 35min | |m8|09| 1h 32min | |m1|15|
3 issues
| |m0|15| 6 | 03D | |m25|09| 20.71 | Microsoft.eShopWeb.Web.ViewModels .Manage .TwoFactorAuthenticationViewModel | |
|m2|05| 141d | |m0|12| 35min | |m8|14| 1h 32min | |m1|16|
3 issues
| |m0|18| 6 | 02D | |m25|13| 20.71 | Microsoft.eShopWeb.Web.ViewModels .Account.LoginViewModel | |
|m2|10| 141d | |m0|11| 35min | |m8|11| 1h 32min | |m1|17|
3 issues
| |m0|17| 6 | 11D | |m25|12| 20.71 | Microsoft.eShopWeb.Web.ViewModels .Account.LoginWith2faViewModel | |
|m2|09| 141d | |m0|10| 35min | |m8|10| 1h 32min | |m1|14|
3 issues
| |m0|14| 6 | 12D | |m25|10| 20.71 | Microsoft.eShopWeb.Web.ViewModels .Account.RegisterViewModel | |
|m2|08| 141d | |m0|09| 35min | |m8|13| 1h 32min | |m1|18|
3 issues
| |m0|11| 6 | 13D | |m25|11| 20.71 | Microsoft.eShopWeb.Web.Areas .Identity.Pages.Account .RegisterModel+InputModel | |
|m2|04| 142d | |m0|02| 40min | |m9|03| 1h 43min | |m3|07|
5 issues
| |m6|01| 18 | 16C | |m14|15| 14.58 | Microsoft.eShopWeb.ApplicationCore .Entities.BasketAggregate.Basket | |
|m2|03| 148d | |m0|05| 38min | |m8|07| 1h 33min | |m1|13|
3 issues
| |m0|10| 6 | 00E | |m88|00| 54.98 | Microsoft.eShopWeb.PublicApi .MappingProfile | |
|m2|02| 160d | |m0|00| 42min | |m9|04| 1h 37min | |m2|09|
4 issues
| |m2|06| 9 | 10D | |m38|02| 27.53 | Microsoft.eShopWeb.Web.Pages.Admin .EditCatalogItemModel | |
|m2|01| 161d | |m0|01| 40min | |m8|12| 1h 32min | |m2|11|
4 issues
| |m0|13| 6 | 08D | |m31|06| 23.6 | Microsoft.eShopWeb.Web.ViewModels .Manage .EnableAuthenticatorViewModel | |
|m2|00| 164d | |m0|04| 39min | |m8|16| 1h 27min | |m4|05|
First 5 of 6 issues
| |m1|08| 7 | 09D | |m37|04| 26.76 | Microsoft.eShopWeb.Web.Features .OrderDetails.GetOrderDetails |
Code Query: Issues to Fix Priority |
1,087 issues matched
Code Query: Debt and Issues per Rule |
113 rules matched
113 rules | Issues | Debt | Annual Interest | Breaking Point | Category | Full Name |
---|---|---|---|---|---|---|
Code should be tested | |m100|00|
First 5 of 199 issues
| |m100|00| 6d 3h | |m48|02| 2d 7h | |m9|05| 2y 49d | 06Project Rules \ Code Coverage | Rule |
New Types and Methods should be tested | |m36|02|
First 5 of 73 issues
| |m17|01| 1d 0h | |m49|01| 3d 0h | |m1|13| 134d | 05Project Rules \ Code Coverage | Rule |
From now, all types added should be 100% covered by tests | |m24|05|
First 5 of 49 issues
| |m15|02| 1d 0h | |m100|00| 6d 1h | |m0|15| 60d | 07Project Rules \ Code Smells Regression | Rule |
Avoid namespaces dependency cycles | |m2|15|
4 issues
| |m15|03| 1d 0h | |m2|10| 1h 20min | |m26|03| 6y | 09Project Rules \ Architecture | Rule |
Do not raise too general exception types | |m9|07|
First 5 of 18 issues
| |m11|04| 6h 0min | |m12|03| 6h 0min | |m4|06| 1y | 08Project Rules \ .NET Framework Usage \ System | Rule |
Types 100% covered should be tagged with FullCoveredAttribute | |m29|03|
First 5 of 59 issues
| |m5|05| 2h 57min | |m0|19| 0min 0s | |m0|18| 00:00:00 | 01Project Rules \ Code Coverage | Rule |
Use .ConfigureAwait(false) | |m77|01|
First 5 of 154 issues
| |m5|06| 2h 34min | |m5|06| 2h 34min | |m4|08| 1y | 00Roslyn Analyzers \ Usage | Rule |
Avoid namespaces mutually dependent | |m3|11|
First 5 of 7 issues
| |m3|07| 1h 50min | |m11|04| 5h 38min | |m1|14| 118d | 02Project Rules \ Architecture | Rule |
Avoid having different types with same name | |m5|10|
First 5 of 10 issues
| |m3|08| 1h 40min | |m6|05| 3h 20min | |m2|12| 182d | 04Project Rules \ Naming Conventions | Rule |
Uri fields or properties should be of type System.Uri | |m9|08|
First 5 of 18 issues
| |m2|09| 1h 30min | |m0|16| 0min 0s | |m0|16| 00:00:00 | 03Project Rules \ .NET Framework Usage \ System | Rule |
Assemblies and Namespaces should be tested | |m10|06|
First 5 of 20 issues
| |m2|10| 1h 20min | |m0|18| 0min 0s | |m0|17| 00:00:00 | 16Project Rules \ Code Coverage | Rule |
Avoid types with too many methods | |m0|18|
1 issue
| |m2|11| 1h 15min | |m0|14| 5min | |m62|01| 14y 76d | 15Project Rules \ Code Smells | Rule |
Avoid namespaces with few types | |m7|09|
First 5 of 14 issues
| |m2|12| 1h 10min | |m0|17| 0min 0s | |m0|19| 00:00:00 | 17Project Rules \ Design | Rule |
Avoid types too big | |m0|19|
1 issue
| |m2|13| 1h 3min | |m0|15| 2min 47s | |m100|00| 22y 300d | 19Project Rules \ Code Smells | Rule |
Avoid decreasing code coverage by tests of types | |m2|17|
4 issues
| |m2|14| 1h 3min | |m3|09| 1h 28min | |m3|09| 259d | 18Project Rules \ Code Smells Regression | Rule |
Methods | |m3|13|
First 5 of 6 issues
| |m1|17| 1h 0min | |m4|07| 2h 0min | |m2|11| 182d | 11Project Rules \ API Breaking Changes | Rule |
Avoid prefixing type name with parent namespace name | |m3|12|
First 5 of 6 issues
| |m1|16| 1h 0min | |m0|12| 12min | |m21|04| 5y | 10Project Rules \ Naming Conventions | Rule |
Avoid naming types and namespaces with the same identifier | |m2|14|
5 issues
| |m1|15| 1h 0min | |m3|08| 1h 40min | |m2|10| 219d | 12Project Rules \ Naming Conventions | Rule |
Add comma after the last property | |m25|04|
First 5 of 51 issues
| |m1|18| 51min | |m1|11| 51min | |m4|07| 1y | 14Roslyn Analyzers \ Style | Rule |
Avoid various capitalizations for method name | |m2|16|
4 issues
| |m1|19| 48min | |m0|13| 8min | |m26|02| 6y | 13Project Rules \ Naming Conventions | Rule |
Code Query: New Debt and Issues per Rule |
77 rules matched
77 rules | IssuesAdded | IssuesFixed | Issues | Debt | DebtDiff | Category | Full Name |
---|---|---|---|---|---|---|---|
Code should be tested | |m100|00|
First 5 of 101 issues
| |m100|00|
First 5 of 11 issues
| |m100|00|
First 5 of 199 issues
| |m100|00| 6d 3h | |m100|00| 3d 0h | 06Project Rules \ Code Coverage | Rule |
New Types and Methods should be tested | |m72|01|
First 5 of 73 issues
| 06no issue | |m36|02|
First 5 of 73 issues
| |m17|01| 1d 0h | |m36|01| 1d 0h | 05Project Rules \ Code Coverage | Rule |
From now, all types added should be 100% covered by tests | |m48|02|
First 5 of 49 issues
| 08no issue | |m24|04|
First 5 of 49 issues
| |m15|02| 1d 0h | |m33|02| 1d 0h | 07Project Rules \ Code Smells Regression | Rule |
Do not raise too general exception types | |m17|05|
First 5 of 18 issues
| 10no issue | |m8|07|
First 5 of 18 issues
| |m11|04| 6h 0min | |m24|03| 6h 0min | 09Project Rules \ .NET Framework Usage \ System | Rule |
Avoid namespaces dependency cycles | |m0|19|
1 issue
| 09no issue | |m1|15|
4 issues
| |m15|03| 1d 0h | |m8|04| 2h 0min | 08Project Rules \ Architecture | Rule |
Avoid types with too many methods | |m0|18|
1 issue
| 02no issue | |m0|18|
1 issue
| |m2|09| 1h 15min | |m5|05| 1h 15min | 01Project Rules \ Code Smells | Rule |
Avoid types too big | |m0|17|
1 issue
| 03no issue | |m0|19|
1 issue
| |m2|11| 1h 3min | |m4|06| 1h 3min | 00Project Rules \ Code Smells | Rule |
Avoid decreasing code coverage by tests of types | |m3|15|
4 issues
| 04no issue | |m1|16|
4 issues
| |m2|12| 1h 3min | |m4|07| 1h 3min | 02Project Rules \ Code Smells Regression | Rule |
Methods | |m5|09|
First 5 of 6 issues
| 05no issue | |m2|10|
First 5 of 6 issues
| |m1|15| 1h 0min | |m4|08| 1h 0min | 04Project Rules \ API Breaking Changes | Rule |
Avoid prefixing type name with parent namespace name | |m4|11|
5 issues
| 07no issue | |m2|11|
First 5 of 6 issues
| |m1|14| 1h 0min | |m3|09| 50min | 03Project Rules \ Naming Conventions | Rule |
Avoid naming types and namespaces with the same identifier | |m3|13|
4 issues
| 16no issue | |m2|12|
5 issues
| |m1|13| 1h 0min | |m3|11| 48min | 16Project Rules \ Naming Conventions | Rule |
Avoid various capitalizations for method name | |m3|12|
4 issues
| 19no issue | |m1|13|
4 issues
| |m1|16| 48min | |m3|10| 48min | 15Project Rules \ Naming Conventions | Rule |
Use .ConfigureAwait(false) | |m43|03|
First 5 of 44 issues
| 18no issue | |m77|01|
First 5 of 154 issues
| |m4|06| 2h 34min | |m3|12| 44min | 17Roslyn Analyzers \ Usage | Rule |
Types 100% covered should be tagged with FullCoveredAttribute | |m17|04|
First 5 of 18 issues
| |m36|01|
4 issues
| |m29|03|
First 5 of 59 issues
| |m5|05| 2h 57min | |m2|13| 42min | 19Project Rules \ Code Coverage | Rule |
Collection properties should be read only | |m3|14|
4 issues
| 15no issue | |m1|14|
4 issues
| |m1|17| 40min | |m2|14| 40min | 18Project Rules \ .NET Framework Usage \ System.Collections | Rule |
Methods refactored should be tested | |m6|07|
First 5 of 7 issues
| 12no issue | |m3|09|
First 5 of 7 issues
| |m1|18| 35min | |m2|15| 35min | 11Project Rules \ Code Coverage | Rule |
Uri fields or properties should be of type System.Uri | |m6|08|
First 5 of 7 issues
| 11no issue | |m8|06|
First 5 of 18 issues
| |m2|07| 1h 30min | |m2|16| 35min | 10Project Rules \ .NET Framework Usage \ System | Rule |
Assemblies and Namespaces should be tested | |m7|06|
First 5 of 8 issues
| 14no issue | |m9|05|
First 5 of 20 issues
| |m2|08| 1h 20min | |m2|17| 32min | 12Project Rules \ Code Coverage | Rule |
Avoid namespaces with few types | |m5|10|
First 5 of 6 issues
| 13no issue | |m6|08|
First 5 of 14 issues
| |m2|10| 1h 10min | |m2|18| 30min | 14Project Rules \ Design | Rule |
Transitive Software Composition Analysis (SCA) | |m0|16|
1 issue
| 17no issue | |m0|17|
1 issue
| |m0|19| 20min | |m1|19| 20min | 13Project Rules \ Security | Rule |
Code Query: Debt and Issues per Code Element |
553 code elements matched
553 code elements | Issues | Debt | Annual Interest | Breaking Point | Full Name |
---|---|---|---|---|---|
|m15|10|
3 issues
| |m100|00| 3h 30min | |m100|00| 1h 48min | |m15|10| 1y 340d | Microsoft.eShopWeb.Web.Controllers .UserController | |
|m15|09|
3 issues
| |m70|01| 2h 28min | |m62|04| 1h 8min | |m17|09| 2y 66d | Microsoft.eShopWeb.Web.Controllers .ManageController | |
|m23|05|
4 issues
| |m65|02| 2h 17min | |m96|01| 1h 45min | |m10|18| 1y 109d | Microsoft.eShopWeb.Web.Areas .Identity.Pages.Account .RegisterModel | |
|m0|19|
1 issue
| |m64|03| 2h 14min | |m88|02| 1h 35min | |m11|17| 1y 148d | BlazorAdmin.Helpers.ToastComponent | |
|m7|12|
2 issues
| |m60|05| 2h 7min | |m36|14| 40min | |m25|04| 3y 63d | Microsoft.eShopWeb.Web.Interfaces | |
|m7|11|
2 issues
| |m60|04| 2h 7min | |m36|13| 40min | |m25|03| 3y 63d | Microsoft.eShopWeb.PublicApi | |
|m46|00|
First 5 of 7 issues
| |m59|06| 2h 4min | |m45|05| 49min | |m20|06| 2y 186d | Microsoft.eShopWeb.Web.Controllers .ManageController .EnableAuthenticator (EnableAuthenticatorViewModel) | |
|m0|18|
1 issue
| |m57|08| 2h 0min | |m18|18| 20min | |m48|01| 6y | Microsoft.eShopWeb.ApplicationCore .Interfaces | |
|m0|16|
1 issue
| |m57|07| 2h 0min | |m18|19| 20min | |m48|00| 6y | BlazorShared.Models | |
|m7|14|
2 issues
| |m52|09| 1h 50min | |m23|16| 25min | |m34|02| 4y 96d | BlazorAdmin .CustomAuthStateProvider | |
|m7|13|
2 issues
| |m43|10| 1h 31min | |m36|12| 40min | |m18|08| 2y 106d | BlazorAdmin.Services .CatalogItemService | |
|m0|17|
1 issue
| |m42|11| 1h 29min | |m30|15| 33min | |m21|05| 2y 243d | BlazorAdmin.Services .CachedCatalogItemServiceDecorator | |
|m23|02|
4 issues
| |m36|12| 1h 18min | |m41|08| 45min | |m13|11| 1y 266d | Microsoft.eShopWeb.Web.Controllers .ManageController .LinkLoginCallback() | |
|m23|03|
4 issues
| |m34|13| 1h 12min | |m42|06| 45min | |m12|13| 1y 216d | Microsoft.eShopWeb.Web.Controllers .ManageController .SendVerificationEmail (IndexViewModel) | |
|m23|04|
4 issues
| |m33|14| 1h 9min | |m41|07| 45min | |m12|14| 1y 197d | Microsoft.eShopWeb.Web.Controllers .ManageController.ChangePassword (ChangePasswordViewModel) | |
|m0|15|
1 issue
| |m32|15| 1h 8min | |m38|11| 42min | |m13|12| 1y 226d | BlazorAdmin.Pages.CatalogItemPage .List | |
|m23|06|
4 issues
| |m31|16| 1h 7min | |m41|09| 45min | |m12|15| 1y 179d | Microsoft.eShopWeb.Web.Controllers .ManageController.SetPassword (SetPasswordViewModel) | |
|m23|07|
4 issues
| |m30|17| 1h 4min | |m41|10| 44min | |m11|16| 1y 160d | Microsoft.eShopWeb.Web.Controllers .ManageController.RemoveLogin (RemoveLoginViewModel) | |
|m30|01|
5 issues
| |m28|18| 1h 0min | |m23|17| 25min | |m19|07| 2y 129d | Microsoft.eShopWeb.Web.Controllers .ManageController.MyAccount (IndexViewModel) | |
|m23|08|
4 issues
| |m28|19| 59min | |m79|03| 1h 26min | |m5|19| 253d | Microsoft.eShopWeb.Web.Areas .Identity.Pages.Account .ConfirmEmailModel |
Code Query: New Debt and Issues per Code Element |
290 code elements matched
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 typematched
Validated Rule: 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.
No typematched
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 typematched
Validated Rule: 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.
No typematched
Validated Rule: 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.
No methodmatched
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 methodmatched
Rule Violated: ND1206 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.
1 type matched |
Formatting: bold✱ means added ● means code was changed |
1 type | methodsUsingMe | Debt | Severity | Full Name |
---|---|---|---|---|
0no method | |m0|0| 1min 0s | 0Low | Microsoft.eShopWeb.ApplicationCore .Constants.AuthorizationConstants |
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 |
---|---|---|---|---|
03public | |m0|03| 2min 0s | 03Medium | Microsoft.eShopWeb.ApplicationCore .Exceptions .BasketNotFoundException | |
04public | |m0|04| 2min 0s | 04Medium | Microsoft.eShopWeb.ApplicationCore .Constants.AuthorizationConstants | |
05public | |m0|05| 2min 0s | 05Medium | Microsoft.eShopWeb.ApplicationCore .Entities.BuyerAggregate .PaymentMethod | |
00public | |m0|00| 2min 0s | 00Medium | Microsoft.eShopWeb.Infrastructure .Data.FileItem | |
01public | |m0|01| 2min 0s | 01Medium | BlazorShared.Models .CreateCatalogItemResponse | |
02public | |m0|02| 2min 0s | 02Medium | BlazorShared.Models .DeleteCatalogItemResponse | |
06public | |m0|06| 2min 0s | 06Medium | BlazorShared.Models .EditCatalogItemResult | |
10public | |m0|10| 2min 0s | 10Medium | BlazorShared.Models .PagedCatalogItemResponse | |
11public | |m0|11| 2min 0s | 11Medium | BlazorAdmin.JavaScript.Cookies | |
12public | |m0|12| 2min 0s | 12Medium | Microsoft.eShopWeb.PublicApi .CatalogItemEndpoints .CreateCatalogItemRequest | |
07public | |m0|07| 2min 0s | 07Medium | Microsoft.eShopWeb.PublicApi .AuthEndpoints.AuthenticateRequest | |
08public | |m0|08| 2min 0s | 08Medium | Microsoft.eShopWeb.PublicApi .AuthEndpoints.ClaimValue | |
09public | |m0|09| 2min 0s | 09Medium | Microsoft.eShopWeb.PublicApi .AuthEndpoints .AuthenticateEndpoint |
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 |
---|---|---|---|---|---|
0no field | |m100|0|
2 methods | |m100|0| 1min 30s | 0Medium | BlazorAdmin.Services.HttpService .ToJson(Object) | |
1no field | 1no method | |m0|1| 0min 30s | 1Medium | Microsoft.eShopWeb.Web.ViewModels .OrderItemViewModel.get_Discount() |
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.
7 methods matched |
Formatting: bold✱ means added ● means code was changed |
7 methods | virtualMethodsCalled | DerivedTypes | Debt | Severity | Full Name |
---|---|---|---|---|---|
|m0|2|
1 method
| 2no type | |m0|2| 4min 0s | 2High | Microsoft.eShopWeb.ApplicationCore .Specifications .CatalogFilterPaginatedSpecificati on..ctor(Int32,Int32,Nullable <Int32>,Nullable<Int32>) | |
|m0|1|
1 method
| 1no type | |m0|1| 4min 0s | 1High | Microsoft.eShopWeb.ApplicationCore .Specifications .CatalogFilterSpecification..ctor (Nullable<Int32>,Nullable<Int32>) | |
|m0|0|
1 method
| 0no type | |m0|0| 4min 0s | 0High | Microsoft.eShopWeb.ApplicationCore .Specifications .CatalogItemNameSpecification. .ctor(String) | |
|m0|3|
1 method
| 3no type | |m0|3| 4min 0s | 3High | Microsoft.eShopWeb.ApplicationCore .Specifications .CatalogItemsSpecification..ctor (Int32[]) | |
|m0|6|
1 method
| 6no type | |m0|6| 4min 0s | 6High | Microsoft.eShopWeb.ApplicationCore .Specifications .CustomerOrdersSpecification..ctor (String) | |
|m0|5|
1 method
| 5no type | |m0|5| 4min 0s | 5High | Microsoft.eShopWeb.ApplicationCore .Specifications .CustomerOrdersWithItemsSpecificat ion..ctor(String) | |
|m0|4|
1 method
| 4no type | |m0|4| 4min 0s | 4High | Microsoft.eShopWeb.ApplicationCore .Specifications .OrderWithItemsByIdSpec..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 typematched
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 fieldmatched
Rule Violated: ND1212 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.
1 type matched |
Formatting: bold✱ means added ● means code was changed |
1 type | TypesThatImplementMe | Debt | Severity | Full Name |
---|---|---|---|---|
|m0|0|
First 5 of 6 types | |m0|0| 28min | 0Medium | Microsoft.eShopWeb.ApplicationCore .Interfaces.IAggregateRoot |
Validated Rule: 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.
No methodmatched
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 typematched
Critical Rule Violated: ND1501 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.
7 methods matched |
Formatting: bold✱ means added ● means code was changed |
7 methods | NewVisibility | reason | Debt | Severity | Full Name |
---|---|---|---|---|---|
2 | 2is public and has different parameters than in baseline | |m0|2| 10min | 2High | Microsoft.eShopWeb.ApplicationCore .Entities.CatalogItem .UpdateDetails(String,String ,Decimal) | |
1 | 1was public and has been removed | |m0|1| 10min | 1High | Ardalis.GuardClauses.BasketGuards .NullBasket(IGuardClause,Int32 ,Basket) | |
0 | 0is public and has different parameters than in baseline | |m0|0| 10min | 0High | Microsoft.eShopWeb.Infrastructure .Identity.AppIdentityDbContextSeed .SeedAsync(UserManager <ApplicationUser>,RoleManager <IdentityRole>) | |
3Public | 3is public and has a different return type | |m0|3| 10min | 3High | Microsoft.eShopWeb.PublicApi .CatalogItemEndpoints .ListPagedCatalogItemRequest .get_PageSize() | |
6 | 6is public and has different parameters than in baseline | |m0|6| 10min | 6High | Microsoft.eShopWeb.PublicApi .CatalogItemEndpoints .ListPagedCatalogItemRequest .set_PageSize(Nullable<Int32>) | |
5Public | 5is public and has a different return type | |m0|5| 10min | 5High | Microsoft.eShopWeb.PublicApi .CatalogItemEndpoints .ListPagedCatalogItemRequest .get_PageIndex() | |
4 | 4is public and has different parameters than in baseline | |m0|4| 10min | 4High | Microsoft.eShopWeb.PublicApi .CatalogItemEndpoints .ListPagedCatalogItemRequest .set_PageIndex(Nullable<Int32>) |
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 fieldmatched
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 typematched
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 typematched
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 typematched
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.
199 members matched |
Formatting: bold✱ means added ● means code was changed |
199 types and methods | Percentage Coverage | # lines of code (LOC) | # lines of code not covered | Cyclomatic Complexity (CC) | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|---|---|
|c0|06| 0% | |m58|06| 38 | |m69|06| 38 | |m100|00| 21 | |m77|01| 2h 14min | 001h 35min | BlazorAdmin.Helpers.ToastComponent | |
|c0|05| 0% | |m63|02| 41 | |m74|02| 41 | |m76|02| 16 | |m38|06| 1h 8min | 0142min | BlazorAdmin.Pages.CatalogItemPage .List | |
|c0|07| 0% | |m84|00| 55 | |m100|00| 55 | |m14|15| 3 | |m51|04| 1h 30min | 0239min | BlazorAdmin.Services .CatalogItemService | |
|c0|09| 0% | |m27|12| 18 | |m32|12| 18 | |m85|01| 18 | |m22|11| 41min | 0336min | Microsoft.eShopWeb.PublicApi .CatalogItemEndpoints .UpdateCatalogItemRequest | |
|c0|08| 0% | |m67|01| 44 | |m80|01| 44 | |m23|12| 5 | |m50|05| 1h 29min | 0433min | BlazorAdmin.Services .CachedCatalogItemServiceDecorator | |
|c0|01| 0% | |m60|03| 39 | |m70|03| 39 | |m0|19| 0 | |m25|09| 45min | 0531min | BlazorAdmin.Pages.CatalogItemPage .Create | |
|c0|00| 0% | |m58|05| 38 | |m69|05| 38 | |m0|18| 0 | |m25|08| 46min | 0631min | BlazorAdmin.Pages.CatalogItemPage .Edit | |
|c0|02| 0% | |m41|10| 27 | |m49|10| 27 | |m0|16| 0 | |m19|13| 35min | 0730min | BlazorAdmin.Pages.CatalogItemPage .Details | |
|c0|04| 0% | |m44|07| 29 | |m52|07| 29 | |m0|17| 0 | |m21|12| 38min | 0830min | BlazorAdmin.Pages.CatalogItemPage .Delete | |
|c0|03| 0% | |m41|11| 27 | |m49|11| 27 | |m28|10| 6 | |m29|07| 53min | 0929min | BlazorAdmin.Services.HttpService | |
|c0|16| 0% | |m18|15| 12 | |m21|15| 12 | |m47|05| 10 | |m14|15| 27min | 1029min | Microsoft.eShopWeb.PublicApi .AuthEndpoints.UserInfo | |
|c0|15| 0% | |m60|04| 39 | |m70|04| 39 | |m38|08| 8 | |m100|00| 2h 54min | 1128min | Microsoft.eShopWeb.Web.Controllers .UserController | |
|c0|17| 0% | |m20|13| 13 | |m23|13| 13 | |m33|09| 7 | |m23|10| 42min | 1228min | BlazorAdmin.Services.ToastService | |
|c0|19| 0% | |m44|08| 29 | |m52|08| 29 | |m42|07| 9 | |m62|02| 1h 49min | 1324min | BlazorAdmin .CustomAuthStateProvider | |
|c0|18| 0% | |m43|09| 28 | |m50|09| 28 | |m47|06| 10 | |m57|03| 1h 40min | 1424min | Microsoft.eShopWeb.Web.Areas .Identity.Pages.Account .RegisterModel | |
|c0|11| 0% | |m7|18| 5 | |m9|18| 5 | |m19|14| 4 | |m7|18| 14min | 1524min | BlazorAdmin.Helpers .RefreshBroadcast | |
|c0|10| 0% | |m18|14| 12 | |m21|14| 12 | |m57|03| 12 | |m14|14| 27min | 1624min | Microsoft.eShopWeb.Infrastructure .Data.FileItem | |
|c0|12| 0% | |m16|16| 11 | |m20|16| 11 | |m52|04| 11 | |m13|16| 25min | 1722min | BlazorShared.Authorization .UserInfo | |
|c0|14| 0% | |m7|19| 5 | |m9|19| 5 | |m19|13| 4 | |m5|19| 11min | 1819min | BlazorAdmin.Helpers .BlazorComponent | |
|c0|13| 0% | |m13|17| 9 | |m16|17| 9 | |m28|11| 6 | |m8|17| 17min | 1917min | BlazorAdmin.Services.CacheEntry<T> |
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.
73 members matched |
Formatting: bold✱ means added ● means code was changed |
73 types and methods | Percentage Coverage | # lines of code (LOC) | # lines of code not covered | Cyclomatic Complexity (CC) | Debt | Severity | Full Name |
---|---|---|---|---|---|---|---|
|c0|06| 0% | |m100|00| 39 | |m100|00| 39 | |m80|01| 8 | |m100|00| 25min | 06High | Microsoft.eShopWeb.Web.Controllers .UserController | |
|c0|05| 0% | |m71|01| 28 | |m71|01| 28 | |m100|00| 10 | |m99|01| 25min | 05High | Microsoft.eShopWeb.Web.Areas .Identity.Pages.Account .RegisterModel | |
|c0|07| 0% | |m42|02| 17 | |m42|02| 17 | |m50|03| 5 | |m33|14| 10min | 07High | Microsoft.eShopWeb.Web.Controllers .ManageController .EnableAuthenticator (EnableAuthenticatorViewModel) | |
|c0|09| 0% | |m34|04| 14 | |m34|04| 14 | |m30|05| 3 | |m33|09| 10min | 09High | Microsoft.eShopWeb.Web.Controllers .ManageController .SendVerificationEmail (IndexViewModel) | |
|c0|08| 0% | |m34|03| 14 | |m34|03| 14 | |m30|08| 3 | |m53|02| 14min | 08High | Microsoft.eShopWeb.Web.Areas .Identity.Pages.Account .LogoutModel | |
|c0|01| 0% | |m31|05| 13 | |m31|05| 13 | |m30|09| 3 | |m33|10| 10min | 01High | Microsoft.eShopWeb.Web.Controllers .ManageController.ChangePassword (ChangePasswordViewModel) | |
|c0|00| 0% | |m28|07| 12 | |m28|07| 12 | |m30|07| 3 | |m33|12| 10min | 00High | Microsoft.eShopWeb.Web.Controllers .ManageController.SetPassword (SetPasswordViewModel) | |
|c0|02| 0% | |m28|06| 12 | |m28|06| 12 | |m30|12| 3 | |m33|08| 10min | 02High | Microsoft.eShopWeb.Web.Controllers .ManageController .LinkLoginCallback() | |
|c0|04| 0% | |m26|09| 11 | |m26|09| 11 | |m30|06| 3 | |m33|11| 10min | 04High | Microsoft.eShopWeb.Web.Controllers .ManageController.RemoveLogin (RemoveLoginViewModel) | |
|c0|03| 0% | |m26|08| 11 | |m26|08| 11 | |m50|02| 5 | |m42|05| 12min | 03High | Microsoft.eShopWeb.Web.Areas .Identity.Pages.Account .ConfirmEmailModel | |
|c0|16| 0% | |m23|12| 10 | |m23|12| 10 | |m20|19| 2 | |m33|13| 10min | 16High | Microsoft.eShopWeb.Web.Controllers .ManageController.ExternalLogins( ) | |
|c0|15| 0% | |m23|11| 10 | |m23|11| 10 | |m20|16| 2 | |m38|06| 11min | 15High | Microsoft.eShopWeb.Web .HealthChecks.HomePageHealthCheck | |
|c0|17| 0% | |m23|10| 10 | |m23|10| 10 | |m20|17| 2 | |m42|04| 12min | 17High | Microsoft.eShopWeb.Web.Controllers .OrderController | |
|c0|19| 0% | |m21|15| 9 | |m21|15| 9 | |m30|11| 3 | |m29|15| 9min | 19High | Microsoft.eShopWeb.Web.Controllers .ManageController .GenerateRecoveryCodes() | |
|c0|18| 0% | |m21|14| 9 | |m21|14| 9 | |m20|18| 2 | |m34|07| 10min | 18High | Microsoft.eShopWeb.Web .HealthChecks.ApiHealthCheck | |
|c0|11| 0% | |m21|13| 9 | |m21|13| 9 | |m50|04| 5 | |m48|03| 13min | 11High | Microsoft.eShopWeb.Web.Pages.Admin .EditCatalogItemModel | |
|c0|10| 0% | |m18|18| 8 | |m18|18| 8 | |m30|10| 3 | |m26|19| 8min | 10High | Microsoft.eShopWeb.Web.Pages .Basket.CheckoutModel .GetOrSetBasketCookieAndUserName() | |
|c0|12| 0% | |m18|19| 8 | |m18|19| 8 | |m20|15| 2 | |m26|18| 8min | 12High | Microsoft.eShopWeb.Web.Controllers .ManageController.ChangePassword( ) | |
|c0|14| 0% | |m18|16| 8 | |m18|16| 8 | |m20|14| 2 | |m26|16| 8min | 14High | Microsoft.eShopWeb.Web.Controllers .ManageController.SetPassword() | |
|c0|13| 0% | |m18|17| 8 | |m18|17| 8 | |m20|13| 2 | |m26|17| 8min | 13High | Microsoft.eShopWeb.Web.Controllers .ManageController.Disable2fa() |
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.
7 methods matched |
Formatting: bold✱ means added ● means code was changed |
7 methods | Percentage Coverage | # lines of code (LOC) | # lines of code not covered | Debt | Severity | Full Name |
---|---|---|---|---|---|---|
|c0|2| 0% | |m100|0| 16 | |m100|0| 16 | |m100|0| 10min | 2High | BlazorAdmin .CustomAuthStateProvider.FetchUser () | |
|c0|1| 0% | |m28|1| 6 | |m28|1| 6 | |m50|1| 6min | 1High | Microsoft.eShopWeb.PublicApi .Middleware.ExceptionMiddleware .HandleExceptionAsync(HttpContext ,Exception) | |
|c0|0| 0% | |m21|2| 5 | |m21|2| 5 | |m37|2| 5min | 0High | Microsoft.eShopWeb.PublicApi .AuthEndpoints.ClaimValue..ctor (String,String) | |
|c0|3| 0% | |m7|3| 3 | |m7|3| 3 | |m12|3| 3min 46s | 3High | Microsoft.eShopWeb.PublicApi .AuthEndpoints.ClaimValue..ctor() | |
|c0|6| 0% | |m7|4| 3 | |m7|4| 3 | |m12|4| 3min 46s | 6High | Microsoft.eShopWeb.PublicApi .AuthEndpoints.UserInfo..ctor() | |
|c0|5| 0% | |m0|6| 2 | |m0|6| 2 | |m0|6| 2min 53s | 5High | BlazorAdmin.Shared.RedirectToLogin .OnInitialized() | |
|c0|4| 0% | |m0|5| 2 | |m0|5| 2 | |m0|5| 2min 53s | 4High | BlazorAdmin.Pages.Logout .OnInitializedAsync() |
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.
20 namespaces matched |
Formatting: bold✱ means added ● means code was changed |
20 namespaces | # lines of code not covered | Debt | Severity | Full Name |
---|---|---|---|---|
|m100|00| 422 | |m0|06| 4min 0s | 06Low | Microsoft.eShopWeb.Infrastructure .Data.Migrations | |
|m46|01| 195 | |m0|05| 4min 0s | 05Low | Microsoft.eShopWeb.Infrastructure .Identity.Migrations | |
|m41|02| 174 | |m0|07| 4min 0s | 07Low | BlazorAdmin.Pages.CatalogItemPage | |
|m40|03| 172 | |m0|09| 4min 0s | 09Low | BlazorAdmin.Services | |
|m12|04| 53 | |m0|08| 4min 0s | 08Low | BlazorAdmin.Helpers | |
|m5|05| 26 | |m0|01| 4min 0s | 01Low | Microsoft.eShopWeb.Web.ViewModels .Account | |
|m4|06| 20 | |m0|00| 4min 0s | 00Low | BlazorAdmin.Shared | |
|m4|08| 19 | |m0|02| 4min 0s | 02Low | BlazorShared.Authorization | |
|m4|07| 19 | |m0|04| 4min 0s | 04Low | Microsoft.eShopWeb.Web .HealthChecks | |
|m3|09| 16 | |m0|03| 4min 0s | 03Low | BlazorAdmin.JavaScript | |
|m3|10| 14 | |m0|16| 4min 0s | 16Low | Microsoft.eShopWeb.ApplicationCore .Entities.BuyerAggregate | |
|m2|12| 13 | |m0|15| 4min 0s | 15Low | Microsoft.eShopWeb.Web.Pages.Order | |
|m2|11| 13 | |m0|17| 4min 0s | 17Low | Microsoft.eShopWeb.Web.Pages.Admin | |
|m1|14| 6 | |m0|19| 4min 0s | 19Low | Microsoft.eShopWeb.ApplicationCore .Exceptions | |
|m1|13| 6 | |m0|18| 4min 0s | 18Low | Microsoft.eShopWeb.Web.ViewModels .File | |
|m0|17| 2 | |m0|11| 4min 0s | 11Low | BlazorShared.Attributes | |
|m0|16| 2 | |m0|10| 4min 0s | 10Low | BlazorAdmin.Pages | |
|m0|15| 2 | |m0|12| 4min 0s | 12Low | Microsoft.eShopWeb.Web.Pages .Account | |
|m0|19| 1 | |m0|14| 4min 0s | 14Low | Microsoft.eShopWeb.Infrastructure .Services | |
|m0|18| 1 | |m0|13| 4min 0s | 13Low | Microsoft.AspNetCore.Mvc |
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.
1 type matched |
Formatting: bold✱ means added ● means code was changed |
1 type | Percentage Coverage | # lines of code (LOC) | # lines of code not covered | methodsCulprit | Debt | Severity | Full Name |
---|---|---|---|---|---|---|---|
|c97|0| 97.78% | |m0|0| 45 | |m0|0| 1 | |m0|0|
1 method | |m0|0| 2min 0s | 0High | Microsoft.eShopWeb.ApplicationCore .Services.BasketService |
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.
1 namespace matched |
Formatting: bold✱ means added ● means code was changed |
1 namespace | Percentage Coverage | # lines of code (LOC) | # lines of code not covered | methodsCulprit | Debt | Severity | Full Name |
---|---|---|---|---|---|---|---|
|c98|0| 98.53% | |m0|0| 68 | |m0|0| 1 | |m0|0|
1 method | |m0|0| 2min 0s | 0High | Microsoft.eShopWeb.ApplicationCore .Services |
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.
4 methods matched |
Formatting: bold✱ means added ● means code was changed |
4 methods | Percentage Coverage | Debt | Severity | Full Name |
---|---|---|---|---|
|c93|0| 93.33% | |m0|1| 2min 0s | 1High | Microsoft.eShopWeb.ApplicationCore .Services.BasketService .SetQuantities(Int32,Dictionary <String,Int32>) | |
|c0|2| 0% | |m0|2| 2min 0s | 0High | Microsoft.eShopWeb.ApplicationCore .Exceptions .BasketNotFoundException..ctor (Int32) | |
|c81|1| 81.82% | |m100|0| 2min 53s | 3High | Microsoft.eShopWeb.Infrastructure .Identity.AppIdentityDbContextSeed .SeedAsync(AppIdentityDbContext ,UserManager<ApplicationUser> ,RoleManager<IdentityRole>) | |
|c0|3| 0% | |m0|3| 2min 0s | 2High | BlazorShared.BaseUrlConfiguration .get_ApiBase() |
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 methodmatched
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.
59 types matched |
Formatting: bold✱ means added ● means code was changed |
59 types | # lines of code (LOC) | Debt | Severity | Full Name |
---|---|---|---|---|
|m3|12| 2 | |m0|06| 3min 0s | 06Low | Microsoft.eShopWeb.CatalogSettings | |
|m6|08| 3 | |m0|05| 3min 0s | 05Low | Microsoft.eShopWeb.JsonExtensions | |
|m9|01| 4 | |m0|07| 3min 0s | 07Low | Microsoft.eShopWeb.ApplicationCore .Specifications .BasketWithItemsSpecification | |
|m9|04| 4 | |m0|09| 3min 0s | 09Low | Microsoft.eShopWeb.ApplicationCore .Specifications .CatalogFilterPaginatedSpecificati on | |
|m3|11| 2 | |m0|08| 3min 0s | 08Low | Microsoft.eShopWeb.ApplicationCore .Specifications .CatalogFilterSpecification | |
|m3|10| 2 | |m0|01| 3min 0s | 01Low | Microsoft.eShopWeb.ApplicationCore .Specifications .CatalogItemNameSpecification | |
|m3|13| 2 | |m0|00| 3min 0s | 00Low | Microsoft.eShopWeb.ApplicationCore .Specifications .CatalogItemsSpecification | |
|m3|16| 2 | |m0|02| 3min 0s | 02Low | Microsoft.eShopWeb.ApplicationCore .Specifications .CustomerOrdersSpecification | |
|m3|17| 2 | |m0|04| 3min 0s | 04Low | Microsoft.eShopWeb.ApplicationCore .Specifications .CustomerOrdersWithItemsSpecificat ion | |
|m3|14| 2 | |m0|03| 3min 0s | 03Low | Microsoft.eShopWeb.ApplicationCore .Specifications .OrderWithItemsByIdSpec | |
|m61|00| 20 | |m0|16| 3min 0s | 16Low | Microsoft.eShopWeb.ApplicationCore .Services.OrderService | |
|m6|06| 3 | |m0|15| 3min 0s | 15Low | Microsoft.eShopWeb.ApplicationCore .Services.UriComposer | |
|m9|02| 4 | |m0|17| 3min 0s | 17Low | Microsoft.eShopWeb.ApplicationCore .Entities.CatalogBrand | |
|m9|05| 4 | |m0|19| 3min 0s | 19Low | Microsoft.eShopWeb.ApplicationCore .Entities.CatalogType | |
|m3|15| 2 | |m0|18| 3min 0s | 18Low | Microsoft.eShopWeb.Infrastructure .Identity.AppIdentityDbContext | |
|m0|19| 1 | |m0|11| 3min 0s | 11Low | Microsoft.eShopWeb.Infrastructure .Data.EfRepository<T> | |
|m9|03| 4 | |m0|10| 3min 0s | 10Low | Microsoft.eShopWeb.Infrastructure .Data.Queries.BasketQueryService | |
|m6|07| 3 | |m0|12| 3min 0s | 12Low | Microsoft.eShopWeb.Infrastructure .Data.Config.BasketConfiguration | |
|m0|18| 1 | |m0|14| 3min 0s | 14Low | Microsoft.eShopWeb.Infrastructure .Data.Config .BasketItemConfiguration | |
|m6|09| 3 | |m0|13| 3min 0s | 13Low | Microsoft.eShopWeb.Infrastructure .Data.Config .CatalogBrandConfiguration |
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 methodmatched
Dead Code
|
Validated Rule: 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.
No typematched
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.
4 methods matched |
Formatting: bold✱ means added ● means code was changed |
4 methods | depth | MethodsCallingMe | Debt | Annual Interest | Full Name |
---|---|---|---|---|---|
|m0|1| 0 | 1no method | |m0|1| 10min | 19min | Microsoft.eShopWeb.ApplicationCore .Entities.OrderAggregate.Address. .ctor() | |
|m0|0| 0 | 0no method | |m0|0| 10min | 29min | Microsoft.eShopWeb.ApplicationCore .Entities.OrderAggregate .CatalogItemOrdered..ctor() | |
|m0|3| 0 | 3no method | |m0|3| 10min | 011min | Microsoft.eShopWeb.ApplicationCore .Entities.OrderAggregate.Order. .ctor() | |
|m0|2| 0 | 2no method | |m0|2| 10min | 39min | Microsoft.eShopWeb.ApplicationCore .Entities.OrderAggregate .OrderItem ..ctor() |
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 fieldmatched
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 membermatched
Code Diff Summary
Code Query: New assemblies |
1 assembly matched
1 assembly | # lines of code (LOC) | Full Name |
---|---|---|
|m0|0| 1 044 | Web |
Code Query: Assemblies removed |
No assemblymatched
Code Query: Assemblies where code was changed |
5 assemblies matched
5 assemblies | # lines of code (LOC) | oldNbLinesOfCode | delta | Full Name |
---|---|---|---|---|
|m23|3| 268 | |m23|3| 265 | |m50|2| 3 | ApplicationCore | |
|m100|0| 753 | |m100|0| 747 | |m100|0| 6 | Infrastructure | |
|m0|4| 117 | |m0|4| 117 | |m0|4| 0 | BlazorShared | |
|m59|1| 496 | |m60|1| 495 | |m16|3| 1 | BlazorAdmin | |
|m39|2| 367 | |m38|2| 362 | |m83|1| 5 | PublicApi |
Code Query: New namespaces |
2 namespaces matched
2 namespaces | # lines of code (LOC) | Full Name |
---|---|---|
|m0|0| 0 | Microsoft.CodeAnalysis | |
|m0|1| 0 | System.Runtime.CompilerServices |
Code Query: Namespaces removed |
No namespacematched
Code Query: Namespaces where code was changed |
25 namespaces matched
25 namespaces | # lines of code (LOC) | oldNbLinesOfCode | delta | Full Name |
---|---|---|---|---|
|m4|13| 20 | |m4|13| 18 | |m44|02| 2 | Microsoft.eShopWeb.ApplicationCore .Specifications | |
|m16|03| 68 | |m16|03| 69 | |m11|17| -1 | Microsoft.eShopWeb.ApplicationCore .Services | |
|m12|06| 53 | |m11|06| 47 | |m88|00| 6 | Microsoft.eShopWeb.ApplicationCore .Entities | |
|m15|04| 66 | |m16|04| 68 | |m0|19| -2 | Microsoft.eShopWeb.ApplicationCore .Entities.OrderAggregate | |
|m8|08| 34 | |m8|08| 34 | |m22|08| 0 | Microsoft.eShopWeb.ApplicationCore .Entities.BasketAggregate | |
|m0|18| 0 | |m0|18| 0 | |m22|09| 0 | System.Runtime.CompilerServices | |
|m0|16| 2 | |m0|15| 4 | |m0|18| -2 | Ardalis.GuardClauses | |
|m7|10| 31 | |m5|10| 25 | |m88|01| 6 | Microsoft.eShopWeb.Infrastructure .Identity | |
|m46|01| 195 | |m46|01| 195 | |m22|06| 0 | Microsoft.eShopWeb.Infrastructure .Identity.Migrations | |
|m100|00| 422 | |m100|00| 422 | |m22|07| 0 | Microsoft.eShopWeb.Infrastructure .Data.Migrations | |
|m7|09| 32 | |m7|09| 32 | |m22|16| 0 | Microsoft.eShopWeb.Infrastructure .Data.Config | |
|m0|19| 0 | |m0|17| 0 | |m22|14| 0 | System.Runtime.CompilerServices | |
N:anonymous namespace in assembly BlazorAdmin ● | |m5|11| 22 | |m5|11| 22 | |m22|15| 0 | {anonymous namespace} in assembly BlazorAdmin |
|m0|17| 0 | |m0|19| 0 | |m22|11| 0 | System.Runtime.CompilerServices | |
|m8|07| 37 | |m8|07| 37 | |m22|10| 0 | BlazorAdmin | |
|m4|12| 20 | |m4|12| 19 | |m33|03| 1 | BlazorAdmin.Shared | |
|m40|02| 172 | |m40|02| 172 | |m22|13| 0 | BlazorAdmin.Services | |
|m0|15| 2 | |m0|16| 2 | |m22|12| 0 | BlazorAdmin.Pages | |
N:anonymous namespace in assembly PublicApi ● | |m15|05| 65 | |m15|05| 64 | |m33|04| 1 | {anonymous namespace} in assembly PublicApi |
|m2|14| 11 | |m2|14| 11 | |m22|05| 0 | Microsoft.eShopWeb.PublicApi .Middleware |
Code Query: New types |
3 types matched
3 types | # lines of code (LOC) | Full Name |
---|---|---|
|m20|1| 2 | Microsoft.eShopWeb.ApplicationCore .Specifications .CustomerOrdersSpecification | |
|m100|0| 6 | Microsoft.eShopWeb.ApplicationCore .Entities .CatalogItem+CatalogItemDetails | |
|m0|2| 1 | Microsoft.eShopWeb.Infrastructure .Identity.UserNotFoundException |
Code Query: Types removed |
No typematched
Code Query: Types where code was changed |
30 types matched
30 types | # lines of code (LOC) | oldNbLinesOfCode | delta | Full Name |
---|---|---|---|---|
|m33|03| 45 | |m34|03| 46 | |m16|17| -1 | Microsoft.eShopWeb.ApplicationCore .Services.BasketService | |
|m14|08| 20 | |m14|08| 20 | |m33|08| 0 | Microsoft.eShopWeb.ApplicationCore .Services.OrderService | |
|m27|05| 37 | |m27|05| 37 | |m33|06| 0 | Microsoft.eShopWeb.ApplicationCore .Entities.CatalogItem | |
|m17|07| 24 | |m19|07| 26 | |m0|19| -2 | Microsoft.eShopWeb.ApplicationCore .Entities.OrderAggregate.Order | |
|m12|09| 18 | |m13|09| 18 | |m33|07| 0 | Microsoft.eShopWeb.ApplicationCore .Entities.BasketAggregate.Basket | |
|m0|19| 2 | |m2|15| 4 | |m0|18| -2 | Ardalis.GuardClauses.BasketGuards | |
|m7|13| 11 | |m5|14| 8 | |m83|00| 3 | Microsoft.eShopWeb.Infrastructure .Identity.AppIdentityDbContextSeed | |
|m11|10| 17 | |m10|11| 15 | |m66|01| 2 | Microsoft.eShopWeb.Infrastructure .Identity .IdentityTokenClaimService | |
|m90|01| 118 | |m90|01| 118 | |m33|04| 0 | Microsoft.eShopWeb.Infrastructure .Identity.Migrations .InitialIdentityModel | |
|m100|00| 130 | |m100|00| 130 | |m33|05| 0 | Microsoft.eShopWeb.Infrastructure .Data.Migrations.InitialModel | |
|m0|16| 3 | |m1|17| 3 | |m33|09| 0 | Microsoft.eShopWeb.Infrastructure .Data.Config.BasketConfiguration | |
|m7|12| 11 | |m7|12| 11 | |m33|14| 0 | Microsoft.eShopWeb.Infrastructure .Data.Config.OrderConfiguration | |
|m1|15| 4 | |m2|16| 4 | |m33|16| 0 | Program+<<<Main>$ >g__ClearLocalStorageCache|0_2>d | |
|m21|06| 29 | |m21|06| 29 | |m33|15| 0 | BlazorAdmin .CustomAuthStateProvider | |
|m0|18| 2 | |m0|19| 1 | |m50|02| 1 | BlazorAdmin.Shared.RedirectToLogin | |
|m32|04| 44 | |m33|04| 44 | |m33|13| 0 | BlazorAdmin.Services .CachedCatalogItemServiceDecorator | |
|m10|11| 16 | |m11|10| 16 | |m33|10| 0 | BlazorAdmin.Services .CachedCatalogLookupDataServiceDec orator<TLookupData,TReponse> | |
|m0|17| 2 | |m0|18| 2 | |m33|11| 0 | BlazorAdmin.Pages.Logout | |
|m49|02| 65 | |m48|02| 64 | |m50|03| 1 | Program | |
|m7|14| 11 | |m7|13| 11 | |m33|12| 0 | Microsoft.eShopWeb.PublicApi .Middleware.ExceptionMiddleware |
Code Query: Heuristic to find types moved from one namespace or assembly to another |
No typematched
Code Query: Types directly using one or several types changed |
15 types matched
15 types | typesChangedUsed | Full Name |
---|---|---|
|m0|05|
1 type | Microsoft.eShopWeb.ApplicationCore .Specifications .BasketWithItemsSpecification | |
|m0|06|
1 type | Microsoft.eShopWeb.ApplicationCore .Specifications .CatalogFilterPaginatedSpecificati on | |
|m0|07|
1 type | Microsoft.eShopWeb.ApplicationCore .Specifications .CatalogFilterSpecification | |
|m0|04|
1 type | Microsoft.eShopWeb.ApplicationCore .Specifications .CatalogItemNameSpecification | |
|m0|02|
1 type | Microsoft.eShopWeb.ApplicationCore .Specifications .CatalogItemsSpecification | |
|m0|03|
1 type | Microsoft.eShopWeb.ApplicationCore .Specifications .CustomerOrdersWithItemsSpecificat ion | |
|m0|08|
1 type | Microsoft.eShopWeb.ApplicationCore .Specifications .OrderWithItemsByIdSpec | |
|m0|12|
1 type | Microsoft.eShopWeb.ApplicationCore .Interfaces.IBasketService | |
|m100|00|
3 types | Microsoft.eShopWeb.Infrastructure .Data.CatalogContext | |
|m0|13|
1 type | Microsoft.eShopWeb.Infrastructure .Data.CatalogContextSeed | |
|m0|14|
1 type | Microsoft.eShopWeb.Infrastructure .Data.Queries.BasketQueryService | |
|m0|09|
1 type | Microsoft.eShopWeb.Infrastructure .Data.Config .CatalogItemConfiguration | |
|m50|01|
2 types | BlazorAdmin.ServicesConfiguration | |
|m0|10|
1 type | BlazorAdmin.App | |
|m0|11|
1 type | Microsoft.eShopWeb.PublicApi .MappingProfile |
Code Query: Types indirectly using one or several types changed |
17 types matched
17 types | depthOfUsingTypesChanged | typesChangedDirectlyUsed | Full Name |
---|---|---|---|
|m0|06| 1 | |m33|12|
1 type | Microsoft.eShopWeb.ApplicationCore .Specifications .BasketWithItemsSpecification | |
|m0|07| 1 | |m33|08|
1 type | Microsoft.eShopWeb.ApplicationCore .Specifications .CatalogFilterPaginatedSpecificati on | |
|m0|08| 1 | |m33|06|
1 type | Microsoft.eShopWeb.ApplicationCore .Specifications .CatalogFilterSpecification | |
|m0|05| 1 | |m33|07|
1 type | Microsoft.eShopWeb.ApplicationCore .Specifications .CatalogItemNameSpecification | |
|m0|02| 1 | |m33|05|
1 type | Microsoft.eShopWeb.ApplicationCore .Specifications .CatalogItemsSpecification | |
|m0|03| 1 | |m33|02|
1 type | Microsoft.eShopWeb.ApplicationCore .Specifications .CustomerOrdersWithItemsSpecificat ion | |
|m0|04| 1 | |m33|03|
1 type | Microsoft.eShopWeb.ApplicationCore .Specifications .OrderWithItemsByIdSpec | |
|m0|09| 1 | |m33|04|
1 type | Microsoft.eShopWeb.ApplicationCore .Interfaces.IBasketService | |
|m0|14| 1 | |m100|00|
3 types | Microsoft.eShopWeb.Infrastructure .Data.CatalogContext | |
|m0|15| 1 | |m33|13|
1 type | Microsoft.eShopWeb.Infrastructure .Data.CatalogContextSeed | |
|m0|16| 1 | |m33|14|
1 type | Microsoft.eShopWeb.Infrastructure .Data.Queries.BasketQueryService | |
|m0|13| 1 | |m33|09|
1 type | Microsoft.eShopWeb.Infrastructure .Data.Config .CatalogItemConfiguration | |
|m0|10| 1 | |m66|01|
2 types | BlazorAdmin.ServicesConfiguration | |
|m0|11| 1 | |m33|10|
1 type | BlazorAdmin.App | |
|m0|12| 1 | |m33|11|
1 type | Microsoft.eShopWeb.PublicApi .MappingProfile | |
|m100|00| 2 | 16no type | Microsoft.eShopWeb.Infrastructure .Dependencies | |
|m100|01| 2 | 15no type | Microsoft.eShopWeb.Infrastructure .Data.EfRepository<T> |
Code Query: New methods |
9 methods matched
9 methods | # lines of code (LOC) | Full Name |
---|---|---|
|m16|6| 6 | Microsoft.eShopWeb.ApplicationCore .Entities.CatalogItem .UpdateDetails (CatalogItem+CatalogItemDetails) | |
|m58|3| 11 | Microsoft.eShopWeb.Infrastructure .Identity.AppIdentityDbContextSeed .SeedAsync(AppIdentityDbContext ,UserManager<ApplicationUser> ,RoleManager<IdentityRole>) | |
|m0|8| 4 | Microsoft.eShopWeb.PublicApi .CatalogTypeEndpoints .CatalogTypeListEndpoint .HandleAsync(IRepository <CatalogType>) | |
|m16|4| 6 | Microsoft.eShopWeb.PublicApi .CatalogItemEndpoints .CatalogItemGetByIdEndpoint .HandleAsync (GetByIdCatalogItemRequest ,IRepository<CatalogItem>) | |
|m100|0| 16 | Microsoft.eShopWeb.PublicApi .CatalogItemEndpoints .CatalogItemListPagedEndpoint .HandleAsync (ListPagedCatalogItemRequest ,IRepository<CatalogItem>) | |
|m75|1| 13 | Microsoft.eShopWeb.PublicApi .CatalogItemEndpoints .CreateCatalogItemEndpoint .HandleAsync (CreateCatalogItemRequest ,IRepository<CatalogItem>) | |
|m16|5| 6 | Microsoft.eShopWeb.PublicApi .CatalogItemEndpoints .DeleteCatalogItemEndpoint .HandleAsync (DeleteCatalogItemRequest ,IRepository<CatalogItem>) | |
|m66|2| 12 | Microsoft.eShopWeb.PublicApi .CatalogItemEndpoints .UpdateCatalogItemEndpoint .HandleAsync (UpdateCatalogItemRequest ,IRepository<CatalogItem>) | |
|m0|7| 4 | Microsoft.eShopWeb.PublicApi .CatalogBrandEndpoints .CatalogBrandListEndpoint .HandleAsync(IRepository <CatalogBrand>) |
Code Query: Methods removed |
10 methods matched
10 methods | # lines of code (LOC) | Full Name |
---|---|---|
|m30|05| 6 | Microsoft.eShopWeb.ApplicationCore .Entities.CatalogItem .UpdateDetails(String,String ,Decimal) | |
|m0|09| 2 | Ardalis.GuardClauses.BasketGuards .NullBasket(IGuardClause,Int32 ,Basket) | |
|m46|03| 8 | Microsoft.eShopWeb.Infrastructure .Identity.AppIdentityDbContextSeed .SeedAsync(UserManager <ApplicationUser>,RoleManager <IdentityRole>) | |
|m15|08| 4 | Microsoft.eShopWeb.PublicApi .CatalogTypeEndpoints .CatalogTypeListEndpoint .HandleAsync() | |
|m30|04| 6 | Microsoft.eShopWeb.PublicApi .CatalogItemEndpoints .CatalogItemGetByIdEndpoint .HandleAsync (GetByIdCatalogItemRequest) | |
|m100|00| 15 | Microsoft.eShopWeb.PublicApi .CatalogItemEndpoints .CatalogItemListPagedEndpoint .HandleAsync (ListPagedCatalogItemRequest) | |
|m84|01| 13 | Microsoft.eShopWeb.PublicApi .CatalogItemEndpoints .CreateCatalogItemEndpoint .HandleAsync (CreateCatalogItemRequest) | |
|m30|06| 6 | Microsoft.eShopWeb.PublicApi .CatalogItemEndpoints .DeleteCatalogItemEndpoint .HandleAsync (DeleteCatalogItemRequest) | |
|m53|02| 9 | Microsoft.eShopWeb.PublicApi .CatalogItemEndpoints .UpdateCatalogItemEndpoint .HandleAsync (UpdateCatalogItemRequest) | |
|m15|07| 4 | Microsoft.eShopWeb.PublicApi .CatalogBrandEndpoints .CatalogBrandListEndpoint .HandleAsync() |
Code Query: Methods where code was changed |
36 methods matched
36 methods | # lines of code (LOC) | oldNbLinesOfCode | delta | Full Name |
---|---|---|---|---|
|m12|11| 8 | |m12|12| 8 | |m40|06| 0 | Microsoft.eShopWeb.ApplicationCore .Services.BasketService .AddItemToBasket(String,Int32 ,Decimal,Int32) | |
|m4|16| 3 | |m3|17| 2 | |m60|02| 1 | Microsoft.eShopWeb.ApplicationCore .Services.BasketService .DeleteBasketAsync(Int32) | |
|m23|05| 15 | |m23|05| 15 | |m40|05| 0 | Microsoft.eShopWeb.ApplicationCore .Services.BasketService .SetQuantities(Int32,Dictionary <String,Int32>) | |
|m24|02| 16 | |m28|02| 18 | |m0|19| -2 | Microsoft.eShopWeb.ApplicationCore .Services.BasketService .TransferBasketAsync(String,String ) | |
|m23|06| 15 | |m23|04| 15 | |m40|08| 0 | Microsoft.eShopWeb.ApplicationCore .Services.OrderService .CreateOrderAsync(Int32,Address) | |
|m10|13| 7 | |m14|11| 9 | |m0|18| -2 | Microsoft.eShopWeb.ApplicationCore .Entities.OrderAggregate.Order. .ctor(String,Address,List <OrderItem>) | |
|m10|12| 7 | |m10|13| 7 | |m40|07| 0 | Microsoft.eShopWeb.ApplicationCore .Entities.BasketAggregate.Basket .AddItem(Int32,Decimal,Int32) | |
|m23|04| 15 | |m20|06| 13 | |m80|00| 2 | Microsoft.eShopWeb.Infrastructure .Identity .IdentityTokenClaimService .GetTokenAsync(String) | |
|m52|00| 34 | |m53|00| 34 | |m40|03| 0 | Microsoft.eShopWeb.Infrastructure .Identity.Migrations .InitialIdentityModel.Up (MigrationBuilder) | |
|m49|01| 32 | |m50|01| 32 | |m40|04| 0 | Microsoft.eShopWeb.Infrastructure .Data.Migrations.InitialModel.Up (MigrationBuilder) | |
|m4|17| 3 | |m4|16| 3 | |m40|09| 0 | Microsoft.eShopWeb.Infrastructure .Data.Config.BasketConfiguration .Configure(EntityTypeBuilder <Basket>) | |
|m16|10| 11 | |m17|10| 11 | |m40|17| 0 | Microsoft.eShopWeb.Infrastructure .Data.Config.OrderConfiguration .Configure(EntityTypeBuilder<Order >) | |
|m6|15| 4 | |m6|15| 4 | |m40|15| 0 | Program+<<<Main>$ >g__ClearLocalStorageCache|0_2>d .MoveNext() | |
|m24|03| 16 | |m25|03| 16 | |m40|14| 0 | BlazorAdmin .CustomAuthStateProvider.FetchUser () | |
|m3|18| 2 | |m1|18| 1 | |m60|01| 1 | BlazorAdmin.Shared.RedirectToLogin .OnInitialized() | |
|m0|19| 0 | |m0|19| 0 | |m40|16| 0 | BlazorAdmin.Shared.RedirectToLogin ..ctor() | |
|m18|09| 12 | |m18|09| 12 | |m40|11| 0 | BlazorAdmin.Services .CachedCatalogItemServiceDecorator .ListPaged(Int32) | |
|m18|08| 12 | |m18|08| 12 | |m40|10| 0 | BlazorAdmin.Services .CachedCatalogItemServiceDecorator .List() | |
|m7|14| 5 | |m7|14| 5 | |m40|13| 0 | BlazorAdmin.Services .CachedCatalogItemServiceDecorator .RefreshLocalStorageList() | |
|m18|07| 12 | |m18|07| 12 | |m40|12| 0 | BlazorAdmin.Services .CachedCatalogLookupDataServiceDec orator<TLookupData,TReponse>.List ( ) |
Code Query: Methods directly calling one or several methods changed |
8 methods matched
8 methods | methodsChangedCalled | Full Name |
---|---|---|
|m0|2|
1 method | BlazorAdmin .CustomAuthStateProvider.GetUser (Boolean) | |
|m0|3|
1 method | BlazorAdmin.Services .CachedCatalogItemServiceDecorator .GetById(Int32) | |
|m0|0|
1 method | BlazorAdmin.Services .CachedCatalogItemServiceDecorator .Create(CreateCatalogItemRequest) | |
|m0|1|
1 method | BlazorAdmin.Services .CachedCatalogItemServiceDecorator .Edit(CatalogItem) | |
|m0|6|
1 method | BlazorAdmin.Services .CachedCatalogItemServiceDecorator .Delete(Int32) | |
|m0|7|
1 method | Program.<Main>(String[]) | |
|m0|4|
1 method | Microsoft.eShopWeb.PublicApi .Middleware.ExceptionMiddleware .InvokeAsync(HttpContext) | |
|m0|5|
1 method | Microsoft.eShopWeb.PublicApi .AuthEndpoints.UserInfo..cctor() |
Code Query: Methods indirectly calling one or several methods changed |
9 methods matched
9 methods | depthOfUsingMethodsChanged | methodsChangedDirectlyUsed | Full Name |
---|---|---|---|
|m0|3| 1 | |m100|5|
1 method | BlazorAdmin .CustomAuthStateProvider.GetUser (Boolean) | |
|m0|4| 1 | |m100|2|
1 method | BlazorAdmin.Services .CachedCatalogItemServiceDecorator .GetById(Int32) | |
|m0|1| 1 | |m100|3|
1 method | BlazorAdmin.Services .CachedCatalogItemServiceDecorator .Create(CreateCatalogItemRequest) | |
|m0|2| 1 | |m100|0|
1 method | BlazorAdmin.Services .CachedCatalogItemServiceDecorator .Edit(CatalogItem) | |
|m0|7| 1 | |m100|1|
1 method | BlazorAdmin.Services .CachedCatalogItemServiceDecorator .Delete(Int32) | |
|m0|8| 1 | |m100|6|
1 method | Program.<Main>(String[]) | |
|m0|5| 1 | |m100|7|
1 method | Microsoft.eShopWeb.PublicApi .Middleware.ExceptionMiddleware .InvokeAsync(HttpContext) | |
|m0|6| 1 | |m100|4|
1 method | Microsoft.eShopWeb.PublicApi .AuthEndpoints.UserInfo..cctor() | |
|m100|0| 2 | 8no method | BlazorAdmin .CustomAuthStateProvider .GetAuthenticationStateAsync() |
Code Query: New fields |
No fieldmatched
Code Query: Fields removed |
7 fields matched
7 fields | Full Name |
---|---|
Microsoft.eShopWeb.PublicApi .CatalogTypeEndpoints .CatalogTypeListEndpoint ._catalogTypeRepository | |
Microsoft.eShopWeb.PublicApi .CatalogItemEndpoints .CatalogItemGetByIdEndpoint ._itemRepository | |
Microsoft.eShopWeb.PublicApi .CatalogItemEndpoints .CatalogItemListPagedEndpoint ._itemRepository | |
Microsoft.eShopWeb.PublicApi .CatalogItemEndpoints .CreateCatalogItemEndpoint ._itemRepository | |
Microsoft.eShopWeb.PublicApi .CatalogItemEndpoints .DeleteCatalogItemEndpoint ._itemRepository | |
Microsoft.eShopWeb.PublicApi .CatalogItemEndpoints .UpdateCatalogItemEndpoint ._itemRepository | |
Microsoft.eShopWeb.PublicApi .CatalogBrandEndpoints .CatalogBrandListEndpoint ._catalogBrandRepository |
Code Query: Third party types that were not used and that are now used |
214 types matched
214 types | Methods | Fields | TypesUsingMe | Full Name |
---|---|---|---|---|
10no method | 07no field | |m3|11|
2 types | System.ValueType | |
11no method | 06no field | |m1|17|
1 type | System.IEquatable<T> | |
12no method | 09no field | |m9|00|
5 types
| System.InvalidOperationException | |
09no method | 08no field | |m5|05|
3 types | System.ObsoleteAttribute | |
|m15|00|
3 methods
| 05no field | |m3|09|
2 types | System.Text.StringBuilder | |
|m5|06|
1 method
| 02no field | |m1|18|
1 type | System.Security.Principal .IPrincipal | |
08no method | 01no field | |m5|03|
3 types | System.Runtime.CompilerServices .CompilerFeatureRequiredAttribute | |
17no method | 04no field | |m3|10|
2 types | System.Runtime.CompilerServices .IsReadOnlyAttribute | |
18no method | 03no field | |m5|01|
3 types | System.Runtime.CompilerServices .RequiredMemberAttribute | |
|m10|01|
2 methods
| 10no field | |m5|07|
3 types
| System.Collections.Generic .ICollection<T> | |
16no method | 17no field | |m5|04|
3 types | System.Collections.Generic .IReadOnlyDictionary<TKey,TValue> | |
13no method | 16no field | |m1|19|
1 type | System.Collections.Generic.ISet<T> | |
|m10|02|
2 methods
| 19no field | |m5|02|
3 types
| System.Collections.Generic .KeyValuePair<TKey,TValue> | |
14no method | 18no field | |m3|15|
2 types | Microsoft.Extensions.Diagnostics .HealthChecks.HealthCheckContext | |
|m5|07|
1 method
| 15no field | |m3|12|
2 types | Microsoft.Extensions.Diagnostics .HealthChecks .HealthCheckRegistration | |
|m10|03|
2 methods
| 12no field | |m3|13|
2 types | Microsoft.Extensions.Diagnostics .HealthChecks.HealthCheckResult | |
|m10|04|
2 methods
| 11no field | |m5|08|
3 types | Microsoft.Extensions.Diagnostics .HealthChecks.HealthReport | |
|m5|05|
1 method
| 14no field | |m3|14|
2 types | Microsoft.Extensions.Diagnostics .HealthChecks.HealthReportEntry | |
15no method | |m100|00|
1 field
| |m5|06|
3 types | Microsoft.Extensions.Diagnostics .HealthChecks.HealthStatus | |
19no method | 13no field | |m3|16|
2 types | Microsoft.Extensions.Diagnostics .HealthChecks.IHealthCheck |
Code Query: Third party types that were used and that are not used anymore |
3 types matched
3 types | Methods | Fields | TypesThatUsedMe | Full Name |
---|---|---|---|---|
1no method | |m100|0|
1 field
| |m100|0|
First 5 of 6 types
| Microsoft.EntityFrameworkCore .DeleteBehavior | |
2no method | 1no field | |m20|1|
2 types
| MinimalApi.Endpoint.IEndpoint <TResult> | |
|m100|0|
1 method
| 2no field | |m0|2|
1 type
| MediatR .ServiceCollectionExtensions |
Code Query: Third party methods that were not used and that are now used |
106 methods matched
106 methods | MethodsCallingMe | Full Name |
---|---|---|
|m0|12|
1 method | System.Enum.GetName(Type,Object) | |
|m16|03|
4 methods | System.Math.Round(Decimal,Int32) | |
|m0|13|
1 method | System.String.get_Length() | |
|m22|01|
5 methods
| System.String.op_Equality(String ,String) | |
|m5|06|
2 methods | System.String.op_Inequality(String ,String) | |
|m0|11|
1 method | System.String.StartsWith(String) | |
|m0|17|
1 method | System.String.Format(String,Object ,Object,Object) | |
|m0|18|
1 method | System.String.Format(String ,Object[]) | |
|m0|19|
1 method | System.String.Substring(Int32) | |
|m0|14|
1 method | System.String.Substring(Int32 ,Int32) | |
|m5|05|
2 methods | System.String.ToLower() | |
|m0|15|
1 method | System.String.ToLowerInvariant() | |
|m5|07|
2 methods | System.String.Contains(String) | |
|m94|00|
First 5 of 18 methods
| System.ApplicationException..ctor (String) | |
|m5|10|
2 methods | System.DateTime.get_Now() | |
|m5|09|
2 methods | System.DateTime.get_Today() | |
|m5|08|
2 methods | System.DateTime.AddYears(Int32) | |
|m16|04|
4 methods
| System.DateTimeOffset.op_Implicit (DateTime) | |
|m16|02|
4 methods
| System.Decimal.ToString(String) | |
|m0|16|
1 method | System.Func<TResult>.Invoke() |
Code Query: Third party methods that were used and that are not used anymore |
11 methods matched
11 methods | MethodsThatCalledMe | Full Name |
---|---|---|
|m0|06|
1 method
| System.Nullable<T>.get_Value() | |
|m60|02|
4 methods
| Ardalis.Specification .IReadRepositoryBase<T> .GetBySpecAsync<Spec>(Spec ,CancellationToken) | |
|m20|05|
2 methods
| Microsoft.EntityFrameworkCore .Migrations.MigrationBuilder .CreateIndex(String,String,String ,String,Boolean,String) | |
|m0|07|
1 method
| MinimalApi.Endpoint.Configurations .Extensions .ConfigurationManagerExtensions .AddConfigurationFile (ConfigurationManager) | |
|m0|10|
1 method
| Microsoft.AspNetCore.Builder .EndpointRoutingApplicationBuilder Extensions.UseEndpoints (IApplicationBuilder,Action <IEndpointRouteBuilder>) | |
|m100|00|
First 5 of 6 methods
| Microsoft.AspNetCore.Http.Results .Ok(Object) | |
|m0|08|
1 method
| Microsoft.AspNetCore.Http.Results .Created(String,Object) | |
|m40|04|
3 methods
| Blazored.LocalStorage .ILocalStorageService.GetItemAsync <T>(String,Nullable <CancellationToken>) | |
|m80|01|
5 methods
| Blazored.LocalStorage .ILocalStorageService .RemoveItemAsync(String,Nullable <CancellationToken>) | |
|m60|03|
4 methods
| Blazored.LocalStorage .ILocalStorageService.SetItemAsync <T>(String,T,Nullable <CancellationToken>) | |
|m0|09|
1 method
| Microsoft.AspNetCore.Components .NavigationManager.NavigateTo (String,Boolean,Boolean) |
Code Query: Third party fields that were not used and that are now used |
1 field matched
1 field | MethodsUsingMe | Full Name |
---|---|---|
|m0|0|
1 method | System.Decimal.Zero |
Code Query: Third party fields that were used and that are not used anymore |
No fieldmatched
Projects Dependencies
Assembly | Depends on | Is referenced by |
---|---|---|
ApplicationCore v1.0.0.0 | System.Runtime v7.0.0.0 ; System.Text.Json v7.0.0.0 ; System.Linq.Expressions v7.0.0.0 ; Ardalis.Specification v7.0.0.0 ; System.Linq v7.0.0.0 ; Ardalis.Result v7.0.0.0 ; System.Collections v7.0.0.0 ; Ardalis.GuardClauses v4.0.1.0 ; | Web v1.0.0.0 ; Infrastructure v1.0.0.0 ; PublicApi v1.0.0.0 ; |
Infrastructure v1.0.0.0 | System.Runtime v7.0.0.0 ; System.Collections v7.0.0.0 ; Microsoft.Extensions.Configuration .Abstractions v7.0.0.0 ; Microsoft.Extensions .DependencyInjection.Abstractions v7.0.0.0 ; Microsoft.EntityFrameworkCore v7.0.11.0 ; Microsoft.EntityFrameworkCore .InMemory v7.0.5.0 ; Microsoft.EntityFrameworkCore .SqlServer v7.0.5.0 ; ApplicationCore v1.0.0.0 ; Microsoft.Extensions.Logging .Abstractions v7.0.0.0 ; Microsoft.AspNetCore.Identity .EntityFrameworkCore v7.0.11.0 ; Microsoft.Extensions.Identity .Stores v7.0.0.0 ; Microsoft.Extensions.Identity.Core v7.0.0.0 ; Microsoft.EntityFrameworkCore .Relational v7.0.11.0 ; System.IdentityModel.Tokens.Jwt v6.32.3.0 ; System.Security.Claims v7.0.0.0 ; Microsoft.IdentityModel.Tokens v6.32.3.0 ; System.Linq.Expressions v7.0.0.0 ; Microsoft.EntityFrameworkCore .Abstractions v7.0.11.0 ; Ardalis.Specification .EntityFrameworkCore v7.0.0.0 ; Ardalis.Specification v7.0.0.0 ; System.Linq.Queryable v7.0.0.0 ; | Web v1.0.0.0 ; PublicApi v1.0.0.0 ; |
BlazorShared v1.0.0.0 | System.Runtime v7.0.0.0 ; System.Collections v7.0.0.0 ; System.Text.Json v7.0.0.0 ; System.ComponentModel.Annotations v7.0.0.0 ; BlazorInputFile v1.0.0.0 ; | Web v1.0.0.0 ; PublicApi v1.0.0.0 ; BlazorAdmin v1.0.0.0 ; |
BlazorAdmin v1.0.0.0 | System.Runtime v7.0.0.0 ; Microsoft.Extensions .DependencyInjection.Abstractions v7.0.0.0 ; Microsoft.Extensions .DependencyInjection v7.0.0.0 ; Blazored.LocalStorage v1.0.0.0 ; System.ComponentModel v7.0.0.0 ; BlazorShared v1.0.0.0 ; Microsoft.AspNetCore.Components .WebAssembly v7.0.8.0 ; Microsoft.AspNetCore.Components .Web v7.0.0.0 ; Microsoft.Extensions.Configuration .Abstractions v7.0.0.0 ; Microsoft.Extensions.Options .ConfigurationExtensions v7.0.0.0 ; System.Net.Http v7.0.0.0 ; Microsoft.AspNetCore.Authorization v7.0.0.0 ; Microsoft.AspNetCore.Components .Authorization v7.0.0.0 ; Microsoft.Extensions.Logging v7.0.0.0 ; Microsoft.Extensions.Logging .Configuration v7.0.0.0 ; Microsoft.AspNetCore.Components v7.0.0.0 ; System.Linq.Expressions v7.0.0.0 ; Microsoft.Extensions.Logging .Abstractions v7.0.0.0 ; System.Security.Claims v7.0.0.0 ; System.Net.Http.Json v7.0.0.0 ; Microsoft.JSInterop v7.0.0.0 ; System.Web.HttpUtility v7.0.0.0 ; System.Collections v7.0.0.0 ; System.Linq v7.0.0.0 ; Microsoft.Extensions.Options v7.0.0.0 ; System.Text.Json v7.0.0.0 ; System.Threading v7.0.0.0 ; System.ComponentModel .TypeConverter v7.0.0.0 ; System.ComponentModel.Primitives v7.0.0.0 ; Microsoft.AspNetCore.Components .Forms v7.0.0.0 ; | Web v1.0.0.0 ; |
Web v1.0.0.0 | System.Runtime v7.0.0.0 ; System.Collections v7.0.0.0 ; Microsoft.Extensions.Diagnostics .HealthChecks.Abstractions v6.0.0.0 ; Microsoft.AspNetCore v6.0.0.0 ; Microsoft.Extensions.Logging v7.0.0.0 ; Microsoft.Extensions.Logging .Console v6.0.0.0 ; Microsoft.AspNetCore.Hosting .Abstractions v6.0.0.0 ; Microsoft.Extensions.Hosting .Abstractions v6.0.0.0 ; Microsoft.Extensions.Configuration v7.0.0.0 ; Microsoft.Extensions .DependencyInjection.Abstractions v7.0.0.0 ; Microsoft.Extensions.Configuration .Abstractions v7.0.0.0 ; Infrastructure v1.0.0.0 ; Azure.Identity v1.9.0.0 ; Azure.Core v1.28.0.0 ; Azure.Extensions.AspNetCore .Configuration.Secrets v1.2.1.0 ; Microsoft.EntityFrameworkCore v7.0.11.0 ; Microsoft.AspNetCore .Authentication v6.0.0.0 ; Microsoft.AspNetCore .Authentication.Cookies v6.0.0.0 ; Microsoft.Extensions.Identity .Stores v7.0.0.0 ; Microsoft.Extensions.Identity.Core v7.0.0.0 ; Microsoft.AspNetCore.Identity v6.0.0.0 ; Microsoft.AspNetCore.Identity.UI v7.0.5.0 ; Microsoft.AspNetCore.Identity .EntityFrameworkCore v7.0.11.0 ; ApplicationCore v1.0.0.0 ; Microsoft.Extensions.Configuration .EnvironmentVariables v6.0.0.0 ; Microsoft.Extensions.Caching .Memory v6.0.0.0 ; Microsoft.AspNetCore.Routing v6.0.0.0 ; Microsoft.AspNetCore.Mvc.Core v6.0.0.0 ; Microsoft.AspNetCore.Mvc v6.0.0.0 ; Microsoft.AspNetCore.Mvc .RazorPages v6.0.0.0 ; Microsoft.AspNetCore.Http v6.0.0.0 ; Microsoft.Extensions.Diagnostics .HealthChecks v6.0.0.0 ; Ardalis.ListStartupServices v1.1.4.0 ; Microsoft.Extensions.Options v7.0.0.0 ; BlazorShared v1.0.0.0 ; Microsoft.Extensions.Options .ConfigurationExtensions v7.0.0.0 ; Microsoft.Extensions.Configuration .Binder v7.0.0.0 ; System.ComponentModel v7.0.0.0 ; System.Net.Http v7.0.0.0 ; Blazored.LocalStorage v1.0.0.0 ; Microsoft.AspNetCore.Components .Server v6.0.0.0 ; BlazorAdmin v1.0.0.0 ; Microsoft.AspNetCore.Diagnostics .EntityFrameworkCore v7.0.8.0 ; Microsoft.Extensions.Logging .Abstractions v7.0.0.0 ; Microsoft.AspNetCore.Http .Abstractions v6.0.0.0 ; Microsoft.AspNetCore.Diagnostics .HealthChecks v6.0.0.0 ; Microsoft.AspNetCore.Diagnostics v6.0.0.0 ; Microsoft.AspNetCore.Components .WebAssembly.Server v7.0.5.0 ; Microsoft.AspNetCore.HttpsPolicy v6.0.0.0 ; Microsoft.AspNetCore.StaticFiles v6.0.0.0 ; Microsoft.AspNetCore.CookiePolicy v6.0.0.0 ; Microsoft.AspNetCore.Authorization .Policy v6.0.0.0 ; Microsoft.EntityFrameworkCore .SqlServer v7.0.5.0 ; Microsoft.AspNetCore.Http.Features v6.0.0.0 ; Microsoft.AspNetCore.Routing .Abstractions v6.0.0.0 ; System.Linq v7.0.0.0 ; Microsoft.AspNetCore.Mvc .Abstractions v6.0.0.0 ; System.Text.RegularExpressions v7.0.0.0 ; System.Text.Encodings.Web v7.0.0.0 ; Microsoft.AspNetCore.Mvc .ViewFeatures v6.0.0.0 ; Ardalis.Specification v7.0.0.0 ; Microsoft.Extensions.Caching .Abstractions v6.0.0.0 ; Ardalis.GuardClauses v4.0.1.0 ; MediatR v12.0.0.0 ; System.Security.Claims v7.0.0.0 ; Microsoft.AspNetCore .Authentication.Abstractions v6.0.0.0 ; System.ComponentModel.Annotations v7.0.0.0 ; System.Diagnostics .DiagnosticSource v7.0.0.0 ; Microsoft.AspNetCore.Mvc.Razor v6.0.0.0 ; Microsoft.AspNetCore.Razor.Runtime v6.0.0.0 ; System.Runtime.Loader v7.0.0.0 ; Microsoft.AspNetCore.Razor v6.0.0.0 ; Microsoft.AspNetCore.Html .Abstractions v6.0.0.0 ; Microsoft.AspNetCore.Mvc .TagHelpers v6.0.0.0 ; System.Linq.Expressions v7.0.0.0 ; Microsoft.AspNetCore.Authorization v7.0.0.0 ; Ardalis.Result v7.0.0.0 ; Microsoft.Extensions.Primitives v7.0.0.0 ; Microsoft.Extensions.Features v6.0.0.0 ; MediatR.Contracts v2.0.1.0 ; | - |
PublicApi v1.0.0.0 | System.Runtime v7.0.0.0 ; Microsoft.AspNetCore v6.0.0.0 ; Microsoft.Extensions .DependencyInjection.Abstractions v7.0.0.0 ; MinimalApi.Endpoint v1.3.0.0 ; Microsoft.Extensions.Configuration v7.0.0.0 ; Microsoft.Extensions.Logging v7.0.0.0 ; Microsoft.Extensions.Logging .Console v6.0.0.0 ; Microsoft.Extensions.Configuration .Abstractions v7.0.0.0 ; Infrastructure v1.0.0.0 ; Microsoft.Extensions.Identity .Stores v7.0.0.0 ; Microsoft.Extensions.Identity.Core v7.0.0.0 ; Microsoft.AspNetCore.Identity v6.0.0.0 ; Microsoft.AspNetCore.Identity .EntityFrameworkCore v7.0.11.0 ; ApplicationCore v1.0.0.0 ; Microsoft.Extensions.Options .ConfigurationExtensions v7.0.0.0 ; Microsoft.Extensions.Configuration .Binder v7.0.0.0 ; BlazorShared v1.0.0.0 ; Microsoft.Extensions.Caching .Memory v6.0.0.0 ; Microsoft.AspNetCore .Authentication.Abstractions v6.0.0.0 ; Microsoft.AspNetCore .Authentication v6.0.0.0 ; Microsoft.AspNetCore .Authentication.JwtBearer v7.0.8.0 ; Microsoft.AspNetCore.Cors v6.0.0.0 ; Microsoft.AspNetCore.Mvc.Core v6.0.0.0 ; Microsoft.AspNetCore.Mvc v6.0.0.0 ; AutoMapper.Extensions.Microsoft .DependencyInjection v12.0.0.0 ; Microsoft.Extensions.Configuration .EnvironmentVariables v6.0.0.0 ; Microsoft.AspNetCore.Mvc .ApiExplorer v6.0.0.0 ; Swashbuckle.AspNetCore.SwaggerGen v6.5.0.0 ; Microsoft.Extensions.Logging .Abstractions v7.0.0.0 ; System.ComponentModel v7.0.0.0 ; Microsoft.AspNetCore.Hosting .Abstractions v6.0.0.0 ; Microsoft.Extensions.Hosting .Abstractions v6.0.0.0 ; Microsoft.AspNetCore.Http .Abstractions v6.0.0.0 ; Microsoft.AspNetCore.Diagnostics v6.0.0.0 ; Microsoft.AspNetCore.HttpsPolicy v6.0.0.0 ; Microsoft.AspNetCore.Routing v6.0.0.0 ; Microsoft.AspNetCore.Authorization .Policy v6.0.0.0 ; Swashbuckle.AspNetCore.Swagger v6.5.0.0 ; Swashbuckle.AspNetCore.SwaggerUI v6.5.0.0 ; Microsoft.OpenApi v1.2.3.0 ; Swashbuckle.AspNetCore.Annotations v6.5.0.0 ; System.Collections v7.0.0.0 ; Microsoft.IdentityModel.Tokens v6.32.3.0 ; System.Linq.Expressions v7.0.0.0 ; AutoMapper v12.0.0.0 ; Ardalis.Specification v7.0.0.0 ; System.Linq v7.0.0.0 ; Microsoft.AspNetCore.Http.Results v6.0.0.0 ; Microsoft.AspNetCore.Authorization v7.0.0.0 ; System.ComponentModel.Annotations v7.0.0.0 ; Ardalis.ApiEndpoints v4.0.1.0 ; | - |
Projects Build Order
- ApplicationCore
- Infrastructure
- BlazorShared
- BlazorAdmin
- Web
- PublicApi
Projects Build Order
- ApplicationCore
- Infrastructure
- BlazorShared
- BlazorAdmin
- Web
- PublicApi
Abstractness versus Instability Diagram
The Abstractness versus Instability Diagram helps to detect which projects are potentially painful to maintain (i.e concrete and stable) and which projects are potentially useless (i.e abstract and instable).
- Abstractness:
If a project contains many abstract types (i.e interfaces and abstract classes) and few concrete types, it is considered as abstract.
- Instability: A project is considered stable if its types are used by a lot of types from other projects. In this context stable means painful to modify.
Online documentation: