GCC Middle and Back End API Reference
sarif-sink.cc File Reference
#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "diagnostic.h"
#include "diagnostics/metadata.h"
#include "diagnostics/digraphs.h"
#include "diagnostics/state-graphs.h"
#include "diagnostics/paths.h"
#include "diagnostics/sink.h"
#include "diagnostics/buffering.h"
#include "diagnostics/dumping.h"
#include "diagnostics/logging.h"
#include "json.h"
#include "cpplib.h"
#include "diagnostics/logical-locations.h"
#include "diagnostics/client-data-hooks.h"
#include "diagnostics/diagram.h"
#include "text-art/canvas.h"
#include "diagnostics/sarif-sink.h"
#include "diagnostics/text-sink.h"
#include "ordered-hash-map.h"
#include "sbitmap.h"
#include "selftest.h"
#include "diagnostics/selftest-context.h"
#include "diagnostics/selftest-source-printing.h"
#include "selftest-json.h"
#include "text-range-label.h"
#include "pretty-print-format-impl.h"
#include "pretty-print-urlifier.h"
#include "demangle.h"
#include "backtrace.h"
#include "xml.h"
Include dependency graph for sarif-sink.cc:

Data Structures

class  diagnostics::sarif_array_of_unique< JsonElementType >
struct  diagnostics::sarif_array_of_unique< JsonElementType >::comparator_t
class  diagnostics::sarif_artifact_content
class  diagnostics::sarif_artifact_location
class  diagnostics::sarif_message
class  diagnostics::sarif_multiformat_message_string
class  diagnostics::sarif_log
class  diagnostics::sarif_run
class  diagnostics::sarif_tool
class  diagnostics::sarif_tool_component
class  diagnostics::sarif_invocation
class  diagnostics::sarif_artifact
class  diagnostics::sarif_location_manager
struct  diagnostics::sarif_location_manager::worklist_item
class  diagnostics::sarif_result
class  diagnostics::sarif_location
class  diagnostics::sarif_physical_location
class  diagnostics::sarif_region
class  diagnostics::sarif_logical_location
class  diagnostics::sarif_location_relationship
class  diagnostics::sarif_code_flow
class  diagnostics::sarif_thread_flow
class  diagnostics::sarif_thread_flow_location
class  diagnostics::sarif_reporting_descriptor
class  diagnostics::sarif_reporting_descriptor_reference
class  diagnostics::sarif_tool_component_reference
class  diagnostics::sarif_fix
class  diagnostics::sarif_artifact_change
class  diagnostics::sarif_replacement
class  diagnostics::sarif_ice_notification
class  diagnostics::content_renderer
class  diagnostics::sarif_sink_buffer
class  diagnostics::sarif_builder
class  diagnostics::sarif_builder::sarif_token_printer
struct  diagnostics::bt_closure
class  diagnostics::sarif_sink
class  diagnostics::sarif_stream_sink
class  diagnostics::sarif_file_sink

Namespaces

namespace  diagnostics

Macros

#define INCLUDE_LIST
#define INCLUDE_MAP
#define INCLUDE_STRING
#define INCLUDE_VECTOR
#define PWD_PROPERTY_NAME   ("PWD")
#define FILE_PREFIX   ("file://")
#define PROPERTY_PREFIX   "gcc/diagnostics/paths/event/"

Enumerations

enum class  diagnostics::location_relationship_kind { diagnostics::includes , diagnostics::is_included_by , diagnostics::relevant , diagnostics::NUM_KINDS }
enum class  diagnostics::diagnostic_artifact_role {
  diagnostics::analysis_target , diagnostics::debug_output_file , diagnostics::result_file , diagnostics::scanned_file ,
  diagnostics::traced_file , diagnostics::NUM_ROLES
}

Functions

static std::unique_ptr< json::stringdiagnostics::make_date_time_string_for_current_time ()
static const char * diagnostics::get_artifact_role_string (enum diagnostic_artifact_role role)
static const char * diagnostics::get_string_for_location_relationship_kind (enum location_relationship_kind kind)
static int diagnostics::bt_callback (void *data, uintptr_t pc, const char *filename, int lineno, const char *function)
static const char * diagnostics::maybe_get_sarif_level (enum kind diag_kind)
static char * diagnostics::make_rule_id_for_diagnostic_kind (enum kind diag_kind)
static char * diagnostics::make_pwd_uri_str ()
static const char * diagnostics::maybe_get_sarif_kind (enum logical_locations::kind kind)
static void diagnostics::copy_any_property_bag (const digraphs::object &input_obj, sarif_object &output_obj)
std::unique_ptr< sarif_graphdiagnostics::make_sarif_graph (const digraphs::digraph &g, sarif_builder *builder, sarif_location_manager *sarif_location_mgr)
std::unique_ptr< sarif_nodediagnostics::make_sarif_node (const digraphs::node &n, sarif_builder *builder, sarif_location_manager *sarif_location_mgr)
std::unique_ptr< sarif_edgediagnostics::make_sarif_edge (const digraphs::edge &e, sarif_builder *builder)
label_text diagnostics::make_sarif_url_for_event (const sarif_code_flow *code_flow, paths::event_id_t event_id)
static std::string diagnostics::escape_braces (const char *text)
static void diagnostics::set_string_property_escaping_braces (json::object &obj, const char *property_name, const char *value)
static const char * diagnostics::sarif_version_to_url (enum sarif_version version)
static const char * diagnostics::sarif_version_to_property (enum sarif_version version)
static void diagnostics::sarif_begin_embedded_link (pretty_printer *pp)
static void diagnostics::sarif_end_embedded_link (pretty_printer *pp, const char *url)
static sinkdiagnostics::init_sarif_sink (context &dc, std::unique_ptr< sarif_sink > fmt)
sinkdiagnostics::init_sarif_stderr (context &dc, const line_maps *line_maps, bool formatted)
output_file diagnostics::open_sarif_output_file (context &dc, line_maps *line_maps, const char *base_file_name, enum sarif_serialization_kind serialization_kind)
sinkdiagnostics::init_sarif_file (context &dc, line_maps *line_maps, bool formatted, const char *base_file_name)
sinkdiagnostics::init_sarif_stream (context &dc, const line_maps *line_maps, bool formatted, FILE *stream)
std::unique_ptr< sinkdiagnostics::make_sarif_sink (context &dc, const line_maps &line_maps, std::unique_ptr< sarif_serialization_format > serialization, const sarif_generation_options &sarif_gen_opts, output_file output_file_)
static const char * diagnostics::get_dump_string_for_sarif_version (enum sarif_version version)

Variables

static const char *const diagnostics::bt_stop []

Macro Definition Documentation

◆ FILE_PREFIX

#define FILE_PREFIX   ("file://")

◆ INCLUDE_LIST

#define INCLUDE_LIST
SARIF output for diagnostics
   Copyright (C) 2018-2025 Free Software Foundation, Inc.
   Contributed by David Malcolm <dmalcolm@redhat.com>.

This file is part of GCC.

GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3, or (at your option) any later
version.

GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
for more details.

You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3.  If not see
<http://www.gnu.org/licenses/>.   

◆ INCLUDE_MAP

#define INCLUDE_MAP

◆ INCLUDE_STRING

#define INCLUDE_STRING

◆ INCLUDE_VECTOR

#define INCLUDE_VECTOR

◆ PROPERTY_PREFIX

#define PROPERTY_PREFIX   "gcc/diagnostics/paths/event/"

◆ PWD_PROPERTY_NAME

#define PWD_PROPERTY_NAME   ("PWD")
The ID value for use in "uriBaseId" properties (SARIF v2.1.0 section 3.4.4)
for when we need to express paths relative to PWD.   

Referenced by diagnostics::sarif_builder::make_artifact_location_object(), and diagnostics::sarif_builder::make_run_object().