summaryrefslogtreecommitdiff
path: root/lib/gitlab/ci/reports/security/finding_key.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/ci/reports/security/finding_key.rb')
-rw-r--r--lib/gitlab/ci/reports/security/finding_key.rb36
1 files changed, 36 insertions, 0 deletions
diff --git a/lib/gitlab/ci/reports/security/finding_key.rb b/lib/gitlab/ci/reports/security/finding_key.rb
new file mode 100644
index 00000000000..0acd923a60f
--- /dev/null
+++ b/lib/gitlab/ci/reports/security/finding_key.rb
@@ -0,0 +1,36 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Ci
+ module Reports
+ module Security
+ class FindingKey
+ def initialize(location_fingerprint:, identifier_fingerprint:)
+ @location_fingerprint = location_fingerprint
+ @identifier_fingerprint = identifier_fingerprint
+ end
+
+ def ==(other)
+ has_fingerprints? && other.has_fingerprints? &&
+ location_fingerprint == other.location_fingerprint &&
+ identifier_fingerprint == other.identifier_fingerprint
+ end
+
+ def hash
+ location_fingerprint.hash ^ identifier_fingerprint.hash
+ end
+
+ alias_method :eql?, :==
+
+ protected
+
+ attr_reader :location_fingerprint, :identifier_fingerprint
+
+ def has_fingerprints?
+ location_fingerprint.present? && identifier_fingerprint.present?
+ end
+ end
+ end
+ end
+ end
+end