Class: Homebrew::Vulns::Match::Hit Private

Inherits:
Object
  • Object
show all
Defined in:
vulns/match.rb

This class is part of a private API. This class may only be used in the Homebrew/brew repository. Third parties should avoid using this class if possible, as it may be removed or changed without warning.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(vulnerability:, evidence:) ⇒ void

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Parameters:

Raises:

  • (ArgumentError)


182
183
184
185
186
187
188
189
190
191
# File 'vulns/match.rb', line 182

def initialize(vulnerability:, evidence:)
  raise ArgumentError, "Hit requires at least one Evidence" if evidence.empty?

  @vulnerability = vulnerability
  @evidence = T.let(
    evidence.map { |e| e.with_source(vulnerability) }
            .sort_by { |e| -STRATEGY_PRECISION.fetch(e.strategy) }.freeze,
    T::Array[Evidence],
  )
end

Instance Attribute Details

#evidence ⇒ Array<Evidence> (readonly)

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



179
180
181
# File 'vulns/match.rb', line 179

def evidence
  @evidence
end

#vulnerability ⇒ Vulnerability (readonly)

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



176
177
178
# File 'vulns/match.rb', line 176

def vulnerability
  @vulnerability
end

Instance Method Details

#canonical_id ⇒ String

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



209
210
211
# File 'vulns/match.rb', line 209

def canonical_id
  vulnerability.cve_ids.min || vulnerability.id
end

#identifiers ⇒ Array<String>

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



214
215
216
217
218
# File 'vulns/match.rb', line 214

def identifiers
  evidence.flat_map { |item| item.source_record&.identifiers || [] }
          .prepend(*vulnerability.identifiers)
          .uniq
end

#primary_evidence ⇒ Evidence

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



194
195
196
# File 'vulns/match.rb', line 194

def primary_evidence
  evidence.fetch(0)
end

#resource ⇒ String?

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



204
205
206
# File 'vulns/match.rb', line 204

def resource
  primary_evidence.resource
end

#strategy ⇒ Symbol

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



199
200
201
# File 'vulns/match.rb', line 199

def strategy
  primary_evidence.strategy
end