Class: SemgrepWebApp::RuleExplanation
- Defined in:
- lib/semgrep_web_app/models/rule_explanation.rb
Overview
AI-generated explanation of why a rule flagged this specific code
Instance Attribute Summary collapse
-
#explanation ⇒ String
Detailed explanation of why this rule flagged the code, including context about the security issue and why it applies to this specific code.
-
#summary ⇒ String
A concise summary of the rule explanation.
Class Method Summary collapse
-
.from_hash(hash) ⇒ Object
Creates an instance of the object from a hash.
-
.names ⇒ Object
A mapping from model property names to API property names.
-
.nullables ⇒ Object
An array for nullable fields.
-
.optionals ⇒ Object
An array for optional fields.
-
.validate(value) ⇒ Object
Validates an instance of the object from a given value.
Instance Method Summary collapse
-
#initialize(explanation: SKIP, summary: SKIP, additional_properties: nil) ⇒ RuleExplanation
constructor
A new instance of RuleExplanation.
-
#inspect ⇒ Object
Provides a debugging-friendly string with detailed object information.
-
#to_s ⇒ Object
Provides a human-readable string representation of the object.
Methods inherited from BaseModel
#check_for_conflict, #process_additional_properties, #process_array, #process_basic_value, #process_hash, #to_hash, #to_json
Constructor Details
#initialize(explanation: SKIP, summary: SKIP, additional_properties: nil) ⇒ RuleExplanation
Returns a new instance of RuleExplanation.
44 45 46 47 48 49 50 51 |
# File 'lib/semgrep_web_app/models/rule_explanation.rb', line 44 def initialize(explanation: SKIP, summary: SKIP, additional_properties: nil) # Add additional model properties to the instance additional_properties = {} if additional_properties.nil? @explanation = explanation unless explanation == SKIP @summary = summary unless summary == SKIP @additional_properties = additional_properties end |
Instance Attribute Details
#explanation ⇒ String
Detailed explanation of why this rule flagged the code, including context about the security issue and why it applies to this specific code. AI generated content, review carefully
16 17 18 |
# File 'lib/semgrep_web_app/models/rule_explanation.rb', line 16 def explanation @explanation end |
#summary ⇒ String
A concise summary of the rule explanation. May not be present for all findings
21 22 23 |
# File 'lib/semgrep_web_app/models/rule_explanation.rb', line 21 def summary @summary end |
Class Method Details
.from_hash(hash) ⇒ Object
Creates an instance of the object from a hash.
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/semgrep_web_app/models/rule_explanation.rb', line 54 def self.from_hash(hash) return nil unless hash # Extract variables from the hash. explanation = hash.key?('explanation') ? hash['explanation'] : SKIP summary = hash.key?('summary') ? hash['summary'] : SKIP # Create a new hash for additional properties, removing known properties. new_hash = hash.reject { |k, _| names.value?(k) } additional_properties = APIHelper.get_additional_properties( new_hash, proc { |value| value } ) # Create object from extracted values. RuleExplanation.new(explanation: explanation, summary: summary, additional_properties: additional_properties) end |
.names ⇒ Object
A mapping from model property names to API property names.
24 25 26 27 28 29 |
# File 'lib/semgrep_web_app/models/rule_explanation.rb', line 24 def self.names @_hash = {} if @_hash.nil? @_hash['explanation'] = 'explanation' @_hash['summary'] = 'summary' @_hash end |
.nullables ⇒ Object
An array for nullable fields
40 41 42 |
# File 'lib/semgrep_web_app/models/rule_explanation.rb', line 40 def self.nullables [] end |
.optionals ⇒ Object
An array for optional fields
32 33 34 35 36 37 |
# File 'lib/semgrep_web_app/models/rule_explanation.rb', line 32 def self.optionals %w[ explanation summary ] end |
.validate(value) ⇒ Object
Validates an instance of the object from a given value.
76 77 78 79 80 81 82 |
# File 'lib/semgrep_web_app/models/rule_explanation.rb', line 76 def self.validate(value) return true if value.instance_of? self return false unless value.instance_of? Hash true end |
Instance Method Details
#inspect ⇒ Object
Provides a debugging-friendly string with detailed object information.
92 93 94 95 96 |
# File 'lib/semgrep_web_app/models/rule_explanation.rb', line 92 def inspect class_name = self.class.name.split('::').last "<#{class_name} explanation: #{@explanation.inspect}, summary: #{@summary.inspect},"\ " additional_properties: #{@additional_properties}>" end |
#to_s ⇒ Object
Provides a human-readable string representation of the object.
85 86 87 88 89 |
# File 'lib/semgrep_web_app/models/rule_explanation.rb', line 85 def to_s class_name = self.class.name.split('::').last "<#{class_name} explanation: #{@explanation}, summary: #{@summary}, additional_properties:"\ " #{@additional_properties}>" end |