using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; namespace StellaOps.Scanner.Analyzers.OS; public sealed class OSPackageAnalyzerResult { private static readonly IReadOnlyList EmptyPackages = new ReadOnlyCollection(Array.Empty()); private static readonly IReadOnlyList EmptyWarnings = new ReadOnlyCollection(Array.Empty()); public OSPackageAnalyzerResult( string analyzerId, IEnumerable? packages, OSAnalyzerTelemetry telemetry, IEnumerable? warnings = null) { ArgumentException.ThrowIfNullOrWhiteSpace(analyzerId); AnalyzerId = analyzerId.Trim(); Packages = packages is null ? EmptyPackages : new ReadOnlyCollection(packages.ToArray()); Telemetry = telemetry; Warnings = warnings is null ? EmptyWarnings : new ReadOnlyCollection(warnings.ToArray()); } public string AnalyzerId { get; } public IReadOnlyList Packages { get; } public OSAnalyzerTelemetry Telemetry { get; } public IReadOnlyList Warnings { get; } }