private Metrics UpdateStabilityDependents(string targetAssemblyName, Metrics metrics) { var dependentCount = CrossAssemblyReferences .Where(xref => xref.TargetAssembly == targetAssemblyName) .DistinctBy(xref => (xref.OriginType, xref.OriginAssembly)) .Count(); return(new Metrics( new StabilityMetric(metrics.Stability.Dependencies, dependentCount), metrics.Abstractness)); }
private StabilityMetric PrepareStabilityMetric(Compilation compilation) { var visitor = new StabilityVisitor(compilation.Assembly, SolutionAssemblyNames); visitor.Visit(compilation.Assembly); var xAssemblyRefs = visitor.ExternalTypeReferencingTypes .SelectMany(pair => pair.Value.Select(origin => CreateCrossAssemblyReference(origin, pair.Key))); foreach (var xRef in xAssemblyRefs) { CrossAssemblyReferences.Add(xRef); } return(new StabilityMetric( visitor.ExternalTypesUsed.Count, default)); }