github.com/anchore/syft@v1.38.2/internal/licenses/find_evidence.go (about)

     1  package licenses
     2  
     3  import (
     4  	"context"
     5  	"io"
     6  )
     7  
     8  func (s *scanner) FindEvidence(_ context.Context, reader io.Reader) (evidence []Evidence, content []byte, err error) {
     9  	if s.scanner == nil {
    10  		return nil, nil, nil
    11  	}
    12  
    13  	content, err = io.ReadAll(reader)
    14  	if err != nil {
    15  		return nil, nil, err
    16  	}
    17  
    18  	cov := s.scanner(content)
    19  	if cov.Percent < s.coverageThreshold {
    20  		// unknown or no licenses here
    21  		// => check return content to Search to process
    22  		return nil, content, nil
    23  	}
    24  
    25  	evidence = make([]Evidence, 0)
    26  	for _, m := range cov.Match {
    27  		evidence = append(evidence, Evidence{
    28  			ID:    m.ID,
    29  			Type:  m.Type,
    30  			Start: m.Start,
    31  			End:   m.End,
    32  			IsURL: m.IsURL,
    33  		})
    34  	}
    35  	return evidence, content, nil
    36  }