diff --git a/src/plugins/projectexplorer/clangparser.cpp b/src/plugins/projectexplorer/clangparser.cpp index eab8e37d4952039cbba26a923ed7aa0017b02495..971697f222fb4c4e22f361589d3bb614bb151f6f 100644 --- a/src/plugins/projectexplorer/clangparser.cpp +++ b/src/plugins/projectexplorer/clangparser.cpp @@ -33,10 +33,8 @@ using namespace ProjectExplorer; -namespace { - // opt. drive letter + filename: (2 brackets) - const char * const FILE_PATTERN = "(<command line>|([A-Za-z]:)?[^:]+\\.[^:]+)"; -} +// opt. drive letter + filename: (2 brackets) +static const char * const FILE_PATTERN = "(<command line>|([A-Za-z]:)?[^:]+\\.[^:]+)"; ClangParser::ClangParser() : m_commandRegExp(QLatin1String("^clang(\\+\\+)?: +(fatal +)?(warning|error|note): (.*)$")), @@ -57,7 +55,7 @@ ClangParser::~ClangParser() void ClangParser::stdError(const QString &line) { - const QString lne = line.left(line.count() - 1); + const QString lne = rightTrimmed(line); if (m_summaryRegExp.indexIn(lne) > -1) { emitTask(); m_expectSnippet = false; diff --git a/src/plugins/projectexplorer/gccparser.cpp b/src/plugins/projectexplorer/gccparser.cpp index ca88c95410e5f93228dc18c30cc8ef6966dd49b4..cf0350ccedfabe6f7bb59690a3b27a802b119939 100644 --- a/src/plugins/projectexplorer/gccparser.cpp +++ b/src/plugins/projectexplorer/gccparser.cpp @@ -62,7 +62,7 @@ GccParser::GccParser() void GccParser::stdError(const QString &line) { - QString lne = line.trimmed(); + QString lne = rightTrimmed(line); // Blacklist some lines to not handle them: if (lne.startsWith(QLatin1String("TeamBuilder ")) || @@ -117,7 +117,7 @@ void GccParser::stdError(const QString &line) return; } else if (m_regExpIncluded.indexIn(lne) > -1) { emit addTask(Task(Task::Unknown, - lne /* description */, + lne.trimmed() /* description */, Utils::FileName::fromUserInput(m_regExpIncluded.cap(1)) /* filename */, m_regExpIncluded.cap(3).toInt() /* linenumber */, Core::Id(Constants::TASK_CATEGORY_COMPILE))); diff --git a/src/plugins/projectexplorer/gnumakeparser.cpp b/src/plugins/projectexplorer/gnumakeparser.cpp index c090de9c9ab427818fc41333cdebfbb00d92e459..37ca5b380a7371c0625b0b77eef5b595d9ef2556 100644 --- a/src/plugins/projectexplorer/gnumakeparser.cpp +++ b/src/plugins/projectexplorer/gnumakeparser.cpp @@ -69,7 +69,7 @@ bool GnuMakeParser::hasFatalErrors() const void GnuMakeParser::stdOutput(const QString &line) { - QString lne = line.trimmed(); + const QString lne = rightTrimmed(line); if (m_makeDir.indexIn(lne) > -1) { if (m_makeDir.cap(7) == QLatin1String("Leaving")) @@ -84,7 +84,7 @@ void GnuMakeParser::stdOutput(const QString &line) void GnuMakeParser::stdError(const QString &line) { - QString lne = line.trimmed(); + const QString lne = rightTrimmed(line); if (m_makefileError.indexIn(lne) > -1) { ++m_fatalErrorCount; diff --git a/src/plugins/projectexplorer/ioutputparser.cpp b/src/plugins/projectexplorer/ioutputparser.cpp index d21056e0596e69f9399ec86507cb8c6254bd33b4..b996a560fb2febea5955f189614523af40b06414 100644 --- a/src/plugins/projectexplorer/ioutputparser.cpp +++ b/src/plugins/projectexplorer/ioutputparser.cpp @@ -191,4 +191,14 @@ void IOutputParser::setWorkingDirectory(const QString &workingDirectory) m_parser->setWorkingDirectory(workingDirectory); } +QString IOutputParser::rightTrimmed(const QString &in) +{ + int pos = in.length(); + for (; pos > 0; --pos) { + if (!in.at(pos - 1).isSpace()) + break; + } + return in.mid(0, pos); +} + } diff --git a/src/plugins/projectexplorer/ioutputparser.h b/src/plugins/projectexplorer/ioutputparser.h index f2b4bcf3f4d73478e126e32206315e2f4afb405e..53200c1be3fb5a80e530e2a6d06c84a996ee8f3c 100644 --- a/src/plugins/projectexplorer/ioutputparser.h +++ b/src/plugins/projectexplorer/ioutputparser.h @@ -60,6 +60,8 @@ public: // For GnuMakeParser virtual void setWorkingDirectory(const QString &workingDirectory); + static QString rightTrimmed(const QString &in); + signals: void addOutput(const QString &string, ProjectExplorer::BuildStep::OutputFormat format); void addTask(const ProjectExplorer::Task &task); diff --git a/src/plugins/projectexplorer/ldparser.cpp b/src/plugins/projectexplorer/ldparser.cpp index 500c8d3237f8468279f2b98ccedc994576e9e2e1..a75188e790eb8b7600c3c6ae685719ca77050a0f 100644 --- a/src/plugins/projectexplorer/ldparser.cpp +++ b/src/plugins/projectexplorer/ldparser.cpp @@ -57,7 +57,7 @@ LdParser::LdParser() void LdParser::stdError(const QString &line) { - QString lne = line.trimmed(); + QString lne = rightTrimmed(line); if (lne.startsWith(QLatin1String("TeamBuilder ")) || lne.startsWith(QLatin1String("distcc[")) || lne.contains(QLatin1String("ar: creating "))) { diff --git a/src/plugins/qt4projectmanager/qmakeparser.cpp b/src/plugins/qt4projectmanager/qmakeparser.cpp index 37dfaf3557cf38f3ca07c94e620337db92e6a622..ba15f6ab23916c7566213ae96bd370d7c1a405b7 100644 --- a/src/plugins/qt4projectmanager/qmakeparser.cpp +++ b/src/plugins/qt4projectmanager/qmakeparser.cpp @@ -44,7 +44,7 @@ QMakeParser::QMakeParser() : m_error(QLatin1String("^(.+):(\\d+):\\s(.+)$")) void QMakeParser::stdError(const QString &line) { - QString lne(line.trimmed()); + QString lne = rightTrimmed(line); if (lne.startsWith(QLatin1String("Project ERROR:"))) { const QString description = lne.mid(15); emit addTask(Task(Task::Error, diff --git a/src/plugins/qtsupport/qtparser.cpp b/src/plugins/qtsupport/qtparser.cpp index 3a56dc21ec3b67d275b3d6de4b64d161066b6ddc..3e64cc4efc9f438101a3a1daacf902079fab8c80 100644 --- a/src/plugins/qtsupport/qtparser.cpp +++ b/src/plugins/qtsupport/qtparser.cpp @@ -47,7 +47,7 @@ QtParser::QtParser() : void QtParser::stdError(const QString &line) { - QString lne(line.trimmed()); + QString lne = rightTrimmed(line); if (m_mocRegExp.indexIn(lne) > -1) { bool ok; int lineno = m_mocRegExp.cap(3).toInt(&ok);