Improve JSON parse error output
This commit is contained in:
parent
6aa624c261
commit
abd9fd8089
@ -43,19 +43,38 @@ int PluginInfoCompiler::compile(const QString &inputFile, const QString &outputF
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
QJsonParseError error;
|
QJsonParseError error;
|
||||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonFile.readAll(), &error);
|
QByteArray data = jsonFile.readAll();
|
||||||
|
QJsonDocument jsonDoc = QJsonDocument::fromJson(data, &error);
|
||||||
jsonFile.close();
|
jsonFile.close();
|
||||||
|
|
||||||
if (error.error != QJsonParseError::NoError) {
|
if (error.error != QJsonParseError::NoError) {
|
||||||
qWarning() << "Error parsing input JSON. Aborting.";
|
int errorOffset = error.offset;
|
||||||
qWarning() << "Parser details:" << error.errorString();
|
int newLineIndex = data.indexOf("\n");
|
||||||
|
int lineIndex = 1;
|
||||||
|
while (newLineIndex > 0 && errorOffset > newLineIndex) {
|
||||||
|
data.remove(0, newLineIndex + 2);
|
||||||
|
errorOffset -= (newLineIndex + 2);
|
||||||
|
newLineIndex = data.indexOf("\n");
|
||||||
|
lineIndex++;
|
||||||
|
}
|
||||||
|
if (newLineIndex >= 0) {
|
||||||
|
data = data.left(newLineIndex);
|
||||||
|
}
|
||||||
|
QString spacer;
|
||||||
|
for (int i = 0; i < errorOffset; i++) {
|
||||||
|
spacer += ' ';
|
||||||
|
}
|
||||||
|
QDebug dbg = qWarning().nospace().noquote();
|
||||||
|
dbg << inputFile << ":" << lineIndex << ":" << errorOffset + 2 << ": error: JSON parsing failed: " << error.errorString() << ": " << data.trimmed() << endl;
|
||||||
|
dbg << data << endl;
|
||||||
|
dbg << spacer << "^";
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
QJsonObject jsonObject = QJsonObject::fromVariantMap(jsonDoc.toVariant().toMap());
|
QJsonObject jsonObject = QJsonObject::fromVariantMap(jsonDoc.toVariant().toMap());
|
||||||
|
|
||||||
PluginMetadata metadata(jsonObject);
|
PluginMetadata metadata(jsonObject);
|
||||||
if (!metadata.isValid()) {
|
if (!metadata.isValid()) {
|
||||||
qWarning() << "Plugin JSON failed validation. Aborting.";
|
qWarning().nospace().noquote() << inputFile << ": error: Plugin JSON failed validation. Aborting.";
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user