Skip to main content

ValidationReport Class

Report produced by running a ContractRegistry. More...

Declaration

class simaai::neat::ValidationReport { ... }

Included Headers

#include <ValidationReport.h>

Public Constructors Index

ValidationReport ()=default

Public Member Functions Index

voidadd_issue (ValidationIssue issue)
voidadd_info (std::string contract_id, std::string code, std::string msg, int node_index=-1, std::string node_kind={}, std::string node_label={})
voidadd_warning (std::string contract_id, std::string code, std::string msg, int node_index=-1, std::string node_kind={}, std::string node_label={})
voidadd_error (std::string contract_id, std::string code, std::string msg, int node_index=-1, std::string node_kind={}, std::string node_label={})
voidnote_contract_run (std::string id)
voidset_mode (int mode)
intmode () const
const std::vector< ValidationIssue > &issues () const noexcept
const std::vector< std::string > &contracts_run () const noexcept
boolok () const noexcept
boolhas_errors () const noexcept
std::size_terror_count () const noexcept
std::size_twarning_count () const noexcept
std::size_tinfo_count () const noexcept
std::stringto_string () const
std::stringto_json () const

Private Member Attributes Index

intmode_ = 0
std::vector< std::string >contracts_run_
std::vector< ValidationIssue >issues_

Private Static Functions Index

static std::stringjson_escape_ (const std::string &s)

Description

Report produced by running a ContractRegistry.

STL-only, CI-friendly, safe to serialize.

Definition at line 60 of file ValidationReport.h.

Public Constructors

ValidationReport()

simaai::neat::ValidationReport::ValidationReport ()
default

Definition at line 62 of file ValidationReport.h.

Public Member Functions

add_error()

void simaai::neat::ValidationReport::add_error (std::string contract_id, std::string code, std::string msg, int node_index=-1, std::string node_kind={}, std::string node_label={})
inline

Definition at line 81 of file ValidationReport.h.

81 void add_error(std::string contract_id, std::string code, std::string msg, int node_index = -1,
82 std::string node_kind = {}, std::string node_label = {}) {
83 add_issue({ValidationSeverity::Error, std::move(contract_id), std::move(code), std::move(msg),
84 node_index, std::move(node_kind), std::move(node_label)});
85 }

add_info()

void simaai::neat::ValidationReport::add_info (std::string contract_id, std::string code, std::string msg, int node_index=-1, std::string node_kind={}, std::string node_label={})
inline

Definition at line 69 of file ValidationReport.h.

69 void add_info(std::string contract_id, std::string code, std::string msg, int node_index = -1,
70 std::string node_kind = {}, std::string node_label = {}) {
71 add_issue({ValidationSeverity::Info, std::move(contract_id), std::move(code), std::move(msg),
72 node_index, std::move(node_kind), std::move(node_label)});
73 }

add_issue()

void simaai::neat::ValidationReport::add_issue (ValidationIssue issue)
inline

Definition at line 65 of file ValidationReport.h.

66 issues_.push_back(std::move(issue));
67 }

add_warning()

void simaai::neat::ValidationReport::add_warning (std::string contract_id, std::string code, std::string msg, int node_index=-1, std::string node_kind={}, std::string node_label={})
inline

Definition at line 75 of file ValidationReport.h.

75 void add_warning(std::string contract_id, std::string code, std::string msg, int node_index = -1,
76 std::string node_kind = {}, std::string node_label = {}) {
77 add_issue({ValidationSeverity::Warning, std::move(contract_id), std::move(code), std::move(msg),
78 node_index, std::move(node_kind), std::move(node_label)});
79 }

contracts_run()

const std::vector<std::string>& simaai::neat::ValidationReport::contracts_run ()
inline noexcept

Definition at line 103 of file ValidationReport.h.

103 const std::vector<std::string>& contracts_run() const noexcept {
104 return contracts_run_;
105 }

error_count()

std::size_t simaai::neat::ValidationReport::error_count ()
inline noexcept

Definition at line 119 of file ValidationReport.h.

119 std::size_t error_count() const noexcept {
120 std::size_t n = 0;
121 for (const auto& i : issues_)
122 if (i.severity == ValidationSeverity::Error)
123 ++n;
124 return n;
125 }

has_errors()

bool simaai::neat::ValidationReport::has_errors ()
inline noexcept

Definition at line 111 of file ValidationReport.h.

111 bool has_errors() const noexcept {
112 for (const auto& i : issues_) {
113 if (i.severity == ValidationSeverity::Error)
114 return true;
115 }
116 return false;
117 }

info_count()

std::size_t simaai::neat::ValidationReport::info_count ()
inline noexcept

Definition at line 135 of file ValidationReport.h.

135 std::size_t info_count() const noexcept {
136 std::size_t n = 0;
137 for (const auto& i : issues_)
138 if (i.severity == ValidationSeverity::Info)
139 ++n;
140 return n;
141 }

issues()

const std::vector<ValidationIssue>& simaai::neat::ValidationReport::issues ()
inline noexcept

Definition at line 100 of file ValidationReport.h.

100 const std::vector<ValidationIssue>& issues() const noexcept {
101 return issues_;
102 }

mode()

int simaai::neat::ValidationReport::mode ()
inline

Definition at line 95 of file ValidationReport.h.

95 int mode() const {
96 return mode_;
97 }

note_contract_run()

void simaai::neat::ValidationReport::note_contract_run (std::string id)
inline

Definition at line 87 of file ValidationReport.h.

87 void note_contract_run(std::string id) {
88 contracts_run_.push_back(std::move(id));
89 }

ok()

bool simaai::neat::ValidationReport::ok ()
inline noexcept

Definition at line 107 of file ValidationReport.h.

107 bool ok() const noexcept {
108 return !has_errors();
109 }

set_mode()

void simaai::neat::ValidationReport::set_mode (int mode)
inline

Definition at line 92 of file ValidationReport.h.

92 void set_mode(int mode) {
93 mode_ = mode;
94 }

to_json()

std::string simaai::neat::ValidationReport::to_json ()
inline

Definition at line 169 of file ValidationReport.h.

169 std::string to_json() const {
170 std::ostringstream oss;
171 oss << "{";
172 oss << "\"ok\":" << (ok() ? "true" : "false") << ",";
173 oss << "\"mode\":" << mode_ << ",";
174 oss << "\"errors\":" << error_count() << ",";
175 oss << "\"warnings\":" << warning_count() << ",";
176 oss << "\"info\":" << info_count() << ",";
177
178 // contracts_run
179 oss << "\"contracts_run\":[";
180 for (std::size_t i = 0; i < contracts_run_.size(); ++i) {
181 if (i)
182 oss << ",";
183 oss << "\"" << json_escape_(contracts_run_[i]) << "\"";
184 }
185 oss << "],";
186
187 // issues
188 oss << "\"issues\":[";
189 for (std::size_t i = 0; i < issues_.size(); ++i) {
190 if (i)
191 oss << ",";
192 const auto& it = issues_[i];
193 oss << "{";
194 oss << "\"severity\":\"" << json_escape_(::simaai::neat::to_string(it.severity)) << "\",";
195 oss << "\"contract_id\":\"" << json_escape_(it.contract_id) << "\",";
196 oss << "\"code\":\"" << json_escape_(it.code) << "\",";
197 oss << "\"message\":\"" << json_escape_(it.message) << "\",";
198 oss << "\"node_index\":" << it.node_index << ",";
199 oss << "\"node_kind\":\"" << json_escape_(it.node_kind) << "\",";
200 oss << "\"node_label\":\"" << json_escape_(it.node_label) << "\"";
201 oss << "}";
202 }
203 oss << "]";
204
205 oss << "}";
206 return oss.str();
207 }

to_string()

std::string simaai::neat::ValidationReport::to_string ()
inline

Definition at line 144 of file ValidationReport.h.

144 std::string to_string() const {
145 std::ostringstream oss;
146 oss << (ok() ? "OK" : "FAILED") << " (errors=" << error_count()
147 << ", warnings=" << warning_count() << ", info=" << info_count() << ")\n";
148
149 for (const auto& i : issues_) {
150 oss << "- [" << ::simaai::neat::to_string(i.severity) << "] "
151 << (i.contract_id.empty() ? "<contract?>" : i.contract_id);
152
153 if (!i.code.empty())
154 oss << " {" << i.code << "}";
155
156 if (i.node_index >= 0) {
157 oss << " @node[" << i.node_index << "]";
158 if (!i.node_kind.empty())
159 oss << ":" << i.node_kind;
160 if (!i.node_label.empty())
161 oss << " [" << i.node_label << "]";
162 }
163
164 oss << ": " << i.message << "\n";
165 }
166 return oss.str();
167 }

warning_count()

std::size_t simaai::neat::ValidationReport::warning_count ()
inline noexcept

Definition at line 127 of file ValidationReport.h.

127 std::size_t warning_count() const noexcept {
128 std::size_t n = 0;
129 for (const auto& i : issues_)
130 if (i.severity == ValidationSeverity::Warning)
131 ++n;
132 return n;
133 }

Private Member Attributes

contracts_run_

std::vector<std::string> simaai::neat::ValidationReport::contracts_run_

Definition at line 253 of file ValidationReport.h.

253 std::vector<std::string> contracts_run_;

issues_

std::vector<ValidationIssue> simaai::neat::ValidationReport::issues_

Definition at line 254 of file ValidationReport.h.

254 std::vector<ValidationIssue> issues_;

mode_

int simaai::neat::ValidationReport::mode_ = 0

Definition at line 252 of file ValidationReport.h.

252 int mode_ = 0;

Private Static Functions

json_escape_()

std::string simaai::neat::ValidationReport::json_escape_ (const std::string & s)
inline static

Definition at line 210 of file ValidationReport.h.

210 static std::string json_escape_(const std::string& s) {
211 std::string out;
212 out.reserve(s.size() + 16);
213 for (char c : s) {
214 switch (c) {
215 case '\\':
216 out += "\\\\";
217 break;
218 case '"':
219 out += "\\\"";
220 break;
221 case '\b':
222 out += "\\b";
223 break;
224 case '\f':
225 out += "\\f";
226 break;
227 case '\n':
228 out += "\\n";
229 break;
230 case '\r':
231 out += "\\r";
232 break;
233 case '\t':
234 out += "\\t";
235 break;
236 default:
237 // Control chars -> escape as \u00XX
238 if (static_cast<unsigned char>(c) < 0x20) {
239 const char* hex = "0123456789abcdef";
240 out += "\\u00";
241 out += hex[(c >> 4) & 0xF];
242 out += hex[c & 0xF];
243 } else {
244 out += c;
245 }
246 break;
247 }
248 }
249 return out;
250 }

The documentation for this class was generated from the following file:


Generated via doxygen2docusaurus 2.0.0 by Doxygen 1.9.1.