| 138 | } |
| 139 | |
| 140 | picojson::array SarifReport::serializeResults() const |
| 141 | { |
| 142 | picojson::array results; |
| 143 | for (const auto& finding : mFindings) { |
| 144 | // github only supports findings with locations |
| 145 | if (finding.callStack.empty()) |
| 146 | continue; |
| 147 | picojson::object res; |
| 148 | res["level"] = picojson::value(sarifSeverity(finding)); |
| 149 | res["locations"] = picojson::value(serializeLocations(finding)); |
| 150 | picojson::object message; |
| 151 | message["text"] = picojson::value(finding.shortMessage()); |
| 152 | res["message"] = picojson::value(message); |
| 153 | res["ruleId"] = picojson::value(finding.id); |
| 154 | if (finding.hash != 0) { |
| 155 | picojson::object partialFingerprints; |
| 156 | partialFingerprints["hash/v1"] = picojson::value(std::to_string(finding.hash)); |
| 157 | res["partialFingerprints"] = picojson::value(partialFingerprints); |
| 158 | } |
| 159 | results.emplace_back(res); |
| 160 | } |
| 161 | return results; |
| 162 | } |
| 163 | |
| 164 | picojson::value SarifReport::serializeRuns(const std::string& productName, const std::string& version) const |
| 165 | { |