20#ifndef LIBGDIAGNOSTICS_H
21#define LIBGDIAGNOSTICS_H
38#define LIBGDIAGNOSTICS_GCC_VERSION (__GNUC__ * 1000 + __GNUC_MINOR__)
44# if (LIBGDIAGNOSTICS_GCC_VERSION >= 3003)
45# define LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL(ARG_NUM) __attribute__ ((__nonnull__ (ARG_NUM)))
47# define LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL(ARG_NUM)
50#define LIBGDIAGNOSTICS_PARAM_CAN_BE_NULL(ARG_NUM)
53# if (LIBGDIAGNOSTICS_GCC_VERSION >= 4001)
54# define LIBGDIAGNOSTICS_PARAM_FORMAT_STRING(FMT_KIND, FMT_ARG_NUM, ARGS_ARG_NUM) \
55 __attribute__ ((__format__ (FMT_KIND, FMT_ARG_NUM, ARGS_ARG_NUM)))
57# define LIBGDIAGNOSTICS_PARAM_FORMAT_STRING(FMT_KIND, FMT_ARG_NUM, ARGS_ARG_NUM)
60#define LIBGDIAGNOSTICS_PARAM_GCC_FORMAT_STRING(FMT_ARG_NUM, ARGS_ARG_NUM) \
61 LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL (FMT_ARG_NUM)
69#define LIBGDIAGNOSTICS_PARAM_PRINTF_FORMAT_STRING(FMT_ARG_NUM, ARGS_ARG_NUM) \
70 LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL (FMT_ARG_NUM) \
71 LIBGDIAGNOSTICS_PARAM_FORMAT_STRING(gnu_printf, FMT_ARG_NUM, ARGS_ARG_NUM)
394 const
char *sarif_source_language)
500 const
char *short_name,
501 const
char *fully_qualified_name,
502 const
char *decorated_name)
523#define LIBDIAGNOSTICS_HAVE_LOGICAL_LOCATION_ACCESSORS
603 const
char *fmt, ...)
638 const
char *addition)
646 const
char *addition)
702 unsigned stack_depth,
703 const
char *fmt, ...)
716 unsigned stack_depth,
755#define LIBDIAGNOSTICS_HAVE_diagnostic_manager_add_sink_from_spec
759 const char *option_name,
773#define LIBDIAGNOSTICS_HAVE_diagnostic_manager_set_analysis_target
917#define LIBDIAGNOSTICS_HAVE_diagnostic_message_buffer
967 const
char *fmt, ...)
1060 unsigned stack_depth,
1094 const
char *edge_id,
1122#define LIBDIAGNOSTICS_HAVE_diagnostic_manager_set_debug_physical_locations
static struct path_prefix cpath path
Definition collect2.cc:514
void diagnostic_finish(diagnostics::context *context)
Definition diagnostic.h:86
static void color(void)
Definition ira-color.cc:5258
void diagnostic_graph_set_description(diagnostic_graph *graph, const char *desc)
Definition libgdiagnostics.cc:2612
void diagnostic_graph_release(diagnostic_graph *graph)
Definition libgdiagnostics.cc:2604
void diagnostic_manager_set_full_name(diagnostic_manager *diag_mgr, const char *value)
Definition libgdiagnostics.cc:1773
diagnostic_text_sink * diagnostic_manager_add_text_sink(diagnostic_manager *diag_mgr, FILE *dst_stream, enum diagnostic_colorize colorize)
Definition libgdiagnostics.cc:1809
const diagnostic_logical_location * diagnostic_manager_new_logical_location(diagnostic_manager *diag_mgr, enum diagnostic_logical_location_kind_t kind, const diagnostic_logical_location *parent, const char *short_name, const char *fully_qualified_name, const char *decorated_name)
Definition libgdiagnostics.cc:2028
void diagnostic_add_location(diagnostic *diag, const diagnostic_physical_location *loc)
Definition libgdiagnostics.cc:2206
diagnostic_edge * diagnostic_graph_add_edge_via_msg_buf(diagnostic_graph *graph, const char *edge_id, diagnostic_node *src_node, diagnostic_node *dst_node, diagnostic_message_buffer *label)
Definition libgdiagnostics.cc:2957
void diagnostic_add_fix_it_hint_delete(diagnostic *diag, const diagnostic_physical_location *loc)
Definition libgdiagnostics.cc:2291
void diagnostic_manager_write_patch(diagnostic_manager *diag_mgr, FILE *dst_stream)
Definition libgdiagnostics.cc:1893
void diagnostic_message_buffer_append_text(diagnostic_message_buffer *msg_buf, const char *p, size_t len)
Definition libgdiagnostics.cc:2763
void diagnostic_take_graph(diagnostic *diag, diagnostic_graph *graph)
Definition libgdiagnostics.cc:2592
diagnostic_event_id diagnostic_execution_path_add_event(diagnostic_execution_path *path, const diagnostic_physical_location *physical_loc, const diagnostic_logical_location *logical_loc, unsigned stack_depth, const char *gmsgid,...)
Definition libgdiagnostics.cc:2344
void diagnostic_manager_add_sarif_sink(diagnostic_manager *diag_mgr, FILE *dst_stream, const diagnostic_file *main_input_file, enum diagnostic_sarif_version version)
Definition libgdiagnostics.cc:1859
diagnostic_event_id diagnostic_execution_path_add_event_via_msg_buf(diagnostic_execution_path *path, const diagnostic_physical_location *physical_loc, const diagnostic_logical_location *logical_loc, unsigned stack_depth, diagnostic_message_buffer *msg_buf)
Definition libgdiagnostics.cc:2921
void diagnostic_add_location_with_label_via_msg_buf(diagnostic *diag, const diagnostic_physical_location *loc, diagnostic_message_buffer *msg_buf)
Definition libgdiagnostics.cc:2906
void diagnostic_message_buffer_begin_quote(diagnostic_message_buffer *msg_buf)
Definition libgdiagnostics.cc:2835
void diagnostic_text_sink_set_labelled_source_colorization_enabled(diagnostic_text_sink *text_sink, int value)
Definition libgdiagnostics.cc:1847
const diagnostic_physical_location * diagnostic_manager_new_location_from_range(diagnostic_manager *diag_mgr, const diagnostic_physical_location *loc_caret, const diagnostic_physical_location *loc_start, const diagnostic_physical_location *loc_end)
Definition libgdiagnostics.cc:1983
void diagnostic_message_buffer_dump(const diagnostic_message_buffer *msg_buf, FILE *outf)
Definition libgdiagnostics.cc:2874
void diagnostic_node_set_label(diagnostic_node *node, const char *label)
Definition libgdiagnostics.cc:2687
void diagnostic_graph_set_description_via_msg_buf(diagnostic_graph *graph, diagnostic_message_buffer *desc)
Definition libgdiagnostics.cc:2943
void diagnostic_message_buffer_append_printf(diagnostic_message_buffer *msg_buf, const char *fmt,...)
Definition libgdiagnostics.cc:2785
void diagnostic_text_sink_set_colorize(diagnostic_text_sink *text_sink, enum diagnostic_colorize colorize)
Definition libgdiagnostics.cc:1836
diagnostic_execution_path * diagnostic_add_execution_path(diagnostic *diag)
Definition libgdiagnostics.cc:2304
void diagnostic_node_set_location(diagnostic_node *node, const diagnostic_physical_location *loc)
Definition libgdiagnostics.cc:2676
diagnostic_node * diagnostic_graph_get_node_by_id(diagnostic_graph *graph, const char *node_id)
Definition libgdiagnostics.cc:2652
void diagnostic_set_location(diagnostic *diag, const diagnostic_physical_location *loc)
Definition libgdiagnostics.cc:2194
diagnostic_node * diagnostic_graph_add_node(diagnostic_graph *graph, const char *node_id, diagnostic_node *parent_node)
Definition libgdiagnostics.cc:2623
void diagnostic_add_fix_it_hint_insert_before(diagnostic *diag, const diagnostic_physical_location *loc, const char *addition)
Definition libgdiagnostics.cc:2243
void diagnostic_node_set_label_via_msg_buf(diagnostic_node *node, diagnostic_message_buffer *label)
Definition libgdiagnostics.cc:2981
void diagnostic_message_buffer_begin_color(diagnostic_message_buffer *msg_buf, const char *color)
Definition libgdiagnostics.cc:2853
void diagnostic_manager_debug_dump_logical_location(const diagnostic_manager *diag_mgr, const diagnostic_logical_location *loc, FILE *out)
Definition libgdiagnostics.cc:2045
void diagnostic_message_buffer_append_event_id(diagnostic_message_buffer *msg_buf, diagnostic_event_id event_id)
Definition libgdiagnostics.cc:2804
diagnostic_event_id diagnostic_execution_path_add_event_va(diagnostic_execution_path *path, const diagnostic_physical_location *physical_loc, const diagnostic_logical_location *logical_loc, unsigned stack_depth, const char *gmsgid, va_list *args)
Definition libgdiagnostics.cc:2369
void diagnostic_message_buffer_append_byte(diagnostic_message_buffer *msg_buf, char ch)
Definition libgdiagnostics.cc:2775
diagnostic_file * diagnostic_physical_location_get_file(const diagnostic_physical_location *physical_loc)
Definition libgdiagnostics.cc:2421
const diagnostic_physical_location * diagnostic_manager_new_location_from_file_line_column(diagnostic_manager *diag_mgr, const diagnostic_file *file, diagnostic_line_num_t line_num, diagnostic_column_num_t column_num)
Definition libgdiagnostics.cc:1967
void diagnostic_manager_set_version_url(diagnostic_manager *diag_mgr, const char *value)
Definition libgdiagnostics.cc:1797
void diagnostic_message_buffer_end_url(diagnostic_message_buffer *msg_buf)
Definition libgdiagnostics.cc:2826
void diagnostic_message_buffer_end_quote(diagnostic_message_buffer *msg_buf)
Definition libgdiagnostics.cc:2844
void diagnostic_file_set_buffered_content(diagnostic_file *file, const char *buf, size_t sz)
Definition libgdiagnostics.cc:1918
void diagnostic_set_logical_location(diagnostic *diag, const diagnostic_logical_location *logical_loc)
Definition libgdiagnostics.cc:2232
void diagnostic_message_buffer_end_color(diagnostic_message_buffer *msg_buf)
Definition libgdiagnostics.cc:2865
diagnostic_edge * diagnostic_graph_add_edge(diagnostic_graph *graph, const char *edge_id, diagnostic_node *src_node, diagnostic_node *dst_node, const char *label)
Definition libgdiagnostics.cc:2636
void diagnostic_add_fix_it_hint_replace(diagnostic *diag, const diagnostic_physical_location *loc, const char *replacement)
Definition libgdiagnostics.cc:2275
void diagnostic_manager_debug_dump_location(const diagnostic_manager *diag_mgr, const diagnostic_physical_location *loc, FILE *out)
Definition libgdiagnostics.cc:1998
void diagnostic_manager_set_version_string(diagnostic_manager *diag_mgr, const char *value)
Definition libgdiagnostics.cc:1785
void diagnostic_add_location_with_label(diagnostic *diag, const diagnostic_physical_location *loc, const char *text)
Definition libgdiagnostics.cc:2218
diagnostic_file * diagnostic_manager_new_file(diagnostic_manager *diag_mgr, const char *name, const char *sarif_source_language)
Definition libgdiagnostics.cc:1905
void diagnostic_manager_take_global_graph(diagnostic_manager *manager, diagnostic_graph *graph)
Definition libgdiagnostics.cc:2582
void diagnostic_finish_va(diagnostic *diag, const char *gmsgid, va_list *args)
Definition libgdiagnostics.cc:2404
void diagnostic_execution_path_release(diagnostic_execution_path *path)
Definition libgdiagnostics.cc:2336
void diagnostic_add_fix_it_hint_insert_after(diagnostic *diag, const diagnostic_physical_location *loc, const char *addition)
Definition libgdiagnostics.cc:2259
void diagnostic_message_buffer_begin_url(diagnostic_message_buffer *msg_buf, const char *url)
Definition libgdiagnostics.cc:2814
void diagnostic_manager_debug_dump_file(diagnostic_manager *, const diagnostic_file *file, FILE *out)
Definition libgdiagnostics.cc:1929
void diagnostic_finish_via_msg_buf(diagnostic *diag, diagnostic_message_buffer *msg_buf)
Definition libgdiagnostics.cc:2886
void diagnostic_node_set_logical_location(diagnostic_node *node, const diagnostic_logical_location *logical_loc)
Definition libgdiagnostics.cc:2698
void diagnostic_text_sink_set_source_printing_enabled(diagnostic_text_sink *text_sink, int value)
Definition libgdiagnostics.cc:1825
const diagnostic_physical_location * diagnostic_manager_new_location_from_file_and_line(diagnostic_manager *diag_mgr, const diagnostic_file *file, diagnostic_line_num_t linenum)
Definition libgdiagnostics.cc:1954
diagnostic_edge * diagnostic_graph_get_edge_by_id(diagnostic_graph *graph, const char *edge_id)
Definition libgdiagnostics.cc:2664
diagnostic_execution_path * diagnostic_manager_new_execution_path(diagnostic_manager *manager)
Definition libgdiagnostics.cc:2314
void diagnostic_take_execution_path(diagnostic *diag, diagnostic_execution_path *path)
Definition libgdiagnostics.cc:2324
diagnostic_graph * diagnostic_manager_new_graph(diagnostic_manager *manager)
Definition libgdiagnostics.cc:2572
void diagnostic_set_location_with_label(diagnostic *diag, const diagnostic_physical_location *loc, const char *fmt,...) LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL(3)
#define LIBGDIAGNOSTICS_PARAM_CAN_BE_NULL(ARG_NUM)
Definition libgdiagnostics.h:50
void diagnostic_add_rule(diagnostic *diag, const char *title, const char *url) LIBGDIAGNOSTICS_PARAM_CAN_BE_NULL(3)
Definition libgdiagnostics.cc:2182
diagnostic * diagnostic_begin(diagnostic_manager *diag_mgr, enum diagnostic_level level) LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL(1)
Definition libgdiagnostics.cc:2160
int diagnostic_event_id
Definition libgdiagnostics.h:242
#define LIBGDIAGNOSTICS_PARAM_GCC_FORMAT_STRING(FMT_ARG_NUM, ARGS_ARG_NUM)
Definition libgdiagnostics.h:60
void diagnostic_manager_set_debug_physical_locations(diagnostic_manager *mgr, int value)
Definition libgdiagnostics.cc:3019
void diagnostic_manager_end_group(diagnostic_manager *diag_mgr) LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL(1)
Definition libgdiagnostics.cc:2151
#define LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL(ARG_NUM)
Definition libgdiagnostics.h:47
diagnostic_logical_location_kind_t
Definition libgdiagnostics.h:174
@ DIAGNOSTIC_LOGICAL_LOCATION_KIND_FUNCTION
Definition libgdiagnostics.h:176
@ DIAGNOSTIC_LOGICAL_LOCATION_KIND_DECLARATION
Definition libgdiagnostics.h:192
@ DIAGNOSTIC_LOGICAL_LOCATION_KIND_NAMESPACE
Definition libgdiagnostics.h:179
@ DIAGNOSTIC_LOGICAL_LOCATION_KIND_ATTRIBUTE
Definition libgdiagnostics.h:187
@ DIAGNOSTIC_LOGICAL_LOCATION_KIND_ARRAY
Definition libgdiagnostics.h:196
@ DIAGNOSTIC_LOGICAL_LOCATION_KIND_VALUE
Definition libgdiagnostics.h:198
@ DIAGNOSTIC_LOGICAL_LOCATION_KIND_MEMBER
Definition libgdiagnostics.h:177
@ DIAGNOSTIC_LOGICAL_LOCATION_KIND_PROCESSING_INSTRUCTION
Definition libgdiagnostics.h:190
@ DIAGNOSTIC_LOGICAL_LOCATION_KIND_OBJECT
Definition libgdiagnostics.h:195
@ DIAGNOSTIC_LOGICAL_LOCATION_KIND_RETURN_TYPE
Definition libgdiagnostics.h:181
@ DIAGNOSTIC_LOGICAL_LOCATION_KIND_TEXT
Definition libgdiagnostics.h:188
@ DIAGNOSTIC_LOGICAL_LOCATION_KIND_VARIABLE
Definition libgdiagnostics.h:183
@ DIAGNOSTIC_LOGICAL_LOCATION_KIND_TYPE
Definition libgdiagnostics.h:180
@ DIAGNOSTIC_LOGICAL_LOCATION_KIND_ELEMENT
Definition libgdiagnostics.h:186
@ DIAGNOSTIC_LOGICAL_LOCATION_KIND_PARAMETER
Definition libgdiagnostics.h:182
@ DIAGNOSTIC_LOGICAL_LOCATION_KIND_MODULE
Definition libgdiagnostics.h:178
@ DIAGNOSTIC_LOGICAL_LOCATION_KIND_PROPERTY
Definition libgdiagnostics.h:197
@ DIAGNOSTIC_LOGICAL_LOCATION_KIND_COMMENT
Definition libgdiagnostics.h:189
@ DIAGNOSTIC_LOGICAL_LOCATION_KIND_DTD
Definition libgdiagnostics.h:191
unsigned int diagnostic_line_num_t
Definition libgdiagnostics.h:159
void diagnostic_message_buffer_append_str(diagnostic_message_buffer *msg_buf, const char *p) LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL(2)
Definition libgdiagnostics.cc:2752
void diagnostic_set_cwe(diagnostic *diag, unsigned cwe_id) LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL(1)
Definition libgdiagnostics.cc:2171
void diagnostic_manager_set_tool_name(diagnostic_manager *diag_mgr, const char *value) LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL(2)
Definition libgdiagnostics.cc:1761
diagnostic_message_buffer * diagnostic_message_buffer_new(void)
Definition libgdiagnostics.cc:2737
void diagnostic_manager_set_analysis_target(diagnostic_manager *mgr, const diagnostic_file *file) LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL(2)
Definition libgdiagnostics.cc:2526
diagnostic_manager * diagnostic_manager_new(void)
Definition libgdiagnostics.cc:1745
diagnostic_sarif_version
Definition libgdiagnostics.h:101
@ DIAGNOSTIC_SARIF_VERSION_2_1_0
Definition libgdiagnostics.h:102
@ DIAGNOSTIC_SARIF_VERSION_2_2_PRERELEASE
Definition libgdiagnostics.h:103
diagnostic_colorize
Definition libgdiagnostics.h:92
@ DIAGNOSTIC_COLORIZE_YES
Definition libgdiagnostics.h:95
@ DIAGNOSTIC_COLORIZE_IF_TTY
Definition libgdiagnostics.h:93
@ DIAGNOSTIC_COLORIZE_NO
Definition libgdiagnostics.h:94
const char * diagnostic_logical_location_get_short_name(const diagnostic_logical_location *loc) LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL(1)
Definition libgdiagnostics.cc:2448
void diagnostic_message_buffer_release(diagnostic_message_buffer *msg_buf) LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL(1)
Definition libgdiagnostics.cc:2745
#define LIBGDIAGNOSTICS_PARAM_PRINTF_FORMAT_STRING(FMT_ARG_NUM, ARGS_ARG_NUM)
Definition libgdiagnostics.h:69
unsigned int diagnostic_column_num_t
Definition libgdiagnostics.h:160
diagnostic_level
Definition libgdiagnostics.h:230
@ DIAGNOSTIC_LEVEL_ERROR
Definition libgdiagnostics.h:231
@ DIAGNOSTIC_LEVEL_SORRY
Definition libgdiagnostics.h:237
@ DIAGNOSTIC_LEVEL_WARNING
Definition libgdiagnostics.h:232
@ DIAGNOSTIC_LEVEL_NOTE
Definition libgdiagnostics.h:233
void diagnostic_manager_begin_group(diagnostic_manager *diag_mgr) LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL(1)
Definition libgdiagnostics.cc:2142
enum diagnostic_logical_location_kind_t diagnostic_logical_location_get_kind(const diagnostic_logical_location *loc) LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL(1)
Definition libgdiagnostics.cc:2432
void diagnostic_manager_release(diagnostic_manager *) LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL(1)
Definition libgdiagnostics.cc:1753
const char * diagnostic_logical_location_get_fully_qualified_name(const diagnostic_logical_location *loc) LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL(1)
Definition libgdiagnostics.cc:2456
const diagnostic_logical_location * diagnostic_logical_location_get_parent(const diagnostic_logical_location *loc) LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL(1)
Definition libgdiagnostics.cc:2440
int diagnostic_manager_add_sink_from_spec(diagnostic_manager *affected_mgr, const char *option_name, const char *spec, diagnostic_manager *control_mgr) LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL(4)
Definition libgdiagnostics.cc:2505
const char * diagnostic_logical_location_get_decorated_name(const diagnostic_logical_location *loc) LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL(1)
Definition libgdiagnostics.cc:2464
Definition genautomata.cc:601
Definition libgdiagnostics.cc:1023
Definition libgdiagnostics.cc:1146
Definition libgdiagnostics.cc:118
Definition libgdiagnostics.cc:1000
Definition libgdiagnostics.cc:175
Definition libgdiagnostics.cc:638
Definition libgdiagnostics.cc:354
Definition libgdiagnostics.cc:1014
Definition libgdiagnostics.cc:151
Definition libgdiagnostics.cc:230
Definition libgdiagnostics.cc:1249
Definition gengtype.h:377