SARIF 2.2 now has a Committee Specification Draft 01, so update
version=sarif-2.2-prelease to use that, rather than a snapshot from
two years ago.

Successfully bootstrapped & regrtested on aarch64-unknown-linux-gnu.
Pushed to trunk as r17-5514-g277bce3287c5dc.

gcc/ChangeLog:
        * diagnostics/output-spec.cc
        (sarif_scheme_handler::maybe_handle_kv): Update enum value for
        SARIF 2.2 from sarif_version::v2_2_prerelease_2024_08_08
        to sarif_version::v2_2_prerelease_csd01.
        * diagnostics/sarif-sink.cc
        (sarif_invocation::add_notification_for_ice): Likewise.
        (add_related_location): Likewise.
        (sarif_version_to_url): Likewise.  Update URL for SARIF 2.2
        schema.
        (sarif_version_to_property): Update enum value for SARIF 2.2.
        (get_dump_string_for_sarif_version): Likewise, also updating
        description.
        * diagnostics/sarif-sink.h (enum class sarif_version): Replace
        v2_2_prerelease_2024_08_08 with v2_2_prerelease_csd01.
        * libgdiagnostics.cc (diagnostic_manager_add_sarif_sink):
        Likewise.

gcc/testsuite/ChangeLog:
        * gcc.dg/plugin/crash-test-ice-in-header-sarif-2_2.py: Update
        expected URL for schema.
        * lib/sarif-schema-2.2-prerelease-2024-08-08.json: Replace with...
        * lib/sarif-schema-2.2-prerelease-csd01.json: ...this.
        * lib/scansarif.exp (verify-sarif-file): Update for change in
        name of schema file.

Signed-off-by: David Malcolm <[email protected]>
---
 gcc/diagnostics/output-spec.cc                |  2 +-
 gcc/diagnostics/sarif-sink.cc                 | 17 +++++------
 gcc/diagnostics/sarif-sink.h                  |  2 +-
 gcc/libgdiagnostics.cc                        |  2 +-
 .../crash-test-ice-in-header-sarif-2_2.py     |  2 +-
 ...=> sarif-schema-2.2-prerelease-csd01.json} | 29 ++++++++++++++++++-
 gcc/testsuite/lib/scansarif.exp               |  2 +-
 7 files changed, 41 insertions(+), 15 deletions(-)
 rename gcc/testsuite/lib/{sarif-schema-2.2-prerelease-2024-08-08.json => 
sarif-schema-2.2-prerelease-csd01.json} (98%)

diff --git a/gcc/diagnostics/output-spec.cc b/gcc/diagnostics/output-spec.cc
index d30b12fc3c2..6089f85dcd8 100644
--- a/gcc/diagnostics/output-spec.cc
+++ b/gcc/diagnostics/output-spec.cc
@@ -558,7 +558,7 @@ sarif_scheme_handler::maybe_handle_kv (const context &ctxt,
       static const std::array<std::pair<const char *, enum sarif_version>,
                              (size_t)sarif_version::num_versions> value_names
        {{{"2.1", sarif_version::v2_1_0},
-         {"2.2-prerelease", sarif_version::v2_2_prerelease_2024_08_08}}};
+         {"2.2-prerelease", sarif_version::v2_2_prerelease_csd01}}};
       return parse_enum_value<enum sarif_version>
        (ctxt,
         key, value,
diff --git a/gcc/diagnostics/sarif-sink.cc b/gcc/diagnostics/sarif-sink.cc
index d56802c957f..834b6aec3ad 100644
--- a/gcc/diagnostics/sarif-sink.cc
+++ b/gcc/diagnostics/sarif-sink.cc
@@ -1092,7 +1092,7 @@ sarif_invocation::add_notification_for_ice (const 
diagnostic_info &diagnostic,
 
   /* Support for related locations within a notification was added
      in SARIF 2.2; see https://github.com/oasis-tcs/sarif-spec/issues/540  */
-  if (builder.get_version () >= sarif_version::v2_2_prerelease_2024_08_08)
+  if (builder.get_version () >= sarif_version::v2_2_prerelease_csd01)
     notification->process_worklist (builder);
 
   m_notifications_arr->append<sarif_ice_notification>
@@ -1552,7 +1552,7 @@ add_related_location (std::unique_ptr<sarif_location> 
location_obj,
 {
   /* Support for related locations within a notification was added
      in SARIF 2.2; see https://github.com/oasis-tcs/sarif-spec/issues/540  */
-  if (builder.get_version () >= sarif_version::v2_2_prerelease_2024_08_08)
+  if (builder.get_version () >= sarif_version::v2_2_prerelease_csd01)
     sarif_location_manager::add_related_location (std::move (location_obj),
                                                  builder);
   /* Otherwise implicitly discard LOCATION_OBJ.  */
@@ -3392,8 +3392,8 @@ sarif_version_to_url (enum sarif_version version)
       gcc_unreachable ();
     case sarif_version::v2_1_0:
       return 
"https://docs.oasis-open.org/sarif/sarif/v2.1.0/errata01/os/schemas/sarif-schema-2.1.0.json";;
-    case sarif_version::v2_2_prerelease_2024_08_08:
-      return 
"https://raw.githubusercontent.com/oasis-tcs/sarif-spec/refs/tags/2.2-prerelease-2024-08-08/sarif-2.2/schema/sarif-2-2.schema.json";;
+    case sarif_version::v2_2_prerelease_csd01:
+      return 
"https://docs.oasis-open.org/sarif/sarif/v2.2/csd01/schema/sarif.json";;
     }
 }
 
@@ -3409,9 +3409,8 @@ sarif_version_to_property (enum sarif_version version)
       gcc_unreachable ();
     case sarif_version::v2_1_0:
       return "2.1.0";
-    case sarif_version::v2_2_prerelease_2024_08_08:
-      /* I would have used "2.2-prerelease-2024-08-08",
-        but the schema only accepts "2.2".  */
+    case sarif_version::v2_2_prerelease_csd01:
+      /* The schema only accepts "2.2".  */
       return "2.2";
     }
 }
@@ -4608,8 +4607,8 @@ get_dump_string_for_sarif_version (enum sarif_version 
version)
       gcc_unreachable ();
     case sarif_version::v2_1_0:
       return "v2_1_0";
-    case sarif_version::v2_2_prerelease_2024_08_08:
-      return "v2_2_prerelease_2024_08_08";
+    case sarif_version::v2_2_prerelease_csd01:
+      return "v2_2_prerelease_csd01";
     }
 }
 
diff --git a/gcc/diagnostics/sarif-sink.h b/gcc/diagnostics/sarif-sink.h
index 2560b4a6651..9dc354489c3 100644
--- a/gcc/diagnostics/sarif-sink.h
+++ b/gcc/diagnostics/sarif-sink.h
@@ -97,7 +97,7 @@ private:
 enum class sarif_version
 {
   v2_1_0,
-  v2_2_prerelease_2024_08_08,
+  v2_2_prerelease_csd01,
 
   num_versions
 };
diff --git a/gcc/libgdiagnostics.cc b/gcc/libgdiagnostics.cc
index 3e61322541a..46c37117677 100644
--- a/gcc/libgdiagnostics.cc
+++ b/gcc/libgdiagnostics.cc
@@ -1701,7 +1701,7 @@ diagnostic_manager_add_sarif_sink (diagnostic_manager 
*diag_mgr,
       break;
     case DIAGNOSTIC_SARIF_VERSION_2_2_PRERELEASE:
       sarif_gen_opts.m_version
-       = diagnostics::sarif_version::v2_2_prerelease_2024_08_08;
+       = diagnostics::sarif_version::v2_2_prerelease_csd01;
       break;
     }
 
diff --git a/gcc/testsuite/gcc.dg/plugin/crash-test-ice-in-header-sarif-2_2.py 
b/gcc/testsuite/gcc.dg/plugin/crash-test-ice-in-header-sarif-2_2.py
index d3e4d5403fe..d74ae30db79 100644
--- a/gcc/testsuite/gcc.dg/plugin/crash-test-ice-in-header-sarif-2_2.py
+++ b/gcc/testsuite/gcc.dg/plugin/crash-test-ice-in-header-sarif-2_2.py
@@ -20,7 +20,7 @@ def sarif():
 def test_basics(sarif):
     # We expect SARIF 2.2
     schema = sarif['$schema']
-    assert schema == 
"https://raw.githubusercontent.com/oasis-tcs/sarif-spec/refs/tags/2.2-prerelease-2024-08-08/sarif-2.2/schema/sarif-2-2.schema.json";
+    assert schema == 
"https://docs.oasis-open.org/sarif/sarif/v2.2/csd01/schema/sarif.json";
 
     version = sarif['version']
     assert version == "2.2"
diff --git a/gcc/testsuite/lib/sarif-schema-2.2-prerelease-2024-08-08.json 
b/gcc/testsuite/lib/sarif-schema-2.2-prerelease-csd01.json
similarity index 98%
rename from gcc/testsuite/lib/sarif-schema-2.2-prerelease-2024-08-08.json
rename to gcc/testsuite/lib/sarif-schema-2.2-prerelease-csd01.json
index 4fa101b60fd..2031820141b 100644
--- a/gcc/testsuite/lib/sarif-schema-2.2-prerelease-2024-08-08.json
+++ b/gcc/testsuite/lib/sarif-schema-2.2-prerelease-csd01.json
@@ -1,7 +1,7 @@
 {
   "$schema": "https://json-schema.org/draft/2020-12/schema";,
   "title": "Static Analysis Results Format (SARIF) Version 2.2 JSON Schema",
-  "$id": 
"https://docs.oasis-open.org/sarif/sarif/v2.2/schemas/sarif-2.2.schema.json";,
+  "$id": "https://docs.oasis-open.org/sarif/sarif/v2.2/schema/sarif.json";,
   "description": "Static Analysis Results Format (SARIF) Version 2.2 JSON 
Schema: a standard format for the output of static analysis tools.",
   "additionalProperties": false,
   "type": "object",
@@ -146,6 +146,7 @@
             "enum": [
               "analysisTarget",
               "attachment",
+              "conversionSource",
               "responseFile",
               "resultFile",
               "scannedFile",
@@ -159,10 +160,12 @@
               "uncontrolled",
               "driver",
               "extension",
+              "externalPropertyFile",
               "translation",
               "taxonomy",
               "policy",
               "referencedOnCommandLine",
+              "repositoryRoot",
               "memoryContents",
               "directory",
               "userSpecifiedConfiguration",
@@ -1738,6 +1741,18 @@
             "$ref": "#/$defs/reportingDescriptorRelationship"
           }
         },
+        "precision": {
+          "description": "A number between 0.0 and 100.0 inclusive, 
representing the tool or tool maintainer's confidence that results produced by 
the rule are true positives.",
+          "type": "number",
+          "minimum": 0.0,
+          "maximum": 100.0
+        },
+        "securitySeverity": {
+          "description": "A number between 0.0 and 100.0 inclusive, 
representing the severity of the class of vulnerabilities found by results 
produced by the rule.",
+          "type": "number",
+          "minimum": 0.0,
+          "maximum": 100.0
+        },
         "properties": {
           "description": "Key/value pairs that provide additional information 
about the report.",
           "$ref": "#/$defs/propertyBag"
@@ -2029,6 +2044,18 @@
           "minimum": -1.0,
           "maximum": 100.0
         },
+        "precision": {
+          "description": "A number between 0.0 and 100.0 inclusive, 
representing the tool or tool maintainer's confidence that this result is a 
true positive.",
+          "type": "number",
+          "minimum": 0.0,
+          "maximum": 100.0
+        },
+        "securitySeverity": {
+          "description": "A number between 0.0 and 100.0 inclusive, 
representing the severity of the class of vulnerabilities found by this 
result.",
+          "type": "number",
+          "minimum": 0.0,
+          "maximum": 100.0
+        },
         "attachments": {
           "description": "A set of artifacts relevant to the result.",
           "type": "array",
diff --git a/gcc/testsuite/lib/scansarif.exp b/gcc/testsuite/lib/scansarif.exp
index 4dfdf393074..bb28e836398 100644
--- a/gcc/testsuite/lib/scansarif.exp
+++ b/gcc/testsuite/lib/scansarif.exp
@@ -113,7 +113,7 @@ proc verify-sarif-file { args } {
     if { $version == "2.1" } {
        set schema_file $srcdir/lib/sarif-schema-2.1.0.json
     } elseif { $version == "2.2" } {
-       set schema_file $srcdir/lib/sarif-schema-2.2-prerelease-2024-08-08.json
+       set schema_file $srcdir/lib/sarif-schema-2.2-prerelease-csd01.json
     } else {
        fail "unrecognized sarif version: $version"
        return
-- 
2.56.0

Reply via email to