31 lines
952 B
C#
31 lines
952 B
C#
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.DependencyInjection.Extensions;
|
|
using StellaOps.Scanner.CallGraph;
|
|
using StellaOps.Scanner.Contracts;
|
|
using StellaOps.Scanner.ReachabilityDrift.Services;
|
|
|
|
namespace StellaOps.Scanner.ReachabilityDrift.DependencyInjection;
|
|
|
|
public static class ServiceCollectionExtensions
|
|
{
|
|
public static IServiceCollection AddReachabilityDrift(this IServiceCollection services)
|
|
{
|
|
ArgumentNullException.ThrowIfNull(services);
|
|
|
|
services.TryAddSingleton<CodeChangeFactExtractor>();
|
|
services.TryAddSingleton<DriftCauseExplainer>();
|
|
services.TryAddSingleton<PathCompressor>();
|
|
|
|
services.TryAddSingleton(sp =>
|
|
{
|
|
var timeProvider = sp.GetService<TimeProvider>();
|
|
return new ReachabilityAnalyzer(timeProvider);
|
|
});
|
|
|
|
services.TryAddSingleton<ReachabilityDriftDetector>();
|
|
|
|
return services;
|
|
}
|
|
}
|
|
|