
As another followup to r14-6057-g12b67d1e13b3cf, optionally add SARIF property bags to threadFlowLocation objects when writing out diagnostic paths, and add analyzer-specific properties to them. This was useful for debugging PR analyzer/112790. gcc/analyzer/ChangeLog: * checker-event.cc: Include "diagnostic-format-sarif.h" and "tree-logical-location.h". (checker_event::maybe_add_sarif_properties): New. (superedge_event::maybe_add_sarif_properties): New. (superedge_event::superedge_event): Add comment. * checker-event.h (checker_event::maybe_add_sarif_properties): New decl. (superedge_event::maybe_add_sarif_properties): New decl. gcc/ChangeLog: * diagnostic-format-sarif.cc (sarif_builder::make_logical_location_object): Convert to... (make_sarif_logical_location_object): ...this. (sarif_builder::set_any_logical_locs_arr): Update for above change. (sarif_builder::make_thread_flow_location_object): Call maybe_add_sarif_properties on each diagnostic_event. * diagnostic-format-sarif.h (class logical_location): New forward decl. (make_sarif_logical_location_object): New decl. * diagnostic-path.h (class sarif_object): New forward decl. (diagnostic_event::maybe_add_sarif_properties): New vfunc. Signed-off-by: David Malcolm <dmalcolm@redhat.com>
50 lines
1.6 KiB
C++
50 lines
1.6 KiB
C++
/* SARIF output for diagnostics.
|
|
Copyright (C) 2023-2024 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/>. */
|
|
|
|
#ifndef GCC_DIAGNOSTIC_FORMAT_SARIF_H
|
|
#define GCC_DIAGNOSTIC_FORMAT_SARIF_H
|
|
|
|
#include "json.h"
|
|
|
|
class logical_location;
|
|
|
|
/* Concrete subclass of json::object for SARIF property bags
|
|
(SARIF v2.1.0 section 3.8). */
|
|
|
|
class sarif_property_bag : public json::object
|
|
{
|
|
};
|
|
|
|
/* Concrete subclass of json::object for SARIF objects that can
|
|
contain property bags (as per SARIF v2.1.0 section 3.8.1, which has:
|
|
"In addition to those properties that are explicitly documented, every
|
|
object defined in this document MAY contain a property named properties
|
|
whose value is a property bag.") */
|
|
|
|
class sarif_object : public json::object
|
|
{
|
|
public:
|
|
sarif_property_bag &get_or_create_properties ();
|
|
};
|
|
|
|
extern json::object *
|
|
make_sarif_logical_location_object (const logical_location &logical_loc);
|
|
|
|
#endif /* ! GCC_DIAGNOSTIC_FORMAT_SARIF_H */
|