Module: Sarif
- Defined in:
- lib/sarif.rb,
lib/sarif/fix.rb,
lib/sarif/log.rb,
lib/sarif/run.rb,
lib/sarif/edge.rb,
lib/sarif/node.rb,
lib/sarif/tool.rb,
lib/sarif/graph.rb,
lib/sarif/stack.rb,
lib/sarif/region.rb,
lib/sarif/result.rb,
lib/sarif/address.rb,
lib/sarif/message.rb,
lib/sarif/version.rb,
lib/sarif/artifact.rb,
lib/sarif/location.rb,
lib/sarif/code_flow.rb,
lib/sarif/exception.rb,
lib/sarif/rectangle.rb,
lib/sarif/attachment.rb,
lib/sarif/conversion.rb,
lib/sarif/invocation.rb,
lib/sarif/replacement.rb,
lib/sarif/stack_frame.rb,
lib/sarif/suppression.rb,
lib/sarif/thread_flow.rb,
lib/sarif/web_request.rb,
lib/sarif/notification.rb,
lib/sarif/property_bag.rb,
lib/sarif/web_response.rb,
lib/sarif/edge_traversal.rb,
lib/sarif/tool_component.rb,
lib/sarif/artifact_change.rb,
lib/sarif/graph_traversal.rb,
lib/sarif/artifact_content.rb,
lib/sarif/logical_location.rb,
lib/sarif/artifact_location.rb,
lib/sarif/physical_location.rb,
lib/sarif/result_provenance.rb,
lib/sarif/special_locations.rb,
lib/sarif/external_properties.rb,
lib/sarif/reporting_descriptor.rb,
lib/sarif/thread_flow_location.rb,
lib/sarif/translation_metadata.rb,
lib/sarif/location_relationship.rb,
lib/sarif/configuration_override.rb,
lib/sarif/run_automation_details.rb,
lib/sarif/reporting_configuration.rb,
lib/sarif/version_control_details.rb,
lib/sarif/tool_component_reference.rb,
lib/sarif/multiformat_message_string.rb,
lib/sarif/reporting_descriptor_reference.rb,
lib/sarif/external_property_file_reference.rb,
lib/sarif/external_property_file_references.rb,
lib/sarif/reporting_descriptor_relationship.rb
Defined Under Namespace
Classes: Address, Artifact, ArtifactChange, ArtifactContent, ArtifactLocation, Attachment, CodeFlow, ConfigurationOverride, Conversion, Edge, EdgeTraversal, Error, Exception, ExternalProperties, ExternalPropertyFileReference, ExternalPropertyFileReferences, Fix, Graph, GraphTraversal, Invocation, Location, LocationRelationship, Log, LogicalLocation, Message, MultiformatMessageString, Node, Notification, ParseError, PhysicalLocation, PropertyBag, Rectangle, Region, Replacement, ReportingConfiguration, ReportingDescriptor, ReportingDescriptorReference, ReportingDescriptorRelationship, Result, ResultProvenance, Run, RunAutomationDetails, SpecialLocations, Stack, StackFrame, Suppression, ThreadFlow, ThreadFlowLocation, Tool, ToolComponent, ToolComponentReference, TranslationMetadata, ValidationError, VersionControlDetails, WebRequest, WebResponse
Constant Summary
collapse
- SCHEMA_PATH =
File.expand_path("sarif/schema/sarif-schema-2.1.0.json", __dir__)
- VERSION =
"0.1.1"
Class Method Summary
collapse
Class Method Details
.dump(log, path_or_io, pretty: false) ⇒ Object
91
92
93
94
95
96
97
98
99
|
# File 'lib/sarif.rb', line 91
def self.dump(log, path_or_io, pretty: false)
json = log.to_json(pretty: pretty)
if path_or_io.respond_to?(:write)
path_or_io.write(json)
else
File.write(path_or_io, json)
end
json
end
|
.load(path) ⇒ Object
76
77
78
79
80
|
# File 'lib/sarif.rb', line 76
def self.load(path)
parse(File.read(path))
rescue Errno::ENOENT
raise Error, "File not found: #{path}"
end
|
.parse(json_string) ⇒ Object
82
83
84
85
86
87
88
89
|
# File 'lib/sarif.rb', line 82
def self.parse(json_string)
data = JSON.parse(json_string)
Log.from_hash(data)
rescue JSON::ParserError => e
raise ParseError, "Invalid JSON: #{e.message}"
rescue ArgumentError => e
raise ParseError, "Invalid SARIF structure: #{e.message}"
end
|
.schema ⇒ Object
101
102
103
104
105
106
|
# File 'lib/sarif.rb', line 101
def self.schema
@schema ||= begin
require "json_schemer"
JSONSchemer.schema(Pathname.new(SCHEMA_PATH))
end
end
|
.valid?(log) ⇒ Boolean
112
113
114
|
# File 'lib/sarif.rb', line 112
def self.valid?(log)
validate(log).empty?
end
|
.validate(log) ⇒ Object
108
109
110
|
# File 'lib/sarif.rb', line 108
def self.validate(log)
schema.validate(log.to_h).to_a
end
|
.validate!(log) ⇒ Object
116
117
118
119
120
|
# File 'lib/sarif.rb', line 116
def self.validate!(log)
errors = validate(log)
raise ValidationError, errors unless errors.empty?
true
end
|