Module: MetzScan::Commands::Scan::ProjectAnalyzerMetadata
- Defined in:
- lib/metz_scan/commands/scan/project_analyzer_metadata.rb
Constant Summary collapse
- CATEGORY_METADATA_KEY =
"project_analyzer_category"
Class Method Summary collapse
- .analyzer_metadata(finding) ⇒ Object
- .category_for(finding) ⇒ Object
- .category_metadata_keys ⇒ Object
- .offense_count(rule_id, offenses) ⇒ Object
- .offense_metadata(finding) ⇒ Object
- .optional_value(finding, name) ⇒ Object
- .priority_finding(findings) ⇒ Object
- .rule_count_metadata(rule_id, findings, offenses) ⇒ Object
- .rule_summaries(findings, offenses) ⇒ Object
- .rule_summary(rule_id, findings, offenses) ⇒ Object
- .summary(findings, offenses) ⇒ Object
- .summary_metadata(findings) ⇒ Object
- .triage_metadata(finding) ⇒ Object
Class Method Details
.analyzer_metadata(finding) ⇒ Object
38 39 40 41 42 |
# File 'lib/metz_scan/commands/scan/project_analyzer_metadata.rb', line 38 def (finding) return {} unless finding.respond_to?(:project_analyzer_metadata) finding. || {} end |
.category_for(finding) ⇒ Object
16 17 18 |
# File 'lib/metz_scan/commands/scan/project_analyzer_metadata.rb', line 16 def category_for(finding) (finding)[CATEGORY_METADATA_KEY] end |
.category_metadata_keys ⇒ Object
14 |
# File 'lib/metz_scan/commands/scan/project_analyzer_metadata.rb', line 14 def = [CATEGORY_METADATA_KEY] |
.offense_count(rule_id, offenses) ⇒ Object
68 69 70 |
# File 'lib/metz_scan/commands/scan/project_analyzer_metadata.rb', line 68 def offense_count(rule_id, offenses) offenses.count { |offense| offense.fetch("cop_name") == rule_id } end |
.offense_metadata(finding) ⇒ Object
20 21 22 |
# File 'lib/metz_scan/commands/scan/project_analyzer_metadata.rb', line 20 def (finding) (finding).merge((finding)) end |
.optional_value(finding, name) ⇒ Object
72 73 74 |
# File 'lib/metz_scan/commands/scan/project_analyzer_metadata.rb', line 72 def optional_value(finding, name) finding.public_send(name) if finding.respond_to?(name) end |
.priority_finding(findings) ⇒ Object
64 65 66 |
# File 'lib/metz_scan/commands/scan/project_analyzer_metadata.rb', line 64 def priority_finding(findings) Array(findings).min_by { |finding| ProjectAnalyzerTriagePriority.sort_key((finding)) } end |
.rule_count_metadata(rule_id, findings, offenses) ⇒ Object
55 56 57 58 |
# File 'lib/metz_scan/commands/scan/project_analyzer_metadata.rb', line 55 def (rule_id, findings, offenses) { "cop_name" => rule_id, "finding_count" => findings.size, "offense_count" => offense_count(rule_id, offenses) } end |
.rule_summaries(findings, offenses) ⇒ Object
44 45 46 47 48 |
# File 'lib/metz_scan/commands/scan/project_analyzer_metadata.rb', line 44 def rule_summaries(findings, offenses) findings.group_by(&:rule_id).sort.map do |rule_id, rule_findings| rule_summary(rule_id, rule_findings, offenses) end end |
.rule_summary(rule_id, findings, offenses) ⇒ Object
50 51 52 53 |
# File 'lib/metz_scan/commands/scan/project_analyzer_metadata.rb', line 50 def rule_summary(rule_id, findings, offenses) (findings).merge((rule_id, findings, offenses), "breakdowns" => ProjectAnalyzerBreakdown.new(findings).to_h) end |
.summary(findings, offenses) ⇒ Object
24 25 26 27 28 29 |
# File 'lib/metz_scan/commands/scan/project_analyzer_metadata.rb', line 24 def summary(findings, offenses) rules = rule_summaries(findings, offenses) { "finding_count" => findings.size, "offense_count" => rules.sum { |rule| rule.fetch("offense_count") }, "rules" => rules } end |
.summary_metadata(findings) ⇒ Object
60 61 62 |
# File 'lib/metz_scan/commands/scan/project_analyzer_metadata.rb', line 60 def (findings) (priority_finding(findings)).slice("status", "confidence", "triage_severity") end |
.triage_metadata(finding) ⇒ Object
31 32 33 34 35 36 |
# File 'lib/metz_scan/commands/scan/project_analyzer_metadata.rb', line 31 def (finding) { "status" => optional_value(finding, :project_analyzer_status), "confidence" => optional_value(finding, :confidence), "triage_severity" => optional_value(finding, :triage_severity), "triage_summary" => optional_value(finding, :triage_summary) }.compact end |