This diagram represents the Graph of Dependencies between the .NET assemblies of your application.
This static diagram can be useful but it is just a coarse view of your application architecture.
It is recommended to use the NDepend interactive Dependency Graph and interactive Dependency Matrix found in the NDepend UI for an in-depth exploration of the actual architecture of your code.
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.
52
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.
2
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.
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.
83
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.
0
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.
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.
52
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.
2
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 "Only list source files with issues" is enabled. More source files can be listed by changing this setting from NDepend Project Properties > Report.
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.
83
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.
0
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 "Only list source files with issues" is enabled. More source files can be listed by changing this setting from NDepend Project Properties > Report.
Sort the column #Un-resolved ascending to list these files first.
-
18
The number of projects with at least one unresolved issue but no new issue added since the baseline.
+
23
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.
-
1
The number of projects with at least one new issue introduced since the baseline.
+
0
The number of projects with at least one new issue introduced since the baseline.
Sort the column #New Issues to list these files first.
Clicking a project's name selects its associated source files under the Issues tab.
This occurs because the search pattern for the source files grid is set to the project's name.
-
A Quality Gate passes if its value is lower than its warning threshold, and lower than its failure threshold.
0 warn
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.
3 fail
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.
@@ -326,8 +340,8 @@
Quality Gates that measure diff cannot
be run on the baseline. Hence they
have blank trend and baseline value.
-
A particular warning can be disabled through the NDepend interactive UI, panel Error List, tick the checkbox Disabled corresponding to the warning to disable.
Message
-
Begin full analysis with NDepend v2024.1.0 on 02 Jun 2024 23:00:05
+
Begin full analysis with NDepend v2024.1.1 on 28 Sep 2024 22:22:09
Visual Studio solution file resolved to absolute file path: from {.\Stride.CommunityToolkit.sln} to {D:\a\static-analysis\static-analysis\Stride.CommunityToolkit.sln}
-
Compare with particular analysis result GitHub Build# 6 obtained on 02 Jun 2024 20:55:52
-
.NET Assemblies resolved from the Visual Studio solution file {D:\a\static-analysis\static-analysis\Stride.CommunityToolkit.sln}
+
.NET Assemblies resolved from the Visual Studio solution file {D:\a\static-analysis\static-analysis\Stride.CommunityToolkit.sln} [ 0 , 19 ]
D:\a\static-analysis\static-analysis\src\Stride.CommunityToolkit\bin\Debug\net8.0\Stride.CommunityToolkit.dll
D:\a\static-analysis\static-analysis\src\Stride.CommunityToolkit.Examples\bin\Debug\net8.0\Stride.CommunityToolkit.Examples.dll
D:\a\static-analysis\static-analysis\examples\code-only\Example01_Basic3DScene\bin\Debug\net8.0\Example01_Basic3DScene.dll
@@ -1098,12 +1111,17 @@
.NET Assemblies resolved from the Visual Studio solution file {D:\a\static-analysis\static-analysis\Stride.CommunityToolkit.sln} [ 20 , 22 ]
+ D:\a\static-analysis\static-analysis\examples\snippets\Easing_Example01\bin\Debug\net8.0\Easing_Example01.dll
+ D:\a\static-analysis\static-analysis\examples\snippets\Physics_Example001\bin\Debug\net8.0\Physics_Example001.dll
+ D:\a\static-analysis\static-analysis\examples\code-only\Example09_Renderer\bin\Debug\net8.0\Example09_Renderer.dll
.NET Assemblies filtered out from the Visual Studio solution file {D:\a\static-analysis\static-analysis\Stride.CommunityToolkit.sln}
Stride.CommunityToolkit.Docs
Stride.CommunityToolkit.Benchmarks
Concurrent mode
-
.NET Assemblies loaded from {C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.6}
+
106 source files parsed ; 5 source files not found ; all source files in-sync with PDB
+
132 source files parsed ; 5 source files not found ; all source files in-sync with PDB
0 code rule has been extracted from code.
No dependency cycle detected in assemblies referencement graph.
Do merge code generated by compiler into application code.
-
33 issues emitted by 9 rules have been imported.
+
354 issues emitted by 19 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 {D:\a\_temp\NDependOut\NDependAnalysisResult_static_analysis_2024Jun02_23h00m05_Id_GitHub Build# 7 Id 9341787238.ndar}
+
Persisting code model snapshot in {D:\a\_temp\NDependOut\NDependAnalysisResult_static_analysis_2024Sep28_22h22m09_Id_GitHub Build# 8 Id 11087419454.ndar}
The source directory {D:\a\static-analysis\static-analysis\examples\code-only\Example07_CubeClicker\obj\Debug\net8.0\NexYamlSourceGenerator\NexYamlSourceGenerator.NexIncremental.NexIncrementalGenerator} referenced by the PDB file of the assembly {Example07_CubeClicker} can't be found.
Log trend metrics values.
Rule {From now, all types added should be 100% covered by tests} relies on code coverage data that is not available in the baseline code base snapshot. The rule hasen't been executed on both baseline and newer code base snapshots.
@@ -1157,15 +1175,18 @@
Debt
Quality Gate {Percentage Coverage on Refactored Code} relies on code coverage data that is not available in the newer code base snapshot.
Execute queries and rules
Output report source files
-
The report lists 54 sources files (0 new and 6 modified since the baseline) on a total of 54 source files for the application analyzed.
+
The baseline versions of source files modified are not available in the report.
+Reason: Cannot find the file {SourceFiles.zip} in the analysis result directory {D:\a\_temp\NDependOut}.
+Make sure that the NDepend Project Properties > Analysis > Zip Source Files setting is enabled.
+
The report lists 83 sources files (0 new and 0 modified since the baseline) on a total of 83 source files for the application analyzed.
See 'Project Properties > Report' to adjust the set of source files listed in the report.
Output report projects
3 quality gates fail:
- 'Critical Rules Violated' value 5 rules greater than fail threshold 0 rules
- - 'Treat Compiler Warnings as Error' value 30 issues greater than fail threshold 10 issues
- - 'Debt Rating per Namespace' value 26 namespaces greater than fail threshold 0 namespaces
+ - 'Treat Compiler Warnings as Error' value 305 issues greater than fail threshold 10 issues
+ - 'Debt Rating per Namespace' value 30 namespaces greater than fail threshold 0 namespaces
Building the report (standard).
-
NDepend analysis done. Duration: 00:15.060
+
NDepend analysis done. Duration: 00:10.483
Application Statistics
Stat
@@ -1187,20 +1208,20 @@
Debt
6 methods
0.33
0.47
1 arguments on Example07_CubeClicker.Core.IClickable.set_Prefix(String)
Public properties on classes
-
206 Classes
-
0.43
1.16
7 public properties on Stride.CommunityToolkit.Scripts.Basic3DCameraController
+
245 Classes
+
0.37
1.08
7 public properties on Stride.CommunityToolkit.Scripts.Basic3DCameraController
Public methods on classes
-
206 classes
-
2.93
4.57
32 public methods on Stride.CommunityToolkit.Rendering.Utilities.TextureCanvas
+
245 classes
+
3.49
6.51
64 public methods on Stride.CommunityToolkit.Mathematics.Easing
Arguments on public methods on classes
-
603 methods
-
1.3
1.68
8 arguments on Stride.CommunityToolkit.Rendering.DebugShapes.ImmediateDebugRenderSystem.DrawArrow(Vector3,Vector3,Single,Single,Color,Single,Boolean,Boolean)
+
854 methods
+
1.5
1.64
8 arguments on Stride.CommunityToolkit.Rendering.DebugShapes.ImmediateDebugRenderSystem.DrawArrow(Vector3,Vector3,Single,Single,Color,Single,Boolean,Boolean)
IL instructions in non-abstract methods
-
960 methods
-
41.84
92.46
1502 IL instructions in Example08_DebugShapes.Scripts.ShapeUpdater.Update()
+
1,252 methods
+
40.27
84.37
1502 IL instructions in Example08_DebugShapes.Scripts.ShapeUpdater.Update()
Cyclomatic complexity on non abstract Methods
-
960 Methods
-
2.89
5.2
+
1,252 Methods
+
2.95
5.3
CC = 68 for Example08_DebugShapes.Scripts.ShapeUpdater.Update()
Assemblies Metrics
If you wish to define thresholds on assemblies' Code Metrics, consider writing some Rules.
Clicking column header arrows sorts values.
@@ -1210,14 +1231,14 @@
If you wish to define thresholds on types' Code Metrics, consider writing some Rule.
Clicking column header arrows sorts values.
Clicking column header title text redirect to the online Code Metric definition.
If you wish to define thresholds on namespaces' Code Metrics, consider writing some Code Rules.
Clicking column header arrows sorts values.
Clicking column header title text redirect to the online Code Metric definition.
• Quality Gate Description:
Code coverage is a measure used to describe the degree to which the source code of a program is tested by a particular test suite. A program with high code coverage, measured as a percentage, has had more of its source code executed during testing which suggests it has a lower chance of containing undetected software bugs compared to a program with low code coverage.
@@ -1266,37 +1287,58 @@
Debt
The concept of critical rule is useful to pinpoint certain rules that should not be violated.
A rule can be made critical just by checking the Critical button in the rule edition control and then saving the rule.
This quality gate fails if any critical rule gets any violations.
-When no baseline is available, rules that rely on diff are not counted. If you observe that this quality gate count slightly decreases with no apparent reason, the reason is certainly that rules that rely on diff are not counted because the baseline is not defined.
Quality Gate Fail: Treat Compiler Warnings as Error
• Quality Gate Description:
+When no baseline is available, rules that rely on diff are not counted. If you observe that this quality gate count slightly decreases with no apparent reason, the reason is certainly that rules that rely on diff are not counted because the baseline is not defined.
Quality Gate Fail: Treat Compiler Warnings as Error
• Quality Gate Description:
Many compiler warnings, if ignored, could lead to runtime errors, unpredictable behavior, or security vulnerabilities. Addressing these warnings early can prevent such issues from becoming real problems in production.
Also, this approach encourages developers to follow best coding practices and to use language features correctly. It helps in maintaining a high standard of coding within a team, especially in projects with multiple contributors.
This Quality Gate requires Roslyn Analyzers issues to be imported: https://www.ndepend.com/docs/roslyn-analyzer-issue-import
C# and VB.NET compiler warnings are Roslyn Analyzers issues whose rule id starts with "CS" or "VB".
This Quality Gate warns if there are any such warning. It fails if there are 10 or more such warnings.
-See list of C# compiler warnings here: https://learn.microsoft.com/en-us/dotnet/csharp/misc/cs0183
06Non-nullable field 'transparentSolidPrimitiveRenderer' must contain a non-null value when exiting constructor. Consider declaring the field as nullable.
Rule violated: Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
07Non-nullable field 'transparentWireframePrimitiveRenderer' must contain a non-null value when exiting constructor. Consider declaring the field as nullable.
Rule violated: Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
00 'Its best to use a List<T> instead of FastList<T> and iterate through the list as a Span for peak performance.'
Rule violated: Type or member is obsolete
Quality Gate Pass: Percentage Debt
• Quality Gate Description:
% Debt total is defined as a percentage on:
• the estimated total effort to develop the code base
• and the the estimated total time to fix all issues (the Debt)
Estimated total effort to develop the code base is inferred from # lines of code of the code base and from the Estimated number of man-day to develop 1000 logical lines of code setting found in NDepend Project Properties > Issue and Debt.
Debt documentation: https://www.ndepend.com/docs/technical-debt#Debt
This quality gates fails if the estimated debt is more than 30% of the estimated effort to develop the code base, and warns if the estimated debt is more than 20% of the estimated effort to develop the code base
• Quality Gate Description:
This Quality Gate fails if the estimated effort to fix new or worsened issues (what is called the New Debt since Baseline) is higher than 2 man-days.
This Quality Gate warns if this estimated effort is positive.
Debt documentation: https://www.ndepend.com/docs/technical-debt#Debt
• Quality Gate Description:
Forbid namespaces with a poor Debt Rating equals to E or D.
The Debt Rating for a code element is estimated by the value of the Debt Ratio and from the various rating thresholds defined in this project Debt Settings.
The Debt Ratio of a code element is a percentage of Debt Amount (in floating man-days) compared to the estimated effort to develop the code element (also in floating man-days).
The estimated effort to develop the code element is inferred from the code elements number of lines of code, and from the project Debt Settings parameters estimated number of man-days to develop 1000logical lines of code.
The logical lines of code corresponds to the number of debug breakpoints in a method and doesn't depend on code formatting nor comments.
-The Quality Gate can be modified to match assemblies, types or methods with a poor Debt Rating, instead of matching namespaces.
26 namespaces matched
26 namespaces
debtRating
debtRatio
devTimeInManDay
debtInManDay
issues
Full Name
{anonymous namespace} in assembly Stride.CommunityToolkit
12E
|m17|02| 57.87
|m0|08| 25min
|m0|07| 15min
|m0|04|
First 3 of 4 issues
{anonymous namespace} in assembly Stride.CommunityToolkit} violates rule 'Declare types in namespaces'
UpdateEngineAutoGenerated} violates rule 'A stateless class or structure might be turned into a static type'
UpdateEngineAutoGenerated} violates rule 'Non-static classes should be instantiated or turned to static'
{anonymous namespace} in assembly Stride.CommunityToolkit
Stride.Core.DataSerializers .Example01_Basic3DScene_FSharpSeri alizerFactory} violates rule 'Avoid types with name too long'
Stride.Core.DataSerializers .Example01_Basic3DScene_FSharpSeri alizerFactory.Initialize()} violates rule 'Potentially Dead Methods'
Stride.Core.DataSerializers
Stride.Core.DataSerializers
07E
|m13|12| 50.15
|m0|12| 25min
|m0|11| 13min
|m0|11|
2 issues
Stride.Core.DataSerializers .Example01_Basic3DScene_VBasicSeri alizerFactory} violates rule 'Avoid types with name too long'
Stride.Core.DataSerializers .Example01_Basic3DScene_VBasicSeri alizerFactory.Initialize()} violates rule 'Potentially Dead Methods'
Stride.Core.DataSerializers
Stride.Core.DataSerializers
14D
|m8|13| 38.58
|m0|14| 25min
|m0|18| 10min
|m0|18|
1 issue
Stride.Core.DataSerializers .Example02_GiveMeACubeSerializerFa ctory.Initialize()} violates rule 'Potentially Dead Methods'
Stride.Core.DataSerializers
Stride.Core.DataSerializers
01E
|m13|07| 50.15
|m0|15| 25min
|m0|13| 13min
|m0|13|
2 issues
Stride.Core.DataSerializers .Example03_StrideUI_CapsuleAndWind owSerializerFactory} violates rule 'Avoid types with name too long'
Stride.Core.DataSerializers .Example03_StrideUI_CapsuleAndWind owSerializerFactory.Initialize()} violates rule 'Potentially Dead Methods'
Stride.Core.DataSerializers
Stride.Core.DataSerializers
13D
|m2|16| 26.04
|m0|03| 1h 9min
|m0|05| 18min
|m0|05|
First 3 of 4 issues
Stride.Core.DataSerializers .Example04_MyraUI_MyraSceneRendere rSerializer} violates rule 'Non-static classes should be instantiated or turned to static'
Stride.Core.DataSerializers .Example04_MyraUI_MyraSceneRendere rSerializer} violates rule 'Types that could be declared as private, nested in a parent type'
Stride.Core.DataSerializers .Example04_MyraUI_MyraSceneRendere rSerializer} violates rule 'Avoid types with name too long'
Stride.Core.DataSerializers
Stride.Core.DataSerializers
08E
|m13|06| 50.15
|m0|16| 25min
|m0|14| 13min
|m0|14|
2 issues
Stride.Core.DataSerializers .Example05_ProceduralGeometrySeria lizerFactory} violates rule 'Avoid types with name too long'
Stride.Core.DataSerializers .Example05_ProceduralGeometrySeria lizerFactory.Initialize()} violates rule 'Potentially Dead Methods'
Stride.Core.DataSerializers
Stride.Core.DataSerializers
09E
|m13|05| 50.15
|m0|17| 25min
|m0|15| 13min
|m0|15|
2 issues
Stride.Core.DataSerializers .Example06_ImageProcessingSerializ erFactory} violates rule 'Avoid types with name too long'
Stride.Core.DataSerializers .Example06_ImageProcessingSerializ erFactory.Initialize()} violates rule 'Potentially Dead Methods'
{anonymous namespace in assembly Example07_CubeClicker} violates rule 'Declare types in namespaces'
{anonymous namespace in assembly Example07_CubeClicker} violates rule 'Types with source files stored in the same directory, should be declared in the same namespace'
UpdateEngineAutoGenerated .Dispatcher_get_Prefix(IClickable)} violates rule 'Potentially Dead Methods'
{anonymous namespace} in assembly Example07_CubeClicker
Stride.Core.DataSerializers
17D
|m0|19| 20.13
|m3|01| 6h 37min
|m2|02| 1h 20min
|m7|01|
First 3 of 27 issues
Stride.Core.DataSerializers .Example07_CubeClickerScripts_Clic kHandlerComponentSerializer} violates rule 'Non-static classes should be instantiated or turned to static'
Stride.Core.DataSerializers .Example07_CubeClickerScripts_Clic kHandlerComponentSerializer} violates rule 'Types that could be declared as private, nested in a parent type'
Stride.Core.DataSerializers .Example07_CubeClickerScripts_Clic kHandlerComponentSerializer} violates rule 'Avoid types with name too long'
Stride.Core.DataSerializers
Stride.Core.DataSerializers
11E
|m13|11| 50.15
|m0|18| 25min
|m0|16| 13min
|m0|16|
2 issues
Stride.Core.DataSerializers .Stride_CommunityToolkit_ExamplesS erializerFactory} violates rule 'Avoid types with name too long'
Stride.Core.DataSerializers .Stride_CommunityToolkit_ExamplesS erializerFactory.Initialize()} violates rule 'Potentially Dead Methods'
Stride.Core.DataSerializers
Stride.Core.DataSerializers
15D
|m2|17| 26.04
|m0|04| 1h 9min
|m0|06| 18min
|m0|06|
First 3 of 4 issues
Stride.Core.DataSerializers .Example_CubicleCalamityScripts_Ra ycastHandlerSerializer} violates rule 'Non-static classes should be instantiated or turned to static'
Stride.Core.DataSerializers .Example_CubicleCalamityScripts_Ra ycastHandlerSerializer} violates rule 'Types that could be declared as private, nested in a parent type'
Stride.Core.DataSerializers .Example_CubicleCalamityScripts_Ra ycastHandlerSerializer} violates rule 'Avoid types with name too long'
Quality Gate Pass: New Annual Interest since Baseline
• Quality Gate Description:
+The Quality Gate can be modified to match assemblies, types or methods with a poor Debt Rating, instead of matching namespaces.
30 namespaces matched
30 namespaces
debtRating
debtRatio
devTimeInManDay
debtInManDay
issues
Full Name
{anonymous namespace} in assembly Stride.CommunityToolkit
00E
|m54|02| 57.87
|m0|19| 25min
|m0|09| 15min
|m0|06|
First 3 of 4 issues
{anonymous namespace} in assembly Stride.CommunityToolkit} violates rule 'Declare types in namespaces'
UpdateEngineAutoGenerated} violates rule 'A stateless class or structure might be turned into a static type'
UpdateEngineAutoGenerated} violates rule 'Non-static classes should be instantiated or turned to static'
{anonymous namespace} in assembly Stride.CommunityToolkit
Stride.Core.DataSerializers .Example01_Basic3DScene_FSharpSeri alizerFactory} violates rule 'Avoid types with name too long'
Stride.Core.DataSerializers .Example01_Basic3DScene_FSharpSeri alizerFactory.Initialize()} violates rule 'Potentially Dead Methods'
Stride.Core.DataSerializers
Stride.Core.DataSerializers
01E
|m43|04| 50.15
|m0|14| 25min
|m0|11| 13min
|m0|09|
2 issues
Stride.Core.DataSerializers .Example01_Basic3DScene_VBasicSeri alizerFactory} violates rule 'Avoid types with name too long'
Stride.Core.DataSerializers .Example01_Basic3DScene_VBasicSeri alizerFactory.Initialize()} violates rule 'Potentially Dead Methods'
Stride.Core.DataSerializers
Stride.Core.DataSerializers
12D
|m26|12| 38.58
|m0|15| 25min
|m0|19| 10min
|m0|18|
1 issue
Stride.Core.DataSerializers .Example02_GiveMeACubeSerializerFa ctory.Initialize()} violates rule 'Potentially Dead Methods'
Stride.Core.DataSerializers
Stride.Core.DataSerializers
08E
|m43|09| 50.15
|m0|16| 25min
|m0|14| 13min
|m0|08|
2 issues
Stride.Core.DataSerializers .Example03_StrideUI_CapsuleAndWind owSerializerFactory} violates rule 'Avoid types with name too long'
Stride.Core.DataSerializers .Example03_StrideUI_CapsuleAndWind owSerializerFactory.Initialize()} violates rule 'Potentially Dead Methods'
Stride.Core.DataSerializers
Stride.Core.DataSerializers
13D
|m8|16| 26.04
|m0|05| 1h 9min
|m0|07| 18min
|m0|07|
First 3 of 4 issues
Stride.Core.DataSerializers .Example04_MyraUI_MyraSceneRendere rSerializer} violates rule 'Non-static classes should be instantiated or turned to static'
Stride.Core.DataSerializers .Example04_MyraUI_MyraSceneRendere rSerializer} violates rule 'Types that could be declared as private, nested in a parent type'
Stride.Core.DataSerializers .Example04_MyraUI_MyraSceneRendere rSerializer} violates rule 'Avoid types with name too long'
Stride.Core.DataSerializers
Stride.Core.DataSerializers
09E
|m43|10| 50.15
|m0|17| 25min
|m0|15| 13min
|m0|15|
2 issues
Stride.Core.DataSerializers .Example05_ProceduralGeometrySeria lizerFactory} violates rule 'Avoid types with name too long'
Stride.Core.DataSerializers .Example05_ProceduralGeometrySeria lizerFactory.Initialize()} violates rule 'Potentially Dead Methods'
Stride.Core.DataSerializers
Stride.Core.DataSerializers
10E
|m43|11| 50.15
|m0|18| 25min
|m0|16| 13min
|m0|16|
2 issues
Stride.Core.DataSerializers .Example06_ImageProcessingSerializ erFactory} violates rule 'Avoid types with name too long'
Stride.Core.DataSerializers .Example06_ImageProcessingSerializ erFactory.Initialize()} violates rule 'Potentially Dead Methods'
{anonymous namespace in assembly Example07_CubeClicker} violates rule 'Declare types in namespaces'
{anonymous namespace in assembly Example07_CubeClicker} violates rule 'Types with source files stored in the same directory, should be declared in the same namespace'
UpdateEngineAutoGenerated .Dispatcher_get_Prefix(IClickable)} violates rule 'Potentially Dead Methods'
{anonymous namespace} in assembly Example07_CubeClicker
Stride.Core.DataSerializers
18D
|m0|19| 20.13
|m3|01| 6h 37min
|m2|02| 1h 20min
|m5|01|
First 3 of 27 issues
Stride.Core.DataSerializers .Example07_CubeClickerScripts_Clic kHandlerComponentSerializer} violates rule 'Non-static classes should be instantiated or turned to static'
Stride.Core.DataSerializers .Example07_CubeClickerScripts_Clic kHandlerComponentSerializer} violates rule 'Types that could be declared as private, nested in a parent type'
Stride.Core.DataSerializers .Example07_CubeClickerScripts_Clic kHandlerComponentSerializer} violates rule 'Avoid types with name too long'
Stride.Core.DataSerializers
Stride.Core.DataSerializers
06E
|m43|07| 50.15
|m0|13| 25min
|m0|10| 13min
|m0|10|
2 issues
Stride.Core.DataSerializers .Stride_CommunityToolkit_ExamplesS erializerFactory} violates rule 'Avoid types with name too long'
Stride.Core.DataSerializers .Stride_CommunityToolkit_ExamplesS erializerFactory.Initialize()} violates rule 'Potentially Dead Methods'
Stride.Core.DataSerializers
Stride.Core.DataSerializers
19D
|m8|17| 26.04
|m0|04| 1h 9min
|m0|06| 18min
|m0|04|
First 3 of 4 issues
Stride.Core.DataSerializers .Example_CubicleCalamityScripts_Ra ycastHandlerSerializer} violates rule 'Non-static classes should be instantiated or turned to static'
Stride.Core.DataSerializers .Example_CubicleCalamityScripts_Ra ycastHandlerSerializer} violates rule 'Types that could be declared as private, nested in a parent type'
Stride.Core.DataSerializers .Example_CubicleCalamityScripts_Ra ycastHandlerSerializer} violates rule 'Avoid types with name too long'
Stride.Core.DataSerializers
Quality Gate Pass: New Annual Interest since Baseline
• Quality Gate Description:
This Quality Gate fails if the estimated annual cost to leave all issues unfixed, increased from more than 2 man-days since the baseline.
This Quality Gate warns if this estimated annual cost is positive.
This estimated annual cost is named the Annual-Interest.
Each rule can either provide a formula to compute the Annual-Interest per issue, or assign a Severity level for each issue. Some thresholds defined in Project Properties > Issue and Debt > Annual Interest are used to infer an Annual-Interest value from a Severity level. Annual Interest documentation: https://www.ndepend.com/docs/technical-debt#AnnualInterest
Rule Violated:ND1005 Avoid methods with too many overloads
• Rule Description:
+Method overloading is the ability to create multiple methods of the same name with different implementations, and various set of parameters.
+This rule matches sets of methods with 7 overloads or more.
+The "too many overloads" phenomenon typically arises when an algorithm accepts a diverse range of input parameters. Each overload is introduced as a means to accommodate a different combination of input parameters.
+Such method set might be a problem to maintain and provokes ambiguity and make the code less readable.
+The too many overloads phenomenon can also be a consequence of the usage of the visitor design patternhttp://en.wikipedia.org/wiki/Visitor_pattern since a method named Visit() must be provided for each sub type. For this reason, the default version of this rule doesn't match overloads whose name start with "visit" or "dispatch" (case-insensitive) to avoid match overload visitors, and you can adapt this rule to your own naming convention.
+Sometime too many overloads phenomenon is not the symptom of a problem, for example when a numeric to something conversion method applies to all numeric and nullable numeric types.
+See the definition of the NbOverloads metric here https://www.ndepend.com/docs/code-metrics#NbOverloads
+Notice that this rule doesn't include in the overloads list methods that override a third-party method nor constructors that call a base constructor. Such situations are consequences of lower-level problems.
+
+
+ • How to Fix Issues of this Rule:
+In such situation, the C# language feature optional parameters, named arguments or parameter array (with the params keyword) can be used instead.
+The estimated Debt, which means the effort to fix such issue, is of 3 minutes per method overload.
+
+
+ • How to Suppress an Issue of this Rule:
+In source code, tag the concerned code element with this attribute:
+[SuppressMessage("NDepend", "ND1005:AvoidMethodsWithTooManyOverloads", Justification="...")]
+This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
7 methods matched
+ Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
+
• Rule Description:
This rule matches types with more than 200 lines of code. Only lines of code in JustMyCode methods are taken account.
Types where NbLinesOfCode > 200 are extremely complex to develop and maintain. See the definition of the NbLinesOfCode metric here https://www.ndepend.com/docs/code-metrics#NbLinesOfCode
Maybe you are facing the God Class phenomenon: A God Class is a class that controls way too many other classes in the system and has grown beyond all logic to become The Class That Does Everything.
@@ -1319,7 +1361,26 @@
Debt
[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.
4 types matched
Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
-
Rule Violated:ND1001 Avoid types with too many methods
• Rule Description:
+This rule matches types with more than 20 methods. Such type might be hard to understand and maintain.
+This rule doesn't match type with at least a non-constant field because it is ok to have a class with many stateless methods
+Notice that methods like constructors or property and event accessors are not taken account.
+Having many methods for a type might be a symptom of too many responsibilities implemented.
+Maybe you are facing the God Class phenomenon: A God Class is a class that controls way too many other classes in the system and has grown beyond all logic to become The Class That Does Everything.
+
+
+ • 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.
4 types matched
+ Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
+
Critical Rule Violated:ND1003 Avoid methods too big, too complex
• Rule Description:
This rule matches methods where ILNestingDepth > 2 and CyclomaticComplexity > 17 Such method is typically hard to understand and maintain.
Maybe you are facing the God Method phenomenon. A "God Method" is a method that does way too many processes in the system and has grown beyond all logic to become The Method That Does Everything. When the need for new processes increases suddenly some programmers realize: why should I create a new method for each process if I can only add an if.
See the definition of the CyclomaticComplexity metric here: https://www.ndepend.com/docs/code-metrics#CC
@@ -1372,47 +1433,7 @@
Debt
[SuppressMessage("NDepend", "ND1006:AvoidMethodsPotentiallyPoorlyCommented", Justification="...")]
This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
4 methods matched
Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
-
Rule Violated:ND1001 Avoid types with too many methods
• Rule Description:
-This rule matches types with more than 20 methods. Such type might be hard to understand and maintain.
-This rule doesn't match type with at least a non-constant field because it is ok to have a class with many stateless methods
-Notice that methods like constructors or property and event accessors are not taken account.
-Having many methods for a type might be a symptom of too many responsibilities implemented.
-Maybe you are facing the God Class phenomenon: A God Class is a class that controls way too many other classes in the system and has grown beyond all logic to become The Class That Does Everything.
-
-
- • 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.
3 types matched
- Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
-
Rule Violated:ND1005 Avoid methods with too many overloads
• Rule Description:
-Method overloading is the ability to create multiple methods of the same name with different implementations, and various set of parameters.
-This rule matches sets of methods with 7 overloads or more.
-The "too many overloads" phenomenon typically arises when an algorithm accepts a diverse range of input parameters. Each overload is introduced as a means to accommodate a different combination of input parameters.
-Such method set might be a problem to maintain and provokes ambiguity and make the code less readable.
-The too many overloads phenomenon can also be a consequence of the usage of the visitor design patternhttp://en.wikipedia.org/wiki/Visitor_pattern since a method named Visit() must be provided for each sub type. For this reason, the default version of this rule doesn't match overloads whose name start with "visit" or "dispatch" (case-insensitive) to avoid match overload visitors, and you can adapt this rule to your own naming convention.
-Sometime too many overloads phenomenon is not the symptom of a problem, for example when a numeric to something conversion method applies to all numeric and nullable numeric types.
-See the definition of the NbOverloads metric here https://www.ndepend.com/docs/code-metrics#NbOverloads
-Notice that this rule doesn't include in the overloads list methods that override a third-party method nor constructors that call a base constructor. Such situations are consequences of lower-level problems.
-
-
- • How to Fix Issues of this Rule:
-In such situation, the C# language feature optional parameters, named arguments or parameter array (with the params keyword) can be used instead.
-The estimated Debt, which means the effort to fix such issue, is of 3 minutes per method overload.
-
-
- • How to Suppress an Issue of this Rule:
-In source code, tag the concerned code element with this attribute:
-[SuppressMessage("NDepend", "ND1005:AvoidMethodsWithTooManyOverloads", Justification="...")]
-This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
2 methods matched
- Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
-
Rule Violated:ND1002 Avoid types with too many fields
• Rule Description:
This rule matches types with more than 15 fields. Such type might be hard to understand and maintain.
Notice that constant fields and static-readonly fields are not counted. Enumerations types are not counted also.
Having many fields for a type might be a symptom of too many responsibilities implemented.
@@ -1445,11 +1466,11 @@
Debt
• 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.
42 types matched
+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 strike-bold means removed (since baseline)
Rule Violated:ND1206 A stateless class or structure might be turned into a static type
• Rule Description:
This rule matches classes and structures that are not static, nor generic, that doesn't have any instance fields, that doesn't implement any interface nor has a base class (different than System.Object).
Such class or structure is a stateless collection of pure functions, that doesn't act on any this object data. Such collection of pure functions is better hosted in a static class. Doing so simplifies the client code that doesn't have to create an object anymore to invoke the pure functions.
@@ -1462,9 +1483,11 @@
Debt
• 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.
20 types matched
+This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
24 types matched
Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
-
Rule Violated:ND1203 Class with no descendant should be sealed if possible
• Rule Description:
If a non-static class isn't declared with the keyword sealed, it means that it can be subclassed everywhere the non-sealed class is visible.
Making a class a base class requires significant design effort. Subclassing a non-sealed class, not initially designed to be subclassed, will lead to unanticipated design issue.
Most classes are non-sealed because developers don't care about the keyword sealed, not because the primary intention was to write a class that can be subclassed.
@@ -1480,28 +1503,10 @@
Debt
• 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.
1 type matched
- Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
-
Rule Violated:ND1305 Avoid namespaces with few types
• Rule Description:
-This rule warns about namespaces other than the global namespace that contain less than five types.
-Make sure that each of your namespaces has a logical organization and that a valid reason exists to put types in a sparsely populated namespace. Because creating numerous detailed namespaces leads to the need for many using clauses in client code.
-Namespaces should contain types that are used together in most scenarios. When their applications are mutually exclusive, types should be located in separate namespaces.
-Careful namespace organization can also be helpful because it increases the discoverability of a feature. By examining the namespace hierarchy, library consumers should be able to locate the types that implement a feature.
-Notice that this rule source code contains a list of common infrastructure namespace names that you can complete. Namespaces with ending name component in this list are not matched.
-
-
- • 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.
9 namespaces matched
+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 strike-bold means removed (since baseline)
-
Rule Violated:ND1306 Nested types should not be visible
• Rule Description:
This rule warns about nested types not declared as private.
A nested type is a type declared within the scope of another type. Nested types are useful for encapsulating private implementation details of the containing type. Used for this purpose, nested types should not be externally visible.
Do not use externally visible nested types for logical grouping or to avoid name collisions; instead use namespaces.
@@ -1523,7 +1528,7 @@
Debt
Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
Rule Violated:ND1313 Override equals and operator equals on value types
• Rule Description:
For value types, the inherited implementation of Equals() uses the Reflection library, and compares the contents of all instances fields. Reflection is computationally expensive, and comparing every field for equality might be unnecessary.
If you expect users to compare or sort instances, or use them as hash table keys, your value type should implement Equals(). In C# and VB.NET, you should also provide an implementation of GetHashCode() and of the equality and inequality operators.
@@ -1536,11 +1541,30 @@
Debt
• How to Suppress an Issue of this Rule:
In source code, tag the concerned code element with this attribute:
[SuppressMessage("NDepend", "ND1313:OverrideEqualsAndOperatorEqualsOnValueTypes", Justification="...")]
-This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
25 types matched
+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.
26 types matched
Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
Rule Violated:ND1311 Don't use obsolete types, methods or fields
• Rule Description:
+The attribute System.ObsoleteAttribute is used to tag types, methods, fields, properties or events of an API that clients shouldn't use because these code elements will be removed sooner or later.
+This rule warns about methods that use a type, a method or a field, tagged with System.ObsoleteAttribute.
+
+
+ • How to Fix Issues of this Rule:
+Typically when a code element is tagged with System.ObsoleteAttribute, a workaround message is provided to clients.
+This workaround message will tell you what to do to avoid using the obsolete code element.
+The estimated Debt, which means the effort to fix such issue, is 5 minutes per type, method or field used.
+Issues of this rule have a severity High because it is important to not rely anymore on obsolete code.
+
+
+ • How to Suppress an Issue of this Rule:
+In source code, tag the concerned code element with this attribute:
+[SuppressMessage("NDepend", "ND1311:DontUseObsoleteTypesMethodsOrFields", 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.
23 methods matched
+ Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
+
• Rule Description:
Types are declared within namespaces to prevent name collisions, and as a way of organizing related types in an object hierarchy.
Types outside any named namespace are in a global namespace that cannot be referenced in code. Such practice results in naming collisions and ambiguity since types in the global namespace are accessible from anywhere in the code.
Also, placing types within namespaces allows to encapsulate related code and data, providing a level of abstraction and modularity. Global types lack this encapsulation, making it harder to understand the organization and structure of your code.
@@ -1554,9 +1578,28 @@
Debt
• How to Suppress an Issue of this Rule:
In source code, tag the concerned code element with this attribute:
[SuppressMessage("NDepend", "ND1307:DeclareTypesInNamespaces", 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.
19 namespaces matched
+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.
23 namespaces matched
+ Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
+
{anonymous namespace} in assembly TextureMapping_Example01
Rule Violated:ND1305 Avoid namespaces with few types
• Rule Description:
+This rule warns about namespaces other than the global namespace that contain less than five types.
+Make sure that each of your namespaces has a logical organization and that a valid reason exists to put types in a sparsely populated namespace. Because creating numerous detailed namespaces leads to the need for many using clauses in client code.
+Namespaces should contain types that are used together in most scenarios. When their applications are mutually exclusive, types should be located in separate namespaces.
+Careful namespace organization can also be helpful because it increases the discoverability of a feature. By examining the namespace hierarchy, library consumers should be able to locate the types that implement a feature.
+Notice that this rule source code contains a list of common infrastructure namespace names that you can complete. Namespaces with ending name component in this list are not matched.
+
+
+ • 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.
11 namespaces matched
Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
-
19 namespaces
childTypes
# lines of code (LOC)
Debt
Severity
Full Name
{anonymous namespace} in assembly Stride.CommunityToolkit
|m0|18|
1 type
UpdateEngineAutoGenerated
|m0|18| 0
|m0|18| 2min 0s
18Medium
{anonymous namespace} in assembly Stride.CommunityToolkit
{anonymous namespace} in assembly Stride.CommunityToolkit.Skyboxes
|m0|02|
1 type
UpdateEngineAutoGenerated
|m0|17| 0
|m0|02| 2min 0s
02Medium
{anonymous namespace} in assembly Stride.CommunityToolkit.Skyboxes
{anonymous namespace} in assembly Stride.CommunityToolkit.Windows
|m0|03|
1 type
UpdateEngineAutoGenerated
|m0|16| 0
|m0|03| 2min 0s
03Medium
{anonymous namespace} in assembly Stride.CommunityToolkit.Windows
Rule Violated:ND1309 Instances size shouldn't be too big
• Rule Description:
Types where SizeOfInst > 128 might degrade performance if many instances are created at runtime. They can also be hard to maintain.
Notice that a class with a large SizeOfInst value doesn't necessarily have a lot of instance fields. It might derive from a class with a large SizeOfInst value.
This query doesn't match types that represent WPF and WindowsForm forms and controls nor Entity Framework special classes.
@@ -1602,9 +1645,11 @@
Debt
• 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.
19 types matched
+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.
23 types matched
Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
-
• Rule Description:
This rule lists potentiallydead methods. A dead method is a method that can be removed because it is never called by the program.
This rule lists not only methods not called anywhere in code, but also methods called only by methods not called anywhere in code. This is why this rule comes with a column MethodsCallingMe and this is why there is a code metric named depth:
@@ -1625,12 +1670,11 @@
Debt
• 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.
53 methods matched
+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.
63 methods matched
Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
• Rule Description:
This rule lists potentiallydead types. A dead type is a type that can be removed because it is never used by the program.
This rule lists not only types not used anywhere in code, but also types used only by types not used anywhere in code. This is why this rule comes with a column TypesusingMe and this is why there is a code metric named depth:
• A depth value of 0 means the type is not used.
@@ -1668,9 +1712,9 @@
Debt
• 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.
1 field matched
+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 strike-bold means removed (since baseline)
-
Rule Violated:ND3101 Don't use System.Random for security purposes
• Rule Description:
The algorithm used by the implementation of System.Random is weak because random numbers generated can be predicted.
Using predictable random values in a security critical context can lead to vulnerabilities.
@@ -1686,9 +1730,9 @@
Debt
• How to Suppress an Issue of this Rule:
In source code, tag the concerned code element with this attribute:
[SuppressMessage("NDepend", "ND3101:DontUseSystemRandomForSecurityPurposes", Justification="...")]
-This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
3 methods matched
+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 methods matched
Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
-
Rule Violated:ND1802 Fields that could have a lower visibility
• Rule Description:
This rule warns about fields that can be declared with a lower visibility without provoking any compilation error. For example private is a visibility lower than internal which is lower than public.
Narrowing visibility is a good practice because doing so promotes encapsulation. The scope from which fields can be consumed is then reduced to a minimum.
@@ -1724,11 +1768,11 @@
Debt
• How to Suppress an Issue of this Rule:
In source code, tag the concerned code element with this attribute:
[SuppressMessage("NDepend", "ND1805:FieldsShouldBeDeclaredAsPrivate", Justification="...")]
-This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
28 fields matched
+This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
29 fields matched
Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
Rule Violated:ND1803 Types that could be declared as private, nested in a parent type
• Rule Description:
This rule matches types that can be potentially nested and declared private into another type.
The conditions for a type to be potentially nested into a parent type are:
• the parent type is the only type consuming it,
@@ -1745,11 +1789,11 @@
Debt
• How to Suppress an Issue of this Rule:
In source code, tag the concerned code element with this attribute:
[SuppressMessage("NDepend", "ND1803:TypesThatCouldBeDeclaredAsPrivateNestedInAParentType", Justification="...")]
-This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
21 types matched
+This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
24 types matched
Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
Rule Violated:ND1807 Avoid public methods not publicly visible
• Rule Description:
This rule warns about methods declared as public whose parent type is not declared as public.
In such situation public means, can be accessed from anywhere my parent type is visible. Some developers think this is an elegant language construct, some others find it misleading.
This rule can be deactivated if you don't agree with it. Read the whole debate here: http://ericlippert.com/2014/09/15/internal-or-public/
@@ -1763,9 +1807,11 @@
Debt
• 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.
19 methods matched
+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.
23 methods matched
Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
-
Rule Violated:ND1800 Methods that could have a lower visibility
• Rule Description:
This rule warns about methods that can be declared with a lower visibility without provoking any compilation error. For example private is a visibility lower than internal which is lower than public.
Narrowing visibility is a good practice because doing so effectively promotes encapsulation. This limits the scope from which methods can be accessed to a minimum.
By default, this rule doesn't match publicly visible methods that could have a lower visibility because it cannot know if the developer left the method public intentionally or not. Public methods matched are declared in non-public types.
@@ -1781,9 +1827,9 @@
Debt
• How to Suppress an Issue of this Rule:
In source code, tag the concerned code element with this attribute:
[SuppressMessage("NDepend", "ND1800:MethodsThatCouldHaveALowerVisibility", Justification="...")]
-This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
13 methods matched
+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 methods matched
Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
-
Rule Violated:ND1801 Types that could have a lower visibility
• Rule Description:
This rule warns about types that can be declared with a lower visibility without provoking any compilation error. For example private is a visibility lower than internal which is lower than public.
Narrowing visibility is a good practice because doing so promotes encapsulation. The scope from which types can be consumed is then reduced to a minimum.
By default, this rule doesn't match publicly visible types that could have a lower visibility because it cannot know if the developer left the type public intentionally or not. Public types matched are nested in non-public types.
@@ -1814,7 +1860,7 @@
Debt
[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.
12 fields matched
Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
-
Rule Violated:ND1905 A field must not be assigned from outside its parent hierarchy types
• Rule Description:
This rule is related to the rule Fields should be declared as private. It matches any public or internal, mutable field that is assigned from outside its parent class and subclasses.
@@ -1871,9 +1917,9 @@
Debt
• 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.
5 fields matched
+This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
8 fields matched
Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
-
Rule Violated:ND1906 Don't assign a field from many methods
• Rule Description:
A field assigned from many methods is a symptom of bug-prone code. Notice that:
• For an instance field, constructor(s) of its class that assign the field are not counted.
• For a static field, the class constructor that assigns the field is not counted.
@@ -1894,7 +1940,7 @@
Debt
[SuppressMessage("NDepend", "ND1906:DontAssignAFieldFromManyMethods", Justification="...")]
This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
4 fields matched
Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
-
• Rule Description:
This rule warns about static fields that are not declared as read-only.
In Object-Oriented-Programming the natural artifact to hold states that can be modified is instance fields. Such mutable static fields create confusion about the expected state at runtime and impairs the code testability since the same mutable state is re-used for each test.
More discussion on the topic can be found here: https://blog.ndepend.com/the-proper-usages-of-the-keyword-static-in-c/
@@ -1908,9 +1954,9 @@
Debt
• How to Suppress an Issue of this Rule:
In source code, tag the concerned code element with this attribute:
[SuppressMessage("NDepend", "ND1901:AvoidNonReadOnlyStaticFields", Justification="...")]
-This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 field matched
+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 strike-bold means removed (since baseline)
-
1 field
methodAssigningField
Debt
Severity
Full Name
emptyObject
0no method
|m0|0| 2min 0s
0High
UpdateEngineAutoGenerated .emptyObject
Rule Violated:ND1914 Immutable struct should be declared as readonly
Rule Violated:ND1914 Immutable struct should be declared as readonly
• Rule Description:
Declare immutable structures as readonly struct. This way the C# compiler and the JIT are informed about the intent to create an immutable type. Some low-level optimizations can then be performed on instances of a readonly struct. For example such instance can be passed or returned by-reference instead of being copied on the stack. This is possible because there is no risk that the called or caller method mutates any value.
More can be read on the readonly struct topic in this documentation: https://learn.microsoft.com/en-us/dotnet/csharp/write-safe-efficient-code#declare-immutable-structs-as-readonly
@@ -1926,7 +1972,23 @@
Debt
Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
Rule Violated:ND2009 Avoid types with name too long
• Rule Description:
+Types with a name too long tend to decrease code readability. This might also be an indication that a type is doing too much.
+This rule matches types with names with more than 40 characters.
+
+
+ • How to Fix Issues of this Rule:
+To fix a violation of this rule, rename the type with a shortest name or eventually split the type in several more fine-grained types.
+
+
+ • How to Suppress an Issue of this Rule:
+In source code, tag the concerned code element with this attribute:
+[SuppressMessage("NDepend", "ND2009:AvoidTypesWithNameTooLong", 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.
30 types matched
+ Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
+
• Rule Description:
By default the presents rule supports the 3 most used naming conventions for static fields:
• Static field name starting with an upper-case letter
• Static field name starting with "_" followed with an upper-case letter
@@ -1944,26 +2006,9 @@
Debt
• 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.
9 fields matched
- Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
-
Rule Violated:ND2009 Avoid types with name too long
• Rule Description:
-Types with a name too long tend to decrease code readability. This might also be an indication that a type is doing too much.
-This rule matches types with names with more than 40 characters.
-
-
- • How to Fix Issues of this Rule:
-To fix a violation of this rule, rename the type with a shortest name or eventually split the type in several more fine-grained types.
-
-
- • How to Suppress an Issue of this Rule:
-In source code, tag the concerned code element with this attribute:
-[SuppressMessage("NDepend", "ND2009:AvoidTypesWithNameTooLong", Justification="...")]
-This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
29 types matched
+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 fields matched
Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
-
• Rule Description:
By default the presents rule supports the 3 most used naming conventions for instance fields:
• Instance field name starting with a lower-case letter
• Instance field name starting with "_" followed with a lower-case letter
@@ -1983,7 +2028,21 @@
Debt
[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.
5 fields matched
Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
-
Critical Rule Violated:ND2012 Avoid having different types with same name
• Rule Description:
+This rule warns about multiple types with same name, that are defined in different application or third-party namespaces or assemblies.
+Such practice leads confusion and also naming collision in source files that use 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.
3 types matched
+ Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
+
Rule Violated:ND2003 Abstract base class should be suffixed with 'Base'
• Rule Description:
This rule warns about abstract classes whose names are not suffixed with Base. It is a common practice in the .NET world to suffix base classes names with Base.
Notice that this rule doesn't match abstract classes that are in a middle of a hierarchy chain. In other words, only base classes that derive directly from System.Object are matched.
@@ -1997,7 +2056,7 @@
Debt
[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.
2 types matched
Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
-
Rule Violated:ND2011 Avoid fields with name too long
• Rule Description:
Fields with a name too long tend to decrease code readability.
This rule matches fields with names with more than 40 characters.
@@ -2011,21 +2070,7 @@
Debt
[SuppressMessage("NDepend", "ND2011:AvoidFieldsWithNameTooLong", 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 strike-bold means removed (since baseline)
-
Stride.Core.DataSerializers .Example07_CubeClickerCore_ClickDa taSerializer .System_Collections_Generic_List_1 _Example07_CubeClicker_Core_IClic k able_Serializer
Critical Rule Violated:ND2012 Avoid having different types with same name
• Rule Description:
-This rule warns about multiple types with same name, that are defined in different application or third-party namespaces or assemblies.
-Such practice leads confusion and also naming collision in source files that use 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.
2 types matched
- Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
-
Stride.Core.DataSerializers .Example07_CubeClickerCore_ClickDa taSerializer .System_Collections_Generic_List_1 _Example07_CubeClicker_Core_IClic k able_Serializer
Rule Violated:ND2007 Methods name should begin with an Upper character
• Rule Description:
This rule warns about methods whose names don't start with an Upper character. It is a common practice in the .NET world to use Pascal Casing Style to name methods.
Pascal Casing Style : The first letter in the identifier and the first letter of each subsequent concatenated word are capitalized. For example: ComputeSize
@@ -2054,7 +2099,7 @@
Debt
[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.
1 type matched
Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
-
Rule Violated:ND2020 Avoid various capitalizations for method name
• Rule Description:
This rule matches application methods whose names differ only in capitalization.
With this rule you'll discover various names like ProcessOrderId and ProcessOrderID. It is important to choose a single capitalization used accross the whole application to improve overall readability, maintainability, team collaboration and consistency.
Matched methods are not necessarily declared in the same type. However if various capitalizations of a method name are found within the same type, the issue severity goes from Medium to Critical. Indeed, this situation is not just a matter of convention, it is error-prone. It forces type's clients to investigate which version of the method to call.
@@ -2095,7 +2140,7 @@
Debt
[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.
11 namespaces matched
Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
-
{anonymous namespace} in assembly Example_2D_Playground
Rule Violated:ND2102 Avoid defining multiple types in a source file
• Rule Description:
Defining multiple types in a single source file decreases code readability, because developers are used to see all types in a namespace, when expanding a folder in the Visual Studio Solution Explorer. Also doing so, leads to source files with too many lines.
Each match of this rule is a source file that contains several types definitions, indexed by one of those types, preferably the one with the same name than the source file name without file extension, if any.
Notice that types nested in a parent type, enumerations and types with file visibility are exempt from counting. This is because it is considered acceptable to declare these types within the same source file as their principal user type.
@@ -2111,7 +2156,7 @@
Debt
[SuppressMessage("NDepend", "ND2102:AvoidDefiningMultipleTypesInASourceFile", Justification="...")]
This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
3 types matched
Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
-
Rule Violated:ND2101 Avoid duplicating a type definition across assemblies
• Rule Description:
A source file located outside of the VS project directory can be added through: > Add > Existing Items… > Add As Link
This rule warns about using this feature to share code across several assemblies. This provokes type duplication at binary level. Hence maintainability is degraded and subtle versioning bug can appear.
Each match represents a type duplicated. Unfolding the types in the column typesDefs will show the multiple definitions across multiple assemblies.
@@ -2127,7 +2172,7 @@
Debt
[SuppressMessage("NDepend", "ND2101:AvoidDuplicatingATypeDefinitionAcrossAssemblies", 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 strike-bold means removed (since baseline)
-
Rule Violated:ND2103 Namespace name should correspond to file location
• Rule Description:
To maintain a robust code structure and organization, it is advisable to synchronize the namespaces hierarchy with the directory hierarchy that contains the source files.
Following this practice is a widely accepted convention, and failing to adhere to it can result in source code that is less maintainable and harder to navigate.
This rule applies to all namespaces declared in source files where the file location does not align with the namespace name.
@@ -2143,7 +2188,7 @@
Debt
[SuppressMessage("NDepend", "ND2103:NamespaceNameShouldCorrespondToFileLocation", Justification="...")]
This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
1 namespace matched
Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
-
• Rule Description:
An enumeration is a value type that defines a set of related named constants. By default, the System.Int32 data type is used to store the constant value.
Even though you can change this underlying type, it is not necessary or recommended for most scenarios. Note that using a data type smaller than Int32 doesn't result in a significant performance improvement. If you cannot use the default data type, you should use one of the Common Language System (CLS)-compliant integral types, Byte, Int16, Int32, or Int64 to make sure that all values of the enumeration can be represented in CLS-compliant programming languages.
@@ -2159,31 +2204,64 @@
Debt
[SuppressMessage("NDepend", "ND2206:EnumStorageShouldBeInt32", 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 fields matched
Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
-
14Missing XML comment for publicly visible type or member 'ImmediateDebugRenderObject.DrawQuad(ref Vector3, ref Vector2, ref Quaternion, ref Color, bool)'
17Missing XML comment for publicly visible type or member 'ImmediateDebugRenderObject.DrawHalfSphere(ref Vector3, float, ref Quaternion, ref Color, bool)'
18Missing XML comment for publicly visible type or member 'ImmediateDebugRenderObject.DrawCube(ref Vector3, ref Vector3, ref Quaternion, ref Color, bool)'
01Missing XML comment for publicly visible type or member 'ImmediateDebugRenderObject.DrawCapsule(ref Vector3, float, float, ref Quaternion, ref Color, bool)'
00Missing XML comment for publicly visible type or member 'ImmediateDebugRenderObject.DrawCylinder(ref Vector3, float, float, ref Quaternion, ref Color, bool)'
Roslyn Analyzer Violated:CS0618 Type or member is obsolete
00 'Its best to use a List<T> instead of FastList<T> and iterate through the list as a Span for peak performance.'
Roslyn Analyzer Violated:CS8618 Non-nullable field must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring as nullable.
18Non-nullable field 'DebugDraw' must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring the field as nullable.
02Non-nullable field '_sceneRenderer' must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring the field as nullable.
03Non-nullable field '_ctx' must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring the field as nullable.
04Non-nullable field 'vertexBuffer' must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring the field as nullable.
05Non-nullable field 'indexBuffer' must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring the field as nullable.
06Non-nullable field 'lineVertexBuffer' must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring the field as nullable.
07Non-nullable field 'pipelineState' must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring the field as nullable.
08Non-nullable field 'inputElements' must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring the field as nullable.
01Non-nullable field 'lineInputElements' must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring the field as nullable.
09Non-nullable field 'primitiveEffect' must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring the field as nullable.
11Non-nullable field 'lineEffect' must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring the field as nullable.
12Non-nullable field 'transformBuffer' must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring the field as nullable.
13Non-nullable field 'colorBuffer' must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring the field as nullable.
14Non-nullable field 'solidPrimitiveRenderer' must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring the field as nullable.
15Non-nullable field 'wireframePrimitiveRenderer' must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring the field as nullable.
16Non-nullable field 'transparentSolidPrimitiveRenderer' must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring the field as nullable.
17Non-nullable field 'transparentWireframePrimitiveRenderer' must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring the field as nullable.
10Non-nullable field 'script' must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring the field as nullable.
00Non-nullable property 'ModelComponent' must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring the property as nullable.
Roslyn Analyzer Violated:CS8602 Dereference of a possibly null reference.
5Argument of type 'Queue<Entity>' cannot be used for parameter 'queue' of type 'Queue<Entity?>' in 'void CollectionExtensions.EnqueueRange<Entity>(Queue<Entity?> queue, IEnumerable<Entity?> collection)' due to differences in the nullability of reference types.
06Non-nullable field 'transparentSolidPrimitiveRenderer' must contain a non-null value when exiting constructor. Consider declaring the field as nullable.
07Non-nullable field 'transparentWireframePrimitiveRenderer' must contain a non-null value when exiting constructor. Consider declaring the field as nullable.
3Parameter 'size' has no matching param tag in the XML comment for 'TriangularPrismProceduralModel.New(Vector3, float, float, bool)' (but other parameters do)
2Parameter 'uScale' has no matching param tag in the XML comment for 'TriangularPrismProceduralModel.New(Vector3, float, float, bool)' (but other parameters do)
1Parameter 'vScale' has no matching param tag in the XML comment for 'TriangularPrismProceduralModel.New(Vector3, float, float, bool)' (but other parameters do)
0Parameter 'toLeftHanded' has no matching param tag in the XML comment for 'TriangularPrismProceduralModel.New(Vector3, float, float, bool)' (but other parameters do)
Roslyn Analyzer Violated:CS0414 Field is assigned but its value is never used
https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1822
Members that do not access instance data or call instance methods can be marked as static. After you mark the methods as static, the compiler will emit nonvirtual call sites to these members. This can give you a measurable performance gain for performance-sensitive code.
1 issue
Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
-
• Query Description:
This query lists types with most Debt, or in other words, types with issues that would need the largest effort to get fixed.
Both issues on the type and its members are taken account.
@@ -2202,7 +2289,7 @@
Debt
The amount of Debt is not a measure to prioritize the effort to fix issues, it is an estimation of how far the team is from clean code that abides by the rules set.
For each issue the Annual Interest estimates the annual cost to leave the issues unfixed. The Severity of an issue is estimated through thresholds from the Annual Interest.
The Debt Breaking Point represents the duration from now when the estimated cost to leave the issue unfixed costs as much as the estimated effort to fix it.
-Hence the shorter the Debt Breaking Point the largest the Return on Investment for fixing the issue. The Breaking Point is the right metric to prioritize issues fix.
Stride.CommunityToolkit.Rendering .DebugShapes .ImmediateDebugRenderFeature+Circl e
Code Query: Types to Fix Priority
• Query Description:
+Hence the shorter the Debt Breaking Point the largest the Return on Investment for fixing the issue. The Breaking Point is the right metric to prioritize issues fix.
• Query Description:
This query lists types per increasing Debt Breaking Point.
For each issue the Debt estimates the effort to fix the issue, and the Annual Interest estimates the annual cost to leave the issue unfixed. The Severity of an issue is estimated through thresholds from the Annual Interest of the issue.
The Debt Breaking Point represents the duration from now when the estimated cost to leave the issue unfixed costs as much as the estimated effort to fix it.
@@ -2213,14 +2300,14 @@
Debt
Only types with at least 30 minutes of Debt are listed to avoid polluting the list with the numerous types with small Debt, on which the Breaking Point value makes less sense.
The Annual Interest estimates the cost per year in man-days to leave these issues unfixed.
Since untested code often generates a lot of Debt, the type size and percentage coverage is shown (just uncomment t.PercentageCoverage in the query source code once you've imported the coverage data).
-The Debt Rating and Debt Ratio are also shown for informational purpose.
• Query Description:
This query lists issues per increasing Debt Breaking Point.
Double-click an issue to edit its rule and select the issue in the rule result. This way you can view all information concerning the issue.
For each issue the Debt estimates the effort to fix the issue, and the Annual Interest estimates the annual cost to leave the issue unfixed. The Severity of an issue is estimated through thresholds from the Annual Interest of the issue.
The Debt Breaking Point represents the duration from now when the estimated cost to leave the issue unfixed costs as much as the estimated effort to fix it.
Hence the shorter the Debt Breaking Point the largest the Return on Investment for fixing the issue.
Often issues on new and refactored code elements since baseline will be listed first, because such issues get a higher Annual Interest because it is important to focus first on new issues on recent code.
-More documentation: https://www.ndepend.com/docs/technical-debt
Rule violated: Don't use obsolete types, methods or fields
Code Query: Debt and Issues per Rule
• Query Description:
This query lists violated rules with most Debt first.
A rule violated has issues. For each issue the Debt estimates the effort to fix the issue.
--
@@ -2231,7 +2318,7 @@
Debt
--
Notice that rules can be grouped in Rule Category. This way you'll see categories that generate most Debt.
Typically the rules that generate most Debt are the ones related to Code Coverage by Tests, Architecture and Code Smells.
-More documentation: https://www.ndepend.com/docs/technical-debt
57 rules matched
57 rules
Issues
Debt
Annual Interest
Breaking Point
Category
Full Name
A field must not be assigned from outside its parent hierarchy types
Stride.Core.DataSerializers .StrideCommunityToolkitRenderingDe bugShapes_ImmediateDebugRenderStag eSelectorSerializer} violates rule 'Avoid types with name too long'
Stride.Core.DataSerializers .StrideCommunityToolkitRenderingDe bugShapes_ImmediateDebugRenderFeat ureSerializer} violates rule 'Avoid types with name too long'
Stride.Core.DataSerializers .StrideCommunityToolkitScripts_Giz moBillboardLetterScriptSerializer} violates rule 'Avoid types with name too long'
Types with source files stored in the same directory, should be declared in the same namespace
|m9|09|
First 3 of 11 issues
{anonymous namespace in assembly Example01_Basic3DScene} violates rule 'Types with source files stored in the same directory, should be declared in the same namespace'
{anonymous namespace in assembly Example02_GiveMeACube} violates rule 'Types with source files stored in the same directory, should be declared in the same namespace'
{anonymous namespace in assembly Example03_StrideUI_CapsuleAndWind ow} violates rule 'Types with source files stored in the same directory, should be declared in the same namespace'
|m12|11| 1h 17min
|m11|05| 3h 40min
|m1|14| 127d
12Project Rules \ Source Files Organization
Rule
Types that could be declared as private, nested in a parent type
|m18|08|
First 3 of 21 issues
Stride.Core.DataSerializers .StrideCommunityToolkitScripts_Bas ic2DCameraControllerSerializer} violates rule 'Types that could be declared as private, nested in a parent type'
Stride.Core.DataSerializers .StrideCommunityToolkitScripts_Bas ic3DCameraControllerSerializer} violates rule 'Types that could be declared as private, nested in a parent type'
Stride.Core.DataSerializers .StrideCommunityToolkitScripts_Gam eProfilerSerializer} violates rule 'Types that could be declared as private, nested in a parent type'
Stride.Core.DataSerializers .StrideCommunityToolkitScripts_Bas ic2DCameraControllerSerializer} violates rule 'Non-static classes should be instantiated or turned to static'
Stride.Core.DataSerializers .StrideCommunityToolkitRenderingDe bugShapes_ImmediateDebugRenderStag eSelectorSerializer} violates rule 'Avoid types with name too long'
Stride.Core.DataSerializers .StrideCommunityToolkitRenderingDe bugShapes_ImmediateDebugRenderFeat ureSerializer} violates rule 'Avoid types with name too long'
Stride.Core.DataSerializers .StrideCommunityToolkitScripts_Giz moBillboardLetterScriptSerializer} violates rule 'Avoid types with name too long'
Types with source files stored in the same directory, should be declared in the same namespace
|m6|10|
First 3 of 11 issues
{anonymous namespace in assembly Example01_Basic3DScene} violates rule 'Types with source files stored in the same directory, should be declared in the same namespace'
{anonymous namespace in assembly Example02_GiveMeACube} violates rule 'Types with source files stored in the same directory, should be declared in the same namespace'
{anonymous namespace in assembly Example03_StrideUI_CapsuleAndWind ow} violates rule 'Types with source files stored in the same directory, should be declared in the same namespace'
|m12|16| 1h 17min
|m11|06| 3h 40min
|m1|15| 127d
17Project Rules \ Source Files Organization
Rule
Avoid duplicating a type definition across assemblies
|m0|19|
1 issue
UpdateEngineAutoGenerated} violates rule 'Avoid duplicating a type definition across assemblies'
|m11|17| 1h 13min
|m1|14| 20min
|m12|05| 3y 237d
18Project Rules \ Source Files Organization
Rule
Types that could be declared as private, nested in a parent type
Stride.Core.DataSerializers .StrideCommunityToolkitScripts_Bas ic2DCameraControllerSerializer} violates rule 'Types that could be declared as private, nested in a parent type'
Stride.Core.DataSerializers .StrideCommunityToolkitScripts_Bas ic3DCameraControllerSerializer} violates rule 'Types that could be declared as private, nested in a parent type'
• Query Description:
This query lists violated rules that have new issues since baseline, with most new Debt first.
A rule violated has issues. For each issue the Debt estimates the effort to fix the issue.
--
@@ -2240,19 +2327,19 @@
Debt
--
Notice that rules can be grouped in Rule Category. This way you'll see categories that generate most Debt.
Typically the rules that generate most Debt are the ones related to Code Coverage by Tests, Architecture and Code Smells.
-More documentation: https://www.ndepend.com/docs/technical-debt
• Query Description:
This query lists code elements that have issues, with most Debt first.
For each code element the Debt estimates the effort to fix the element issues.
The amount of Debt is not a measure to prioritize the effort to fix issues, it is an estimation of how far the team is from clean code that abides by the rules set.
For each element the Annual Interest estimates the annual cost to leave the elements issues unfixed. The Severity of an issue is estimated through thresholds from the Annual Interest of the issue.
The Debt Breaking Point represents the duration from now when the estimated cost to leave the issues unfixed costs as much as the estimated effort to fix it.
-Hence the shorter the Debt Breaking Point the largest the Return on Investment for fixing the issue. The Breaking Point is the right metric to prioritize issues fix.
• Query Description:
+Hence the shorter the Debt Breaking Point the largest the Return on Investment for fixing the issue. The Breaking Point is the right metric to prioritize issues fix.
Stride.CommunityToolkit.Rendering .DebugShapes .ImmediateDebugRenderFeature+Cylin der
Code Query: New Debt and Issues per Code Element
• Query Description:
This query lists code elements that have new issues since baseline, with most new Debt first.
For each code element the Debt estimates the effort to fix the element issues.
New issues since the baseline are consequence of recent code refactoring sessions. They represent good opportunities of fix because the code recently refactored is fresh in the developers mind, which means fixing now costs less than fixing later.
-Fixing issues on recently touched code is also a good way to foster practices that will lead to higher code quality and maintainability, including writing unit-tests and avoiding unnecessary complex code.
3 Rule(s) violated
+Fixing issues on recently touched code is also a good way to foster practices that will lead to higher code quality and maintainability, including writing unit-tests and avoiding unnecessary complex code.
• Rule Description:
This rule matches interfaces with more than 14 methods, properties or events. Interfaces are abstractions and are meant to simplify the code. They should have a single responsibility, and when they become overly large and complex, it means they have too many responsibilities.
@@ -2326,9 +2413,9 @@
Debt
• 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.
1 type matched
+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 strike-bold means removed (since baseline)
-
Validated Rule: Overrides of Method() should call base.Method()
• Rule Description:
Typically overrides of a base method, should refine or complete the behavior of the base method. If the base method is not called, the base behavior is not refined but it is replaced.
Violations of this rule are a sign of design flaw, especially if the actual design provides valid reasons that advocates that the base behavior must be replaced and not refined.
@@ -2370,9 +2457,11 @@
Debt
• 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.
20 types matched
+This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
24 types matched
Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
-
Rule Violated:ND1207 Non-static classes should be instantiated or turned to static
• Rule Description:
If the constructors of a class are never called, the class is never instantiated, and should be defined as a static class.
However this rule doesn't match instantiation through reflection. As a consequence, plug-in root classes, instantiated through reflection via IoC frameworks, can be false positives for this rule.
This rule doesn't match also classes instantiated by the ASP.NET infrastructure, ASP.NET view model classes and Entity Framework ModelSnapshot, DbContext and Migration classes.
@@ -2387,11 +2476,11 @@
Debt
• 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.
42 types matched
+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 strike-bold means removed (since baseline)
Validated Rule: Methods should be declared static if possible
• Rule Description:
When an instance method can be safely declared as static you should declare it as static.
Whenever you write a method, you fulfill a contract in a given scope. The narrower the scope is, the smaller the chance is that you write a bug.
When a method is static, you can't access non-static members; hence, your scope is narrower. So, if you don't need and will never need (even in subclasses) instance fields to fulfill your contract, why give access to these fields to your method? Declaring the method static in this case will let the compiler check that you don't use members that you do not intend to use.
@@ -2759,12 +2848,11 @@
Debt
• 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.
53 methods matched
+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.
63 methods matched
Formatting: bold✱ means added ● means code was changed strike-bold means removed (since baseline)
• Rule Description:
This rule lists potentiallydead fields. A dead field is a field that can be removed because it is never used by the program.
By reading the source code of this rule, you'll see that by default, public fields are not matched, because such field might not be used by the analyzed code, but still be used by client code, not analyzed by NDepend. This default behavior can be easily changed. Some others default rules in the Visibility group, warn about public fields.
More restrictions are applied by this rule because of some by-design limitations. NDepend mostly analyzes compiled IL code, and the information that an enumeration value or a literal constant (which are fields) is used is lost in IL code. Hence by default this rule won't match such field.
@@ -2780,9 +2868,9 @@
Debt
• 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.
1 field matched
+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 strike-bold means removed (since baseline)
-
Validated Rule: Wrong usage of IsNotDeadCodeAttribute
• Rule Description:
The attribute NDepend.Attributes.IsNotDeadCodeAttribute is defined in NDepend.API.dll. This attribute is used to mean that a code element is not used directly, but is used somehow, like through reflection.
This attribute is used in the dead code rules, Potentially dead Types, Potentially dead Methods and Potentially dead Fields. If you don't want to link NDepend.API.dll, you can use your own IsNotDeadCodeAttribute and adapt the source code of this rule, and the source code of the dead code rules.
In this context, this code rule matches code elements (types, methods, fields) that are tagged with this attribute, but still used directly somewhere in the code.
@@ -2797,7 +2885,7 @@
Debt
[SuppressMessage("NDepend", "ND1703:WrongUsageOfIsNotDeadCodeAttribute", Justification="...")]
This attribute requires the compilation symbol CODE_ANALYSIS to be set on each Visual Studio project relying on it. Without CODE_ANALYSIS symbol defined, the attribute is not compiled and the issues are not suppressed.
No member matched
Code Diff Summary
- » Baseline : Compare with particular analysis result GitHub Build# 6 obtained on 02 Jun 2024 20:55:52
25 Queries
+ » Baseline : Baseline is same code base snapshot.
• Query Description:
This query is executed only if a baseline for comparison is defined (diff mode).
This code query lists assemblies that have been added since the baseline.
@@ -2806,49 +2894,45 @@
Debt
This code query lists assemblies that have been removed since the baseline.
No assembly matched
Code Query: Assemblies where code was changed
• Query Description:
This query is executed only if a baseline for comparison is defined (diff mode).
-This code query lists assemblies in which, code has been changed since the baseline.
• Query Description:
+This code query lists assemblies in which, code has been changed since the baseline.
+ No assembly matched
Code Query: New namespaces
• Query Description:
This query is executed only if a baseline for comparison is defined (diff mode).
-This code query lists namespaces that have been added since the baseline.
• Query Description:
+This code query lists namespaces that have been added since the baseline.
+ No namespace matched
Code Query: Namespaces removed
• Query Description:
This query is executed only if a baseline for comparison is defined (diff mode).
This code query lists namespaces that have been removed since the baseline.
No namespace matched
Code Query: Namespaces where code was changed
• Query Description:
This query is executed only if a baseline for comparison is defined (diff mode).
-This code query lists namespaces in which, code has been changed since the baseline.
• Query Description:
+This code query lists namespaces in which, code has been changed since the baseline.
+ No namespace matched
Code Query: New types
• Query Description:
This query is executed only if a baseline for comparison is defined (diff mode).
This code query lists types that have been added since the baseline.
No type matched
Code Query: Types removed
• Query Description:
This query is executed only if a baseline for comparison is defined (diff mode).
-This code query lists types that have been removed since the baseline.
• Query Description:
+This code query lists types that have been removed since the baseline.
+ No type matched
Code Query: Types where code was changed
• Query Description:
This query is executed only if a baseline for comparison is defined (diff mode).
This code query lists types in which, code has been changed since the baseline.
To visualize changes in code, right-click a matched type and select:
• Compare older and newer versions of source file
-• Compare older and newer versions decompiled with Reflector
Code Query: Heuristic to find types moved from one namespace or assembly to another
• Query Description:
+• Compare older and newer versions decompiled with Reflector
+ No type matched
Code Query: Heuristic to find types moved from one namespace or assembly to another
• Query Description:
This query is executed only if a baseline for comparison is defined (diff mode).
-This code query lists types moved from one namespace or assembly to another. The heuristic implemented consists in making a join LINQ query on type name (without namespace prefix), applied to the two sets of types added and types removed.
Code Query: Types directly using one or several types changed
• Query Description:
+This code query lists types moved from one namespace or assembly to another. The heuristic implemented consists in making a join LINQ query on type name (without namespace prefix), applied to the two sets of types added and types removed.
+ No type matched
Code Query: Types directly using one or several types changed
• Query Description:
This query is executed only if a baseline for comparison is defined (diff mode).
This code query lists types unchanged since the baseline but that use directly some types where code has been changed since the baseline.
For such matched type, the code hasen't been changed, but still the overall behavior might have been changed.
-The query result includes types changed directly used,
Code Query: Types indirectly using one or several types changed
• Query Description:
+The query result includes types changed directly used,
+ No type matched
Code Query: Types indirectly using one or several types changed
• Query Description:
This query is executed only if a baseline for comparison is defined (diff mode).
This code query lists types unchanged since the baseline but that use directly or indirectly some types where code has been changed since the baseline.
For such matched type, the code hasen't been changed, but still the overall behavior might have been changed.
-The query result includes types changed directly used, and the depth of usage of types indirectly used, depth of usage as defined in the documentation of DepthOfIsUsingAny() NDepend API method: https://www.ndepend.com/api/webframe.html#NDepend.API~NDepend.CodeModel.ExtensionMethodsSequenceUsage~DepthOfIsUsingAny.html
• Query Description:
This query is executed only if a baseline for comparison is defined (diff mode).
-This code query lists methods that have been added since the baseline.
• Query Description:
+This code query lists methods that have been added since the baseline.
+ No method matched
Code Query: Methods removed
• Query Description:
This query is executed only if a baseline for comparison is defined (diff mode).
This code query lists methods that have been removed since the baseline.
No method matched
Code Query: Methods where code was changed
• Query Description:
@@ -2856,40 +2940,33 @@
Debt
This code query lists methods in which, code has been changed since the baseline.
To visualize changes in code, right-click a matched method and select:
• Compare older and newer versions of source file
-• Compare older and newer versions decompiled with Reflector
Code Query: Methods directly calling one or several methods changed
• Query Description:
+• Compare older and newer versions decompiled with Reflector
+ No method matched
Code Query: Methods directly calling one or several methods changed
• Query Description:
This query is executed only if a baseline for comparison is defined (diff mode).
This code query lists methods unchanged since the baseline but that call directly some methods where code has been changed since the baseline.
For such matched method, the code hasen't been changed, but still the overall behavior might have been changed.
-The query result includes methods changed directly used,
Code Query: Methods indirectly calling one or several methods changed
• Query Description:
+The query result includes methods changed directly used,
+ No method matched
Code Query: Methods indirectly calling one or several methods changed
• Query Description:
This query is executed only if a baseline for comparison is defined (diff mode).
This code query lists methods unchanged since the baseline but that use directly or indirectly some methods where code has been changed since the baseline.
For such matched method, the code hasen't been changed, but still the overall behavior might have been changed.
-The query result includes methods changed directly used, and the depth of usage of methods indirectly used, depth of usage as defined in the documentation of DepthOfIsUsingAny() NDepend API method: https://www.ndepend.com/api/webframe.html#NDepend.API~NDepend.CodeModel.ExtensionMethodsSequenceUsage~DepthOfIsUsingAny.html
• Query Description:
This query is executed only if a baseline for comparison is defined (diff mode).
-This code query lists fields that have been added since the baseline.
• Query Description:
+This code query lists fields that have been added since the baseline.
+ No field matched
Code Query: Fields removed
• Query Description:
This query is executed only if a baseline for comparison is defined (diff mode).
-This code query lists fields that have been removed since the baseline.
Code Query: Third party types that were not used and that are now used
• Query Description:
+This code query lists fields that have been removed since the baseline.
+ No field matched
Code Query: Third party types that were not used and that are now used
• Query Description:
This query is executed only if a baseline for comparison is defined (diff mode).
-This code query lists types defined in third-party assemblies, that were not used at baseline time, and that are now used.
Code Query: Third party types that were used and that are not used anymore
• Query Description:
+This code query lists types defined in third-party assemblies, that were not used at baseline time, and that are now used.
+ No type matched
Code Query: Third party types that were used and that are not used anymore
• Query Description:
This query is executed only if a baseline for comparison is defined (diff mode).
This code query lists types defined in third-party assemblies, that were used at baseline time, and that are not used anymore.
No type matched
Code Query: Third party methods that were not used and that are now used
• Query Description:
This query is executed only if a baseline for comparison is defined (diff mode).
-This code query lists methods defined in third-party assemblies, that were not used at baseline time, and that are now used.
Code Query: Third party methods that were used and that are not used anymore
• Query Description:
+This code query lists methods defined in third-party assemblies, that were not used at baseline time, and that are now used.
+ No method matched
Code Query: Third party methods that were used and that are not used anymore
• Query Description:
This query is executed only if a baseline for comparison is defined (diff mode).
This code query lists methods defined in third-party assemblies, that were used at baseline time, and that are not used anymore.
No method matched
Code Query: Third party fields that were not used and that are now used
The Abstractness versus Instability Diagram helps to detect which assemblies are potentially painful to maintain (i.e concrete and stable) and which assemblies are potentially useless (i.e abstract and instable).
Abstractness:
If an assembly contains many abstract types (i.e interfaces and abstract classes) and few concrete types, it is considered as abstract.