GnuMakeParser: Use QRegularExpression

Change-Id: I54813888af9203214b3d48732dab71bbc279c220
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
Daniel Teske
2014-09-22 16:42:36 +02:00
parent cb6c9d2b73
commit 637d53c649
2 changed files with 20 additions and 20 deletions

View File

@@ -41,8 +41,8 @@ using namespace ProjectExplorer;
namespace { namespace {
// optional full path, make executable name, optional exe extension, optional number in square brackets, colon space // optional full path, make executable name, optional exe extension, optional number in square brackets, colon space
const char * const MAKEEXEC_PATTERN("^(.*[/\\\\])?(mingw(32|64)-|g)?make(.exe)?(\\[\\d+\\])?:\\s"); const char * const MAKEEXEC_PATTERN("^(.*?[/\\\\])?(mingw(32|64)-|g)?make(.exe)?(\\[\\d+\\])?:\\s");
const char * const MAKEFILE_PATTERN("^((.*[/\\\\])?[Mm]akefile(\\.[a-zA-Z]+)?):(\\d+):\\s"); const char * const MAKEFILE_PATTERN("^((.*?[/\\\\])?[Mm]akefile(\\.[a-zA-Z]+)?):(\\d+):\\s");
} }
GnuMakeParser::GnuMakeParser() : GnuMakeParser::GnuMakeParser() :
@@ -52,13 +52,10 @@ GnuMakeParser::GnuMakeParser() :
setObjectName(QLatin1String("GnuMakeParser")); setObjectName(QLatin1String("GnuMakeParser"));
m_makeDir.setPattern(QLatin1String(MAKEEXEC_PATTERN) + m_makeDir.setPattern(QLatin1String(MAKEEXEC_PATTERN) +
QLatin1String("(\\w+) directory .(.+).$")); QLatin1String("(\\w+) directory .(.+).$"));
m_makeDir.setMinimal(true);
QTC_CHECK(m_makeDir.isValid()); QTC_CHECK(m_makeDir.isValid());
m_makeLine.setPattern(QLatin1String(MAKEEXEC_PATTERN) + QLatin1String("(.*)$")); m_makeLine.setPattern(QLatin1String(MAKEEXEC_PATTERN) + QLatin1String("(.*)$"));
m_makeLine.setMinimal(true);
QTC_CHECK(m_makeLine.isValid()); QTC_CHECK(m_makeLine.isValid());
m_errorInMakefile.setPattern(QLatin1String(MAKEFILE_PATTERN) + QLatin1String("(.*)$")); m_errorInMakefile.setPattern(QLatin1String(MAKEFILE_PATTERN) + QLatin1String("(.*)$"));
m_errorInMakefile.setMinimal(true);
QTC_CHECK(m_errorInMakefile.isValid()); QTC_CHECK(m_errorInMakefile.isValid());
} }
@@ -77,11 +74,12 @@ void GnuMakeParser::stdOutput(const QString &line)
{ {
const QString lne = rightTrimmed(line); const QString lne = rightTrimmed(line);
if (m_makeDir.indexIn(lne) > -1) { QRegularExpressionMatch match = m_makeDir.match(lne);
if (m_makeDir.cap(6) == QLatin1String("Leaving")) if (match.hasMatch()) {
removeDirectory(m_makeDir.cap(7)); if (match.captured(6) == QLatin1String("Leaving"))
removeDirectory(match.captured(7));
else else
addDirectory(m_makeDir.cap(7)); addDirectory(match.captured(7));
return; return;
} }
@@ -120,20 +118,22 @@ void GnuMakeParser::stdError(const QString &line)
{ {
const QString lne = rightTrimmed(line); const QString lne = rightTrimmed(line);
if (m_errorInMakefile.indexIn(lne) > -1) { QRegularExpressionMatch match = m_errorInMakefile.match(lne);
Result res = parseDescription(m_errorInMakefile.cap(5)); if (match.hasMatch()) {
Result res = parseDescription(match.captured(5));
if (res.isFatal) if (res.isFatal)
++m_fatalErrorCount; ++m_fatalErrorCount;
if (!m_suppressIssues) { if (!m_suppressIssues) {
taskAdded(Task(res.type, res.description, taskAdded(Task(res.type, res.description,
Utils::FileName::fromUserInput(m_errorInMakefile.cap(1)) /* filename */, Utils::FileName::fromUserInput(match.captured(1)) /* filename */,
m_errorInMakefile.cap(4).toInt(), /* line */ match.captured(4).toInt(), /* line */
Core::Id(Constants::TASK_CATEGORY_BUILDSYSTEM))); Core::Id(Constants::TASK_CATEGORY_BUILDSYSTEM)));
} }
return; return;
} }
if (m_makeLine.indexIn(lne) > -1) { match = m_makeLine.match(lne);
Result res = parseDescription(m_makeLine.cap(6)); if (match.hasMatch()) {
Result res = parseDescription(match.captured(6));
if (res.isFatal) if (res.isFatal)
++m_fatalErrorCount; ++m_fatalErrorCount;
if (!m_suppressIssues) { if (!m_suppressIssues) {

View File

@@ -32,7 +32,7 @@
#include "ioutputparser.h" #include "ioutputparser.h"
#include <QRegExp> #include <QRegularExpression>
#include <QStringList> #include <QStringList>
namespace ProjectExplorer { namespace ProjectExplorer {
@@ -60,10 +60,10 @@ private:
void addDirectory(const QString &dir); void addDirectory(const QString &dir);
void removeDirectory(const QString &dir); void removeDirectory(const QString &dir);
QRegExp m_makeDir; QRegularExpression m_makeDir;
QRegExp m_makeLine; QRegularExpression m_makeLine;
QRegExp m_threeStarError; QRegularExpression m_threeStarError;
QRegExp m_errorInMakefile; QRegularExpression m_errorInMakefile;
QStringList m_directories; QStringList m_directories;