GCC Middle and Back End API Reference
sarif_result Class Reference
Inheritance diagram for sarif_result:
Collaboration diagram for sarif_result:

Public Member Functions

 sarif_result ()
 
void on_nested_diagnostic (diagnostic_context *context, const diagnostic_info &diagnostic, diagnostic_t orig_diag_kind, sarif_builder *builder)
 
void on_diagram (diagnostic_context *context, const diagnostic_diagram &diagram, sarif_builder *builder)
 
sarif_property_bagget_or_create_properties ()
 
enum kind get_kind () const final override
 
void print (pretty_printer *pp, bool formatted) const final override
 
void set (const char *key, value *v)
 
valueget (const char *key) const
 
void set_string (const char *key, const char *utf8_value)
 
void set_integer (const char *key, long v)
 
void set_float (const char *key, double v)
 
void set_bool (const char *key, bool v)
 
void dump (FILE *, bool formatted) const
 

Private Types

typedef hash_map< char *, value *, simple_hashmap_traits< nofree_string_hash, value * > > map_t
 

Private Member Functions

void add_related_location (json::object *location_obj)
 

Private Attributes

json::arraym_related_locations_arr
 
map_t m_map
 
auto_vec< const char * > m_keys
 

Detailed Description

Subclass of sarif_object for SARIF result objects
(SARIF v2.1.0 section 3.27).   

Member Typedef Documentation

◆ map_t

Constructor & Destructor Documentation

◆ sarif_result()

sarif_result::sarif_result ( )
inline

Member Function Documentation

◆ add_related_location()

void sarif_result::add_related_location ( json::object * location_obj)
private
Add LOCATION_OBJ to this result's "relatedLocations" array,
creating it if it doesn't yet exist.   

References json::array::append(), ggc_alloc(), m_related_locations_arr, and json::object::set().

Referenced by on_diagram(), and on_nested_diagnostic().

◆ dump()

void value::dump ( FILE * outf,
bool formatted ) const
inherited
class json::value.   
Dump this json::value tree to OUTF.

The key/value pairs of json::objects are printed in the order
in which the keys were originally inserted.   

References ggc_alloc(), pp_buffer, pp_flush(), and json::value::print().

Referenced by json_output_format::flush_to_file(), and generate_results().

◆ get()

value * object::get ( const char * key) const
inherited
Get the json::value * for KEY.

The object retains ownership of the value.   

References gcc_assert, json::object::get(), json::object::m_map, and NULL.

Referenced by json::object::get(), and sarif_object::get_or_create_properties().

◆ get_kind()

enum kind json::object::get_kind ( ) const
inlinefinaloverridevirtualinherited

Implements json::value.

References json::JSON_OBJECT.

◆ get_or_create_properties()

sarif_property_bag & sarif_object::get_or_create_properties ( )
inherited
class sarif_object : public json::object.   

References json::object::get(), ggc_alloc(), json::JSON_OBJECT, and json::object::set().

◆ on_diagram()

void sarif_result::on_diagram ( diagnostic_context * context,
const diagnostic_diagram & diagram,
sarif_builder * builder )
Handle diagrams that occur within a diagnostic group.
The closest thing in SARIF seems to be to add a location to the
"releatedLocations" property  (SARIF v2.1.0 section 3.27.22),
and to put the diagram into the "message" property of that location
(SARIF v2.1.0 section 3.28.5).   

References add_related_location(), and ggc_alloc().

Referenced by sarif_builder::emit_diagram().

◆ on_nested_diagnostic()

void sarif_result::on_nested_diagnostic ( diagnostic_context * context,
const diagnostic_info & diagnostic,
diagnostic_t orig_diag_kind,
sarif_builder * builder )
class sarif_result : public sarif_object.   
Handle secondary diagnostics that occur within a diagnostic group.
The closest SARIF seems to have to nested diagnostics is the
"relatedLocations" property of result objects (SARIF v2.1.0 section 3.27.22),
so we lazily set this property and populate the array if and when
secondary diagnostics occur (such as notes to a warning).   

References add_related_location(), ggc_alloc(), NULL, pp_clear_output_area(), pp_formatted_text(), and diagnostic_context::printer.

Referenced by sarif_builder::end_diagnostic().

◆ print()

void object::print ( pretty_printer * pp,
bool formatted ) const
finaloverridevirtualinherited

◆ set()

◆ set_bool()

void object::set_bool ( const char * key,
bool v )
inherited
Set value of KEY within this object to the JSON
literal true or false, based on V.   

References json::object::set().

Referenced by sarif_invocation::prepare_to_flush().

◆ set_float()

void object::set_float ( const char * key,
double v )
inherited
Set value of KEY within this object to a JSON
floating point value based on V.   

References json::object::set().

Referenced by make_json_for_timevar_time_def().

◆ set_integer()

◆ set_string()

Field Documentation

◆ m_keys

auto_vec<const char *> json::object::m_keys
privateinherited

◆ m_map

map_t json::object::m_map
privateinherited

◆ m_related_locations_arr

json::array* sarif_result::m_related_locations_arr
private

Referenced by add_related_location().


The documentation for this class was generated from the following file: