Skip to content
Snippets Groups Projects
Commit 90a99bb5 authored by Ulf Hermann's avatar Ulf Hermann
Browse files

QtSupport: Parse compile errors from qscxmlc


Change-Id: I2dd5051b34bb10be61ee3de8a85a244e7d5dbbe4
Reviewed-by: default avatarTobias Hunger <tobias.hunger@theqtcompany.com>
parent 8643877c
No related branches found
No related tags found
No related merge requests found
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
namespace QtSupport { namespace QtSupport {
static QLoggingCategory log("qtc.qsxmlcgenerator"); static QLoggingCategory log("qtc.qsxmlcgenerator");
static const char TaskCategory[] = "Task.Category.ExtraCompiler.QScxmlc";
QScxmlcGenerator::QScxmlcGenerator(const ProjectExplorer::Project *project, QScxmlcGenerator::QScxmlcGenerator(const ProjectExplorer::Project *project,
const Utils::FileName &source, const Utils::FileName &source,
...@@ -47,8 +48,29 @@ QScxmlcGenerator::QScxmlcGenerator(const ProjectExplorer::Project *project, ...@@ -47,8 +48,29 @@ QScxmlcGenerator::QScxmlcGenerator(const ProjectExplorer::Project *project,
this, &QScxmlcGenerator::finishProcess); this, &QScxmlcGenerator::finishProcess);
} }
void QScxmlcGenerator::parseIssues(const QByteArray &stderr)
{
QList<ProjectExplorer::Task> issues;
foreach (const QByteArray &line, stderr.split('\n')) {
QByteArrayList tokens = line.split(':');
if (tokens.length() > 4) {
Utils::FileName file = Utils::FileName::fromUtf8(tokens[0]);
int line = tokens[1].toInt();
// int column = tokens[2].toInt(); <- nice, but not needed for now.
ProjectExplorer::Task::TaskType type = tokens[3].trimmed() == "error" ?
ProjectExplorer::Task::Error : ProjectExplorer::Task::Warning;
QString message = QString::fromUtf8(tokens.mid(4).join(':').trimmed());
issues.append(ProjectExplorer::Task(type, message, file, line, TaskCategory));
}
}
setCompileIssues(issues);
}
void QScxmlcGenerator::finishProcess() void QScxmlcGenerator::finishProcess()
{ {
parseIssues(m_process.readAllStandardError());
setCompileTime(QDateTime::currentDateTime()); setCompileTime(QDateTime::currentDateTime());
foreach (const Utils::FileName &target, targets()) { foreach (const Utils::FileName &target, targets()) {
QFile generated(m_tmpdir.path() + QLatin1Char('/') + target.fileName()); QFile generated(m_tmpdir.path() + QLatin1Char('/') + target.fileName());
......
...@@ -46,6 +46,7 @@ private: ...@@ -46,6 +46,7 @@ private:
QProcess m_process; QProcess m_process;
QTemporaryDir m_tmpdir; QTemporaryDir m_tmpdir;
void parseIssues(const QByteArray &stderr);
}; };
class QScxmlcGeneratorFactory : public ProjectExplorer::ExtraCompilerFactory class QScxmlcGeneratorFactory : public ProjectExplorer::ExtraCompilerFactory
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment