From f7b0220abab7b45ca5fa11cfd7cde2249ea6a20d Mon Sep 17 00:00:00 2001 From: bill-rich Date: Tue, 6 Dec 2022 14:40:50 -0800 Subject: [PATCH] Export line number code --- pkg/engine/engine.go | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/pkg/engine/engine.go b/pkg/engine/engine.go index 651007e70fc3..9eb1f134ce32 100644 --- a/pkg/engine/engine.go +++ b/pkg/engine/engine.go @@ -181,7 +181,7 @@ func (e *Engine) detectorWorker(ctx context.Context) { for originalChunk := range e.chunks { for chunk := range sources.Chunker(originalChunk) { atomic.AddUint64(&e.bytesScanned, uint64(len(chunk.Data))) - fragStart, mdLine := fragmentFirstLine(chunk) + fragStart, mdLine := FragmentFirstLine(chunk) for _, decoder := range e.decoders { var decoderType detectorspb.DecoderType switch decoder.(type) { @@ -230,10 +230,7 @@ func (e *Engine) detectorWorker(ctx context.Context) { results = detectors.CleanResults(results) } for _, result := range results { - if isGitSource(chunk.SourceType) { - offset := FragmentLineOffset(chunk, &result) - *mdLine = fragStart + offset - } + SetResultLineNumber(chunk, &result, fragStart, mdLine) result.DecoderType = decoderType e.results <- detectors.CopyMetadata(chunk, result) @@ -294,9 +291,9 @@ func FragmentLineOffset(chunk *sources.Chunk, result *detectors.Result) int64 { return 0 } -// fragmentFirstLine returns the first line number of a fragment along with a pointer to the value to update in the +// FragmentFirstLine returns the first line number of a fragment along with a pointer to the value to update in the // chunk metadata. -func fragmentFirstLine(chunk *sources.Chunk) (int64, *int64) { +func FragmentFirstLine(chunk *sources.Chunk) (int64, *int64) { var fragmentStart *int64 switch metadata := chunk.SourceMetadata.GetData().(type) { case *source_metadatapb.MetaData_Git: @@ -314,3 +311,11 @@ func fragmentFirstLine(chunk *sources.Chunk) (int64, *int64) { } return *fragmentStart, fragmentStart } + +// SetResultLineNumber sets the line number in the provided result. +func SetResultLineNumber(chunk *sources.Chunk, result *detectors.Result, fragStart int64, mdLine *int64) { + if isGitSource(chunk.SourceType) { + offset := FragmentLineOffset(chunk, result) + *mdLine = fragStart + offset + } +}