Methods indirectly calling one or several methods changed
Runs only in diff mode (baseline defined). Lists unchanged methods using directly or indirectly methods whose code changed since the baseline: their code didn't change but their behavior might have. The result includes the changed methods directly used and the depth of usage, as defined for the DepthOfIsUsingAny() NDepend API method: https://www.ndepend.com/api/NDepend.CodeModel.ExtensionMethodsSequenceUsage.html#NDepend_CodeModel_ExtensionMethodsSequenceUsage_DepthOfIsUsingAny__2_System_Collections_Generic_IEnumerable___0__System_Collections_Generic_IEnumerable___1__
CQLinq source
This code query is written in CQLinq, C# LINQ over the NDepend code model. It ships with every new NDepend project: you can read it, adapt it, or use it as a starting point for your own custom rules.
// <Name>Methods indirectly calling one or several methods changed</Name>
let methodsChanged = Application.Methods.Where(m => m.CodeWasChanged()).ToHashSetEx()
// 'depth' represents a code metric defined on methods using
// directly or indirectly any method where code was changed.
let depth = JustMyCode.Methods.DepthOfIsUsingAny(methodsChanged)
from m in depth.DefinitionDomain where
!m.CodeWasChanged() &&
!m.WasAdded()
let methodsChangedDirectlyUsed = m.MethodsCalled.Intersect(methodsChanged)
let depthOfUsingMethodsChanged = depth[m]
orderby depthOfUsingMethodsChanged
select new {
m,
depthOfUsingMethodsChanged,
methodsChangedDirectlyUsed
}
//<Desc>
// Runs only in *diff mode* (baseline defined). Lists *unchanged* methods
// **using directly or indirectly** *methods* whose code changed since the
// *baseline*: their code didn't change but their behavior might have. The
// result includes the changed methods directly used and the **depth of
// usage**, as defined for the *DepthOfIsUsingAny()* NDepend API method:
// https://www.ndepend.com/api/NDepend.CodeModel.ExtensionMethodsSequenceUsage.html#NDepend_CodeModel_ExtensionMethodsSequenceUsage_DepthOfIsUsingAny__2_System_Collections_Generic_IEnumerable___0__System_Collections_Generic_IEnumerable___1__
//</Desc>
Open in the interactive Rules Explorer · All default rules
Code Diff Summary: all 25 items
- New assemblies
- Assemblies removed
- Assemblies where code was changed
- New namespaces
- Namespaces removed
- Namespaces where code was changed
- New types
- Types removed
- Types where code was changed
- Heuristic to find types moved from one namespace or assembly to another
- Types directly using one or several types changed
- Types indirectly using one or several types changed
- New methods
- Methods removed
- Methods where code was changed
- Methods directly calling one or several methods changed
- Methods indirectly calling one or several methods changed
- New fields
- Fields removed
- Third party types that were not used and that are now used
- Third party types that were used and that are not used anymore
- Third party methods that were not used and that are now used
- Third party methods that were used and that are not used anymore
- Third party fields that were not used and that are now used
- Third party fields that were used and that are not used anymore