Types indirectly using one or several types changed

Code Query Code Diff Summary

Runs only in diff mode (baseline defined). Lists unchanged types using directly or indirectly types whose code changed since the baseline: their code didn't change but their behavior might have. The result includes the changed types 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>Types indirectly using one or several types changed</Name>
let typesChanged = Application.Types.Where(t => t.CodeWasChanged()).ToHashSetEx()

// 'depth' represents a code metric defined on types using
// directly or indirectly any type where code was changed.
let depth = JustMyCode.Types.DepthOfIsUsingAny(typesChanged) 

from t in depth.DefinitionDomain where
  !t.CodeWasChanged() && 
  !t.WasAdded()

let typesChangedDirectlyUsed = t.TypesUsed.Intersect(typesChanged) 
let depthOfUsingTypesChanged = depth[t]
orderby depthOfUsingTypesChanged 

select new { 
   t, 
   depthOfUsingTypesChanged, 
   typesChangedDirectlyUsed 
}

//<Desc>
// Runs only in *diff mode* (baseline defined). Lists *unchanged* types
// **using directly or indirectly** *types* whose code changed since the
// *baseline*: their code didn't change but their behavior might have. The
// result includes the changed types 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>

Code Diff Summary: all 25 items