21#ifndef GCC_ANALYZER_DIAGNOSTIC_MANAGER_H
22#define GCC_ANALYZER_DIAGNOSTIC_MANAGER_H
57 std::unique_ptr<json::object>
to_json ()
const;
72extern std::unique_ptr<pending_location::fixer_for_epath>
85 std::unique_ptr<pending_diagnostic> d,
90 void add_note (std::unique_ptr<pending_note> pn);
91 void add_event (std::unique_ptr<checker_event> event);
93 std::unique_ptr<json::object>
to_json ()
const;
129 std::unique_ptr<pending_diagnostic>
m_d;
167 std::unique_ptr<json::object>
to_json ()
const;
174 std::unique_ptr<pending_diagnostic> d);
177 std::unique_ptr<pending_diagnostic> d);
Definition checker-path.h:32
void build_emission_path(const path_builder &pb, const exploded_path &epath, checker_path *emission_path) const
unsigned get_num_diagnostics() const
Definition diagnostic-manager.h:187
std::unique_ptr< json::object > to_json() const
const diagnostics::logical_locations::manager & get_logical_location_manager() const
void consolidate_conditions(checker_path *path) const
void add_event_on_final_node(const path_builder &pb, const exploded_node *final_enode, checker_path *emission_path, interesting_t *interest) const
void update_for_unsuitable_sm_exprs(tree *expr) const
void add_note(std::unique_ptr< pending_note > pn)
const int m_verbosity
Definition diagnostic-manager.h:243
diagnostic_manager(logger *logger, engine *eng, int verbosity)
void emit_saved_diagnostics(const exploded_graph &eg)
void emit_saved_diagnostic(const exploded_graph &eg, saved_diagnostic &sd)
void prune_path(checker_path *path, const state_machine *sm, const svalue *sval, state_machine::state_t state) const
int m_num_disabled_diagnostics
Definition diagnostic-manager.h:244
bool significant_edge_p(const path_builder &pb, const exploded_edge &eedge) const
void prune_for_sm_diagnostic(checker_path *path, const state_machine *sm, const svalue *sval, state_machine::state_t state) const
const saved_diagnostic * get_saved_diagnostic(unsigned idx) const
Definition diagnostic-manager.h:195
void prune_for_sm_diagnostic(checker_path *path, const state_machine *sm, tree var, state_machine::state_t state) const
bool add_diagnostic(const state_machine *sm, pending_location &&ploc, tree var, const svalue *sval, state_machine::state_t state, std::unique_ptr< pending_diagnostic > d)
void add_event(std::unique_ptr< checker_event > event)
void finish_pruning(checker_path *path) const
auto_delete_vec< saved_diagnostic > m_saved_diagnostics
Definition diagnostic-manager.h:242
void add_events_for_eedge(const path_builder &pb, const exploded_edge &eedge, checker_path *emission_path, interesting_t *interest) const
bool add_diagnostic(pending_location &&ploc, std::unique_ptr< pending_diagnostic > d)
engine * m_eng
Definition diagnostic-manager.h:241
void consolidate_unwind_events(checker_path *path) const
saved_diagnostic * get_saved_diagnostic(unsigned idx)
Definition diagnostic-manager.h:191
void prune_system_headers(checker_path *path) const
void prune_interproc_events(checker_path *path) const
engine * get_engine() const
Definition diagnostic-manager.h:165
Definition region-model.h:1334
Definition exploded-graph.h:335
Definition exploded-graph.h:783
Definition exploded-graph.h:206
Definition exploded-graph.h:932
Definition exploded-graph.h:960
Definition analyzer-logging.h:34
Definition diagnostic-manager.h:38
virtual void fixup_for_epath(const exploded_path &epath, pending_location &ploc) const =0
virtual ~fixer_for_epath()=default
Definition diagnostic-manager.h:79
void maybe_add_sarif_properties(diagnostics::sarif_object &result_obj) const
void add_any_saved_events(checker_path &dst_path)
void add_duplicate(saved_diagnostic *other)
const state_machine * m_sm
Definition diagnostic-manager.h:124
void emit_any_notes() const
std::unique_ptr< exploded_path > m_best_epath
Definition diagnostic-manager.h:136
pending_location m_ploc
Definition diagnostic-manager.h:125
const exploded_path * get_best_epath() const
Definition diagnostic-manager.h:104
const svalue * m_sval
Definition diagnostic-manager.h:127
void dump_dot_id(pretty_printer *pp) const
auto_delete_vec< pending_note > m_notes
Definition diagnostic-manager.h:140
const feasibility_problem * get_feasibility_problem() const
Definition diagnostic-manager.h:98
std::unique_ptr< feasibility_problem > m_problem
Definition diagnostic-manager.h:137
void add_note(std::unique_ptr< pending_note > pn)
state_machine::state_t m_state
Definition diagnostic-manager.h:128
const supernode * get_supernode() const
void add_event(std::unique_ptr< checker_event > event)
unsigned m_idx
Definition diagnostic-manager.h:135
tree m_var
Definition diagnostic-manager.h:126
DISABLE_COPY_AND_ASSIGN(saved_diagnostic)
bool calc_best_epath(epath_finder *pf)
bool supercedes_p(const saved_diagnostic &other) const
void dump_as_dot_node(pretty_printer *pp) const
std::unique_ptr< pending_diagnostic > m_d
Definition diagnostic-manager.h:129
const exploded_edge * m_trailing_eedge
Definition diagnostic-manager.h:130
std::unique_ptr< json::object > to_json() const
auto_vec< const saved_diagnostic * > m_duplicates
Definition diagnostic-manager.h:139
auto_delete_vec< checker_event > m_saved_events
Definition diagnostic-manager.h:146
unsigned get_epath_length() const
bool operator==(const saved_diagnostic &other) const
unsigned get_num_dupes() const
Definition diagnostic-manager.h:108
saved_diagnostic(const state_machine *sm, pending_location &&ploc, tree var, const svalue *sval, state_machine::state_t state, std::unique_ptr< pending_diagnostic > d, unsigned idx)
unsigned get_index() const
Definition diagnostic-manager.h:110
const state_machine::state * state_t
Definition sm.h:63
Definition supergraph.h:224
Definition logical-locations.h:147
Definition sarif-sink.h:151
Definition genmatch.cc:1506
Definition pretty-print.h:241
static struct path_prefix cpath path
Definition collect2.cc:514
union tree_node * tree
Definition coretypes.h:97
Definition access-diagram.h:30
std::unique_ptr< pending_location::fixer_for_epath > make_ploc_fixer_for_epath_for_leak_diagnostic(const exploded_graph &eg, tree var)
Definition event-loc-info.h:29
Definition pending-diagnostic.h:37
Definition diagnostic-manager.h:35
pending_location(exploded_node *enode, location_t loc)
exploded_node * m_enode
Definition diagnostic-manager.h:61
std::unique_ptr< json::object > to_json() const
event_loc_info m_event_loc_info
Definition diagnostic-manager.h:65
pending_location(exploded_node *enode)
std::unique_ptr< fixer_for_epath > m_fixer_for_epath
Definition diagnostic-manager.h:69
location_t get_location() const
Definition diagnostic-manager.h:52
Definition genautomata.cc:669