props.set_string (PROPERTY_PREFIX "sm", m_sm->get_name ());
props.set_integer (PROPERTY_PREFIX "enode", m_enode->m_index);
props.set_integer (PROPERTY_PREFIX "snode", m_snode->m_index);
+ if (m_stmt)
+ {
+ pretty_printer pp;
+ pp_gimple_stmt_1 (&pp, m_stmt, 0, (dump_flags_t)0);
+ props.set_string (PROPERTY_PREFIX "stmt", pp_formatted_text (&pp));
+ }
+ if (m_var)
+ props.set (PROPERTY_PREFIX "var", tree_to_json (m_var));
if (m_sval)
props.set (PROPERTY_PREFIX "sval", m_sval->to_json ());
if (m_state)
props.set (PROPERTY_PREFIX "state", m_state->to_json ());
- if (m_best_epath)
+ // TODO: m_best_epath
props.set_integer (PROPERTY_PREFIX "idx", m_idx);
+ if (m_duplicates.length () > 0)
+ {
+ auto duplicates_arr = ::make_unique<json::array> ();
+ for (auto iter : m_duplicates)
+ {
+ auto sd_obj = ::make_unique<sarif_object> ();
+ iter->maybe_add_sarif_properties (*sd_obj);
+ duplicates_arr->append (std::move (sd_obj));
+ }
+ props.set<json::array> (PROPERTY_PREFIX "duplicates",
+ std::move (duplicates_arr));
+ }
+#undef PROPERTY_PREFIX
+
+#define PROPERTY_PREFIX "gcc/analyzer/pending_diagnostic/"
+ props.set_string (PROPERTY_PREFIX "kind", m_d->get_kind ());
#undef PROPERTY_PREFIX
/* Potentially add pending_diagnostic-specific properties. */
return true;
}
+ void
+ maybe_add_sarif_properties (sarif_object &result_obj) const final override
+ {
+ sarif_property_bag &props = result_obj.get_or_create_properties ();
+#define PROPERTY_PREFIX "gcc/analyzer/poisoned_value_diagnostic/"
+ props.set (PROPERTY_PREFIX "expr", tree_to_json (m_expr));
+ props.set_string (PROPERTY_PREFIX "kind", poison_kind_to_str (m_pkind));
+ if (m_src_region)
+ props.set (PROPERTY_PREFIX "src_region", m_src_region->to_json ());
+ props.set (PROPERTY_PREFIX "check_expr", tree_to_json (m_check_expr));
+#undef PROPERTY_PREFIX
+ }
+
private:
tree m_expr;
enum poison_kind m_pkind;