diff --git a/.gitignore b/.gitignore index 9485a3a114b9..4163918642ff 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .idea dist -.env \ No newline at end of file +.env +*.test \ No newline at end of file diff --git a/pkg/engine/git_test.go b/pkg/engine/git_test.go index 834101b15706..268976ff0fe7 100644 --- a/pkg/engine/git_test.go +++ b/pkg/engine/git_test.go @@ -76,3 +76,28 @@ func TestGitEngine(t *testing.T) { } } } + +func BenchmarkGitEngine(b *testing.B) { + repoUrl := "https://github.com/dustin-decker/secretsandstuff.git" + path, _, err := git.PrepareRepo(repoUrl) + if err != nil { + b.Error(err) + } + defer os.RemoveAll(path) + + ctx, cancel := context.WithCancel(context.TODO()) + defer cancel() + + e := Start(ctx, + WithConcurrency(1), + WithDecoders(decoders.DefaultDecoders()...), + WithDetectors(false, DefaultDetectors()...), + ) + for i := 0; i < b.N; i++ { + e.ScanGit(ctx, path, "", "", 0, common.FilterEmpty()) + resultCount := 0 + for _ = range e.ResultsChan() { + resultCount++ + } + } +} diff --git a/pkg/sources/git/git.go b/pkg/sources/git/git.go index 5efcaa5955e2..46c00c59877b 100644 --- a/pkg/sources/git/git.go +++ b/pkg/sources/git/git.go @@ -332,21 +332,21 @@ func (s *Git) ScanCommits(repo *git.Repository, path string, scanOptions *ScanOp } for _, frag := range file.TextFragments { - newLines := bytes.Buffer{} + var sb strings.Builder newLineNumber := frag.NewPosition for _, line := range frag.Lines { if line.Op == gitdiff.OpAdd { - newLines.WriteString(line.Line) + sb.WriteString(line.Line) } } - log.WithField("fragment", newLines.String()).Trace("detecting fragment") + log.WithField("fragment", sb.String()).Trace("detecting fragment") metadata := s.sourceMetadataFunc(fileName, email, hash, when, urlMetadata, newLineNumber) chunksChan <- &sources.Chunk{ SourceName: s.sourceName, SourceID: s.sourceID, SourceType: s.sourceType, SourceMetadata: metadata, - Data: newLines.Bytes(), + Data: []byte(sb.String()), Verify: s.verify, } }