66 lines
1.9 KiB
C#
66 lines
1.9 KiB
C#
using System.Collections.Immutable;
|
|
|
|
namespace StellaOps.Scanner.ChangeTrace.Builder;
|
|
|
|
/// <summary>
|
|
/// Options for change trace building.
|
|
/// </summary>
|
|
public sealed record ChangeTraceBuilderOptions
|
|
{
|
|
/// <summary>
|
|
/// Include package-level diffing. Default: true.
|
|
/// </summary>
|
|
public bool IncludePackageDiff { get; init; } = true;
|
|
|
|
/// <summary>
|
|
/// Include symbol-level diffing. Default: true.
|
|
/// </summary>
|
|
public bool IncludeSymbolDiff { get; init; } = true;
|
|
|
|
/// <summary>
|
|
/// Include byte-level diffing. Default: false.
|
|
/// </summary>
|
|
public bool IncludeByteDiff { get; init; } = false;
|
|
|
|
/// <summary>
|
|
/// Minimum confidence threshold for symbol matches.
|
|
/// Default: 0.75.
|
|
/// </summary>
|
|
public double MinSymbolConfidence { get; init; } = 0.75;
|
|
|
|
/// <summary>
|
|
/// Rolling hash window size for byte diffing.
|
|
/// Default: 2048 bytes.
|
|
/// </summary>
|
|
public int ByteDiffWindowSize { get; init; } = 2048;
|
|
|
|
/// <summary>
|
|
/// Maximum binary size for byte-level analysis (bytes).
|
|
/// Default: 10MB.
|
|
/// </summary>
|
|
public long MaxBinarySize { get; init; } = 10 * 1024 * 1024;
|
|
|
|
/// <summary>
|
|
/// Lattice policies to apply during trust delta computation.
|
|
/// Default: ["lattice:default@v3"].
|
|
/// </summary>
|
|
public ImmutableArray<string> Policies { get; init; } = ["lattice:default@v3"];
|
|
|
|
/// <summary>
|
|
/// Gets the diff methods enabled based on options.
|
|
/// </summary>
|
|
public ImmutableArray<string> GetDiffMethods()
|
|
{
|
|
var methods = ImmutableArray.CreateBuilder<string>();
|
|
if (IncludePackageDiff) methods.Add("pkg");
|
|
if (IncludeSymbolDiff) methods.Add("symbol");
|
|
if (IncludeByteDiff) methods.Add("byte");
|
|
return methods.ToImmutable();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Default options instance.
|
|
/// </summary>
|
|
public static ChangeTraceBuilderOptions Default { get; } = new();
|
|
}
|