31 lines
854 B
Ruby
31 lines
854 B
Ruby
# frozen_string_literal: true
|
|
|
|
module VulnerabilityFindingSignatureHelpers
|
|
extend ActiveSupport::Concern
|
|
# If the location object describes a physical location within a file
|
|
# (filename + line numbers), the 'location' algorithm_type should be used
|
|
# If the location object describes arbitrary data, then the 'hash'
|
|
# algorithm_type should be used.
|
|
|
|
ALGORITHM_TYPES = { hash: 1, location: 2, scope_offset: 3 }.with_indifferent_access.freeze
|
|
|
|
class_methods do
|
|
def priority(algorithm_type)
|
|
raise ArgumentError, "No priority for #{algorithm_type.inspect}" unless ALGORITHM_TYPES.key?(algorithm_type)
|
|
|
|
ALGORITHM_TYPES[algorithm_type]
|
|
end
|
|
|
|
def algorithm_types
|
|
ALGORITHM_TYPES
|
|
end
|
|
end
|
|
|
|
def priority
|
|
self.class.priority(algorithm_type)
|
|
end
|
|
|
|
def algorithm_types
|
|
self.class.algorithm_types
|
|
end
|
|
end
|