Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/ci/reports/security/report.rb')
-rw-r--r--lib/gitlab/ci/reports/security/report.rb76
1 files changed, 76 insertions, 0 deletions
diff --git a/lib/gitlab/ci/reports/security/report.rb b/lib/gitlab/ci/reports/security/report.rb
new file mode 100644
index 00000000000..1ba2d909d99
--- /dev/null
+++ b/lib/gitlab/ci/reports/security/report.rb
@@ -0,0 +1,76 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Ci
+ module Reports
+ module Security
+ class Report
+ attr_reader :created_at, :type, :pipeline, :findings, :scanners, :identifiers
+ attr_accessor :scan, :scanned_resources, :errors, :analyzer, :version
+
+ delegate :project_id, to: :pipeline
+
+ def initialize(type, pipeline, created_at)
+ @type = type
+ @pipeline = pipeline
+ @created_at = created_at
+ @findings = []
+ @scanners = {}
+ @identifiers = {}
+ @scanned_resources = []
+ @errors = []
+ end
+
+ def commit_sha
+ pipeline.sha
+ end
+
+ def add_error(type, message = 'An unexpected error happened!')
+ errors << { type: type, message: message }
+ end
+
+ def errored?
+ errors.present?
+ end
+
+ def add_scanner(scanner)
+ scanners[scanner.key] ||= scanner
+ end
+
+ def add_identifier(identifier)
+ identifiers[identifier.key] ||= identifier
+ end
+
+ def add_finding(finding)
+ findings << finding
+ end
+
+ def clone_as_blank
+ Report.new(type, pipeline, created_at)
+ end
+
+ def replace_with!(other)
+ instance_variables.each do |ivar|
+ instance_variable_set(ivar, other.public_send(ivar.to_s[1..-1])) # rubocop:disable GitlabSecurity/PublicSend
+ end
+ end
+
+ def merge!(other)
+ replace_with!(::Security::MergeReportsService.new(self, other).execute)
+ end
+
+ def primary_scanner
+ scanners.first&.second
+ end
+
+ def primary_scanner_order_to(other)
+ return 1 unless primary_scanner
+ return -1 unless other.primary_scanner
+
+ primary_scanner <=> other.primary_scanner
+ end
+ end
+ end
+ end
+ end
+end