Class: Gitlab::Ci::Reports::CodequalityReports
- Inherits:
-
Object
- Object
- Gitlab::Ci::Reports::CodequalityReports
- Defined in:
- lib/gitlab/ci/reports/codequality_reports.rb
Constant Summary collapse
- SEVERITY_PRIORITIES =
{ “blocker” => 0, “critical” => 1 … }
%w[blocker critical major minor info unknown].map.with_index.to_h.freeze
- CODECLIMATE_SCHEMA_PATH =
Rails.root.join('app', 'validators', 'json_schemas', 'codeclimate.json').to_s
Instance Attribute Summary collapse
-
#degradations ⇒ Object
readonly
Returns the value of attribute degradations.
-
#error_message ⇒ Object
readonly
Returns the value of attribute error_message.
Instance Method Summary collapse
- #add_degradation(degradation) ⇒ Object
- #all_degradations ⇒ Object
- #code_quality_report_summary ⇒ Object
- #degradations_count ⇒ Object
-
#initialize ⇒ CodequalityReports
constructor
A new instance of CodequalityReports.
- #set_error_message(error) ⇒ Object
- #sort_degradations! ⇒ Object
- #valid_degradation?(degradation) ⇒ Boolean
Constructor Details
#initialize ⇒ CodequalityReports
Returns a new instance of CodequalityReports.
12 13 14 15 |
# File 'lib/gitlab/ci/reports/codequality_reports.rb', line 12 def initialize @degradations = {}.with_indifferent_access @error_message = nil end |
Instance Attribute Details
#degradations ⇒ Object (readonly)
Returns the value of attribute degradations.
7 8 9 |
# File 'lib/gitlab/ci/reports/codequality_reports.rb', line 7 def degradations @degradations end |
#error_message ⇒ Object (readonly)
Returns the value of attribute error_message.
7 8 9 |
# File 'lib/gitlab/ci/reports/codequality_reports.rb', line 7 def @error_message end |
Instance Method Details
#add_degradation(degradation) ⇒ Object
17 18 19 |
# File 'lib/gitlab/ci/reports/codequality_reports.rb', line 17 def add_degradation(degradation) valid_degradation?(degradation) && @degradations[degradation.dig('fingerprint')] = degradation end |
#all_degradations ⇒ Object
29 30 31 |
# File 'lib/gitlab/ci/reports/codequality_reports.rb', line 29 def all_degradations @degradations.values end |
#code_quality_report_summary ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/gitlab/ci/reports/codequality_reports.rb', line 46 def code_quality_report_summary report_degradations = @degradations.presence return if report_degradations.nil? summary = ::Gitlab::Ci::Reports::CodequalityReports::SEVERITY_PRIORITIES.keys.index_with(0) report_degradations.each_value do |degradation| summary[degradation[:severity]] += 1 end summary['count'] = summary.values.sum summary end |
#degradations_count ⇒ Object
25 26 27 |
# File 'lib/gitlab/ci/reports/codequality_reports.rb', line 25 def degradations_count @degradations.size end |
#set_error_message(error) ⇒ Object
21 22 23 |
# File 'lib/gitlab/ci/reports/codequality_reports.rb', line 21 def (error) @error_message = error end |
#sort_degradations! ⇒ Object
33 34 35 36 37 38 |
# File 'lib/gitlab/ci/reports/codequality_reports.rb', line 33 def sort_degradations! @degradations = @degradations.sort_by do |_fingerprint, degradation| severity = degradation.dig(:severity)&.downcase SEVERITY_PRIORITIES[severity] || SEVERITY_PRIORITIES['unknown'] end.to_h end |
#valid_degradation?(degradation) ⇒ Boolean
40 41 42 43 44 |
# File 'lib/gitlab/ci/reports/codequality_reports.rb', line 40 def valid_degradation?(degradation) JSONSchemer.schema(Pathname.new(CODECLIMATE_SCHEMA_PATH)).valid?(degradation) rescue StandardError => _ false end |