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)
60#define LIBGDIAGNOSTICS_PARAM_GCC_FORMAT_STRING(FMT_ARG_NUM, ARGS_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)
69#define LIBGDIAGNOSTICS_PARAM_PRINTF_FORMAT_STRING(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,
static struct path_prefix cpath path
Definition collect2.cc:514
void diagnostic_finish(diagnostic_context *context)
Definition diagnostic.h:1201
static void color(void)
Definition ira-color.cc:5258
void diagnostic_graph_set_description(diagnostic_graph *graph, const char *desc)
Definition libgdiagnostics.cc:2551
void diagnostic_graph_release(diagnostic_graph *graph)
Definition libgdiagnostics.cc:2543
void diagnostic_manager_set_full_name(diagnostic_manager *diag_mgr, const char *value)
Definition libgdiagnostics.cc:1716
diagnostic_text_sink * diagnostic_manager_add_text_sink(diagnostic_manager *diag_mgr, FILE *dst_stream, enum diagnostic_colorize colorize)
Definition libgdiagnostics.cc:1752
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:1969
void diagnostic_add_location(diagnostic *diag, const diagnostic_physical_location *loc)
Definition libgdiagnostics.cc:2147
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:2896
void diagnostic_add_fix_it_hint_delete(diagnostic *diag, const diagnostic_physical_location *loc)
Definition libgdiagnostics.cc:2232
void diagnostic_manager_write_patch(diagnostic_manager *diag_mgr, FILE *dst_stream)
Definition libgdiagnostics.cc:1835
void diagnostic_message_buffer_append_text(diagnostic_message_buffer *msg_buf, const char *p, size_t len)
Definition libgdiagnostics.cc:2702
void diagnostic_take_graph(diagnostic *diag, diagnostic_graph *graph)
Definition libgdiagnostics.cc:2531
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:2285
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:1802
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:2860
void diagnostic_add_location_with_label_via_msg_buf(diagnostic *diag, const diagnostic_physical_location *loc, diagnostic_message_buffer *msg_buf)
Definition libgdiagnostics.cc:2845
void diagnostic_message_buffer_begin_quote(diagnostic_message_buffer *msg_buf)
Definition libgdiagnostics.cc:2774
void diagnostic_text_sink_set_labelled_source_colorization_enabled(diagnostic_text_sink *text_sink, int value)
Definition libgdiagnostics.cc:1790
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:1924
void diagnostic_message_buffer_dump(const diagnostic_message_buffer *msg_buf, FILE *outf)
Definition libgdiagnostics.cc:2813
void diagnostic_node_set_label(diagnostic_node *node, const char *label)
Definition libgdiagnostics.cc:2626
void diagnostic_graph_set_description_via_msg_buf(diagnostic_graph *graph, diagnostic_message_buffer *desc)
Definition libgdiagnostics.cc:2882
void diagnostic_message_buffer_append_printf(diagnostic_message_buffer *msg_buf, const char *fmt,...)
Definition libgdiagnostics.cc:2724
void diagnostic_text_sink_set_colorize(diagnostic_text_sink *text_sink, enum diagnostic_colorize colorize)
Definition libgdiagnostics.cc:1779
diagnostic_execution_path * diagnostic_add_execution_path(diagnostic *diag)
Definition libgdiagnostics.cc:2245
void diagnostic_node_set_location(diagnostic_node *node, const diagnostic_physical_location *loc)
Definition libgdiagnostics.cc:2615
diagnostic_node * diagnostic_graph_get_node_by_id(diagnostic_graph *graph, const char *node_id)
Definition libgdiagnostics.cc:2591
void diagnostic_set_location(diagnostic *diag, const diagnostic_physical_location *loc)
Definition libgdiagnostics.cc:2135
diagnostic_node * diagnostic_graph_add_node(diagnostic_graph *graph, const char *node_id, diagnostic_node *parent_node)
Definition libgdiagnostics.cc:2562
void diagnostic_add_fix_it_hint_insert_before(diagnostic *diag, const diagnostic_physical_location *loc, const char *addition)
Definition libgdiagnostics.cc:2184
void diagnostic_node_set_label_via_msg_buf(diagnostic_node *node, diagnostic_message_buffer *label)
Definition libgdiagnostics.cc:2920
void diagnostic_message_buffer_begin_color(diagnostic_message_buffer *msg_buf, const char *color)
Definition libgdiagnostics.cc:2792
void diagnostic_manager_debug_dump_logical_location(const diagnostic_manager *diag_mgr, const diagnostic_logical_location *loc, FILE *out)
Definition libgdiagnostics.cc:1986
void diagnostic_message_buffer_append_event_id(diagnostic_message_buffer *msg_buf, diagnostic_event_id event_id)
Definition libgdiagnostics.cc:2743
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:2309
void diagnostic_message_buffer_append_byte(diagnostic_message_buffer *msg_buf, char ch)
Definition libgdiagnostics.cc:2714
diagnostic_file * diagnostic_physical_location_get_file(const diagnostic_physical_location *physical_loc)
Definition libgdiagnostics.cc:2360
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:1908
void diagnostic_manager_set_version_url(diagnostic_manager *diag_mgr, const char *value)
Definition libgdiagnostics.cc:1740
void diagnostic_message_buffer_end_url(diagnostic_message_buffer *msg_buf)
Definition libgdiagnostics.cc:2765
void diagnostic_message_buffer_end_quote(diagnostic_message_buffer *msg_buf)
Definition libgdiagnostics.cc:2783
void diagnostic_file_set_buffered_content(diagnostic_file *file, const char *buf, size_t sz)
Definition libgdiagnostics.cc:1860
void diagnostic_set_logical_location(diagnostic *diag, const diagnostic_logical_location *logical_loc)
Definition libgdiagnostics.cc:2173
void diagnostic_message_buffer_end_color(diagnostic_message_buffer *msg_buf)
Definition libgdiagnostics.cc:2804
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:2575
void diagnostic_add_fix_it_hint_replace(diagnostic *diag, const diagnostic_physical_location *loc, const char *replacement)
Definition libgdiagnostics.cc:2216
void diagnostic_manager_debug_dump_location(const diagnostic_manager *diag_mgr, const diagnostic_physical_location *loc, FILE *out)
Definition libgdiagnostics.cc:1939
void diagnostic_manager_set_version_string(diagnostic_manager *diag_mgr, const char *value)
Definition libgdiagnostics.cc:1728
void diagnostic_add_location_with_label(diagnostic *diag, const diagnostic_physical_location *loc, const char *text)
Definition libgdiagnostics.cc:2159
diagnostic_file * diagnostic_manager_new_file(diagnostic_manager *diag_mgr, const char *name, const char *sarif_source_language)
Definition libgdiagnostics.cc:1847
void diagnostic_manager_take_global_graph(diagnostic_manager *manager, diagnostic_graph *graph)
Definition libgdiagnostics.cc:2521
void diagnostic_finish_va(diagnostic *diag, const char *gmsgid, va_list *args)
Definition libgdiagnostics.cc:2343
void diagnostic_execution_path_release(diagnostic_execution_path *path)
Definition libgdiagnostics.cc:2277
void diagnostic_add_fix_it_hint_insert_after(diagnostic *diag, const diagnostic_physical_location *loc, const char *addition)
Definition libgdiagnostics.cc:2200
void diagnostic_message_buffer_begin_url(diagnostic_message_buffer *msg_buf, const char *url)
Definition libgdiagnostics.cc:2753
void diagnostic_manager_debug_dump_file(diagnostic_manager *, const diagnostic_file *file, FILE *out)
Definition libgdiagnostics.cc:1871
void diagnostic_finish_via_msg_buf(diagnostic *diag, diagnostic_message_buffer *msg_buf)
Definition libgdiagnostics.cc:2825
void diagnostic_node_set_logical_location(diagnostic_node *node, const diagnostic_logical_location *logical_loc)
Definition libgdiagnostics.cc:2637
void diagnostic_text_sink_set_source_printing_enabled(diagnostic_text_sink *text_sink, int value)
Definition libgdiagnostics.cc:1768
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:1895
diagnostic_edge * diagnostic_graph_get_edge_by_id(diagnostic_graph *graph, const char *edge_id)
Definition libgdiagnostics.cc:2603
diagnostic_execution_path * diagnostic_manager_new_execution_path(diagnostic_manager *manager)
Definition libgdiagnostics.cc:2255
void diagnostic_take_execution_path(diagnostic *diag, diagnostic_execution_path *path)
Definition libgdiagnostics.cc:2265
diagnostic_graph * diagnostic_manager_new_graph(diagnostic_manager *manager)
Definition libgdiagnostics.cc:2511
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:2123
diagnostic * diagnostic_begin(diagnostic_manager *diag_mgr, enum diagnostic_level level) LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL(1)
Definition libgdiagnostics.cc:2101
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_end_group(diagnostic_manager *diag_mgr) LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL(1)
Definition libgdiagnostics.cc:2092
#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:2691
void diagnostic_set_cwe(diagnostic *diag, unsigned cwe_id) LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL(1)
Definition libgdiagnostics.cc:2112
void diagnostic_manager_set_tool_name(diagnostic_manager *diag_mgr, const char *value) LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL(2)
Definition libgdiagnostics.cc:1704
diagnostic_message_buffer * diagnostic_message_buffer_new(void)
Definition libgdiagnostics.cc:2676
void diagnostic_manager_set_analysis_target(diagnostic_manager *mgr, const diagnostic_file *file) LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL(2)
Definition libgdiagnostics.cc:2465
diagnostic_manager * diagnostic_manager_new(void)
Definition libgdiagnostics.cc:1688
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:2387
void diagnostic_message_buffer_release(diagnostic_message_buffer *msg_buf) LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL(1)
Definition libgdiagnostics.cc:2684
#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:2083
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:2371
void diagnostic_manager_release(diagnostic_manager *) LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL(1)
Definition libgdiagnostics.cc:1696
const char * diagnostic_logical_location_get_fully_qualified_name(const diagnostic_logical_location *loc) LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL(1)
Definition libgdiagnostics.cc:2395
const diagnostic_logical_location * diagnostic_logical_location_get_parent(const diagnostic_logical_location *loc) LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL(1)
Definition libgdiagnostics.cc:2379
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:2444
const char * diagnostic_logical_location_get_decorated_name(const diagnostic_logical_location *loc) LIBGDIAGNOSTICS_PARAM_MUST_BE_NON_NULL(1)
Definition libgdiagnostics.cc:2403
@ text
Definition logical-location.h:49
@ value
Definition logical-location.h:59
Definition genautomata.cc:601
Definition libgdiagnostics.cc:978
Definition libgdiagnostics.cc:1100
Definition libgdiagnostics.cc:117
Definition libgdiagnostics.cc:955
Definition libgdiagnostics.cc:174
Definition libgdiagnostics.cc:630
Definition libgdiagnostics.cc:353
Definition libgdiagnostics.cc:969
Definition libgdiagnostics.cc:150
Definition libgdiagnostics.cc:229
Definition libgdiagnostics.cc:1201
Definition gengtype.h:377