| 89 | } |
| 90 | |
| 91 | void emptyReport() |
| 92 | { |
| 93 | SarifReport report; |
| 94 | std::string sarif = report.serialize("TestProduct"); |
| 95 | |
| 96 | picojson::value json; |
| 97 | ASSERT(parseAndValidateJson(sarif, json)); |
| 98 | |
| 99 | const picojson::object& root = json.get<picojson::object>(); |
| 100 | ASSERT_EQUALS("2.1.0", root.at("version").get<std::string>()); |
| 101 | ASSERT(root.at("$schema").get<std::string>().find("sarif-schema-2.1.0") != std::string::npos); |
| 102 | |
| 103 | // From SARIF specification (https://docs.oasis-open.org/sarif/sarif/v2.1.0/errata01/os/sarif-v2.1.0-errata01-os-complete.html#_Toc141790730): |
| 104 | // Although the order in which properties appear in a JSON object value is not semantically significant, the version property SHOULD appear first. |
| 105 | ASSERT_EQUALS("{\n \"version\": \"2.1.0\"", sarif.substr(0,22)); |
| 106 | |
| 107 | const picojson::array& runs = root.at("runs").get<picojson::array>(); |
| 108 | ASSERT_EQUALS(1U, runs.size()); |
| 109 | |
| 110 | const picojson::object& cur_run = runs[0].get<picojson::object>(); |
| 111 | const picojson::array& results = cur_run.at("results").get<picojson::array>(); |
| 112 | ASSERT_EQUALS(0U, results.size()); |
| 113 | |
| 114 | const picojson::object& tool = cur_run.at("tool").get<picojson::object>(); |
| 115 | const picojson::object& driver = tool.at("driver").get<picojson::object>(); |
| 116 | const picojson::array& rules = driver.at("rules").get<picojson::array>(); |
| 117 | ASSERT_EQUALS(0U, rules.size()); |
| 118 | } |
| 119 | |
| 120 | void singleError() |
| 121 | { |