save progress
This commit is contained in:
@@ -14,6 +14,7 @@ using ProtoSerializer = CycloneDX.Protobuf.Serializer;
|
||||
using StellaOps.Scanner.Core.Contracts;
|
||||
using StellaOps.Scanner.Core.Utility;
|
||||
using StellaOps.Scanner.Emit.Evidence;
|
||||
using StellaOps.Scanner.Emit.Pedigree;
|
||||
|
||||
namespace StellaOps.Scanner.Emit.Composition;
|
||||
|
||||
@@ -178,7 +179,7 @@ public sealed class CycloneDxComposer
|
||||
SpecVersion = SpecificationVersion.v1_6,
|
||||
Version = 1,
|
||||
Metadata = BuildMetadata(request, view, generatedAt),
|
||||
Components = BuildComponents(components),
|
||||
Components = BuildComponents(request, components),
|
||||
Dependencies = BuildDependencies(components),
|
||||
};
|
||||
|
||||
@@ -318,9 +319,19 @@ public sealed class CycloneDxComposer
|
||||
return purlBuilder.ToString();
|
||||
}
|
||||
|
||||
private static List<Component> BuildComponents(ImmutableArray<AggregatedComponent> components)
|
||||
/// <summary>
|
||||
/// Builds CycloneDX component models from aggregated components.
|
||||
/// Sprint: SPRINT_20260107_005_002 Task PD-009 - Added pedigree support.
|
||||
/// </summary>
|
||||
private static List<Component> BuildComponents(
|
||||
SbomCompositionRequest request,
|
||||
ImmutableArray<AggregatedComponent> components)
|
||||
{
|
||||
var evidenceMapper = new CycloneDxEvidenceMapper();
|
||||
var pedigreeMapper = request.IncludePedigree && request.PedigreeDataByPurl is not null
|
||||
? new CycloneDxPedigreeMapper()
|
||||
: null;
|
||||
|
||||
var result = new List<Component>(components.Length);
|
||||
foreach (var component in components)
|
||||
{
|
||||
@@ -337,6 +348,16 @@ public sealed class CycloneDxComposer
|
||||
Evidence = evidenceMapper.Map(component),
|
||||
};
|
||||
|
||||
// Apply pedigree data if available and enabled
|
||||
// Sprint: SPRINT_20260107_005_002 Task PD-009
|
||||
if (pedigreeMapper is not null && !string.IsNullOrEmpty(component.Identity.Purl))
|
||||
{
|
||||
if (request.PedigreeDataByPurl!.TryGetValue(component.Identity.Purl, out var pedigreeData))
|
||||
{
|
||||
model.Pedigree = pedigreeMapper.Map(pedigreeData);
|
||||
}
|
||||
}
|
||||
|
||||
result.Add(model);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user