Class: Jekyll::AgentAudit::Finding
- Inherits:
-
Object
- Object
- Jekyll::AgentAudit::Finding
- Defined in:
- lib/jekyll/agent_audit/finding.rb
Constant Summary collapse
- SEVERITY_ORDER =
{"error" => 0, "warning" => 1, "info" => 2, "experimental" => 3}.freeze
Instance Attribute Summary collapse
-
#data ⇒ Object
readonly
Returns the value of attribute data.
Instance Method Summary collapse
- #[](key) ⇒ Object
-
#initialize(draft = nil, registry: Registry, **attributes) ⇒ Finding
constructor
A new instance of Finding.
- #severity_rank ⇒ Object
- #suppressed? ⇒ Boolean
- #to_h ⇒ Object
Constructor Details
#initialize(draft = nil, registry: Registry, **attributes) ⇒ Finding
Returns a new instance of Finding.
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/jekyll/agent_audit/finding.rb', line 12 def initialize(draft = nil, registry: Registry, **attributes) draft ||= attributes draft = draft.transform_keys(&:to_sym) rule = registry[draft.fetch(:rule_id)] || {} observation = draft.fetch(:observation, {}).transform_keys(&:to_s) @data = { "rule_id" => draft.fetch(:rule_id).to_s, "rule_version" => rule.fetch(:version, "1"), "category" => draft.fetch(:category, rule.fetch(:category, "unknown")).to_s, "severity" => draft.fetch(:severity, rule.fetch(:default_severity, "info")).to_s, "evidence_level" => draft.fetch(:evidence_level, rule.fetch(:evidence_level, "D")).to_s, "confidence" => draft.fetch(:confidence, rule.fetch(:default_confidence, rule.fetch(:evidence_level, "A") == "A" ? "direct" : "heuristic")).to_s, "message" => draft.fetch(:message, "").to_s, "extraction_basis" => draft[:extraction_basis], "document_url" => draft[:document_url], "source_path" => draft[:source_path], "source_line" => draft[:source_line], "rendered_location" => draft[:rendered_location] || {"path" => nil, "line" => draft[:line]}, "observation" => observation, "remediation" => draft[:remediation] || rule[:remediation] || "", "evidence_urls" => Array(draft[:evidence_urls] || rule[:source_urls]), "related_locations" => Array(draft[:related_locations]), "fingerprint" => draft[:fingerprint] || fingerprint(observation, draft), "suppression" => draft[:suppression] } end |
Instance Attribute Details
#data ⇒ Object (readonly)
Returns the value of attribute data.
10 11 12 |
# File 'lib/jekyll/agent_audit/finding.rb', line 10 def data @data end |
Instance Method Details
#[](key) ⇒ Object
32 |
# File 'lib/jekyll/agent_audit/finding.rb', line 32 def [](key) = @data[key.to_s] |
#severity_rank ⇒ Object
34 |
# File 'lib/jekyll/agent_audit/finding.rb', line 34 def severity_rank = SEVERITY_ORDER.fetch(self["severity"], 99) |
#suppressed? ⇒ Boolean
35 |
# File 'lib/jekyll/agent_audit/finding.rb', line 35 def suppressed? = !self["suppression"].nil? |
#to_h ⇒ Object
33 |
# File 'lib/jekyll/agent_audit/finding.rb', line 33 def to_h = @data.dup |