diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2013-03-08 15:44:58 +0100 |
---|---|---|
committer | Fawzi Mohamed <fawzi.mohamed@digia.com> | 2013-03-18 11:17:44 +0100 |
commit | 409ff7c3acb15cf59eecd0d19c2a6fc6cd6b32ab (patch) | |
tree | d327d2694e5928caeb4e97191ea3b0564c8fae3e /src/plugins/qmljstools/qmljsplugindumper.cpp | |
parent | cb9ac60609979d71f1093e18bb4e94635bdfd1bf (diff) | |
download | qt-creator-409ff7c3acb15cf59eecd0d19c2a6fc6cd6b32ab.tar.gz |
Improve error reporting when running qmlplugindump.
Output error message, binary and arguments.
Change-Id: I413d2fcb234ae2444bf2c354b6aed1140aad61c5
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Reviewed-by: Christiaan Janssen <christiaan.janssen@digia.com>
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
Diffstat (limited to 'src/plugins/qmljstools/qmljsplugindumper.cpp')
-rw-r--r-- | src/plugins/qmljstools/qmljsplugindumper.cpp | 44 |
1 files changed, 42 insertions, 2 deletions
diff --git a/src/plugins/qmljstools/qmljsplugindumper.cpp b/src/plugins/qmljstools/qmljsplugindumper.cpp index 766024d981..68a5dc0f22 100644 --- a/src/plugins/qmljstools/qmljsplugindumper.cpp +++ b/src/plugins/qmljstools/qmljsplugindumper.cpp @@ -261,6 +261,46 @@ static void printParseWarnings(const QString &libraryPath, const QString &warnin "%2").arg(libraryPath, warning)); } +static QString qmlPluginDumpErrorMessage(QProcess *process) +{ + QString errorMessage; +#if QT_VERSION >= 0x050000 + const QString binary = QDir::toNativeSeparators(process->program()); +#else + const QString binary = QLatin1String("qmlplugindump"); +#endif + switch (process->error()) { + case QProcess::FailedToStart: + errorMessage = PluginDumper::tr("\"%1\" failed to start: %2").arg(binary, process->errorString()); + break; + case QProcess::Crashed: + errorMessage = PluginDumper::tr("\"%1\" crashed.").arg(binary); + break; + case QProcess::Timedout: + errorMessage = PluginDumper::tr("\"%1\" timed out.").arg(binary); + break; + case QProcess::ReadError: + case QProcess::WriteError: + errorMessage = PluginDumper::tr("I/O error running \"%1\".").arg(binary); + break; + case QProcess::UnknownError: + if (process->exitCode()) + errorMessage = PluginDumper::tr("\"%1\" returned exit code %2.").arg(binary).arg(process->exitCode()); + break; + } +#if QT_VERSION >= 0x050000 + errorMessage += QLatin1Char('\n') + PluginDumper::tr("Arguments: %1").arg(process->arguments().join(QLatin1Char(' '))); +#endif + if (process->error() != QProcess::FailedToStart) { + const QString stdErr = QString::fromLocal8Bit(process->readAllStandardError()); + if (!stdErr.isEmpty()) { + errorMessage += QLatin1Char('\n'); + errorMessage += stdErr; + } + } + return errorMessage; +} + void PluginDumper::qmlPluginTypeDumpDone(int exitCode) { QProcess *process = qobject_cast<QProcess *>(sender()); @@ -276,7 +316,7 @@ void PluginDumper::qmlPluginTypeDumpDone(int exitCode) if (exitCode != 0) { Core::MessageManager *messageManager = Core::MessageManager::instance(); - const QString errorMessages = QString::fromLocal8Bit(process->readAllStandardError()); + const QString errorMessages = qmlPluginDumpErrorMessage(process); messageManager->printToOutputPane(qmldumpErrorMessage(libraryPath, errorMessages)); libraryInfo.setPluginTypeInfoStatus(LibraryInfo::DumpError, qmldumpFailedMessage(libraryPath, errorMessages)); } @@ -316,7 +356,7 @@ void PluginDumper::qmlPluginTypeDumpError(QProcess::ProcessError) return; Core::MessageManager *messageManager = Core::MessageManager::instance(); - const QString errorMessages = QString::fromLocal8Bit(process->readAllStandardError()); + const QString errorMessages = qmlPluginDumpErrorMessage(process); messageManager->printToOutputPane(qmldumpErrorMessage(libraryPath, errorMessages)); if (!libraryPath.isEmpty()) { |