forked from qt-creator/qt-creator
GnuMakeParser: Use QRegularExpression
Change-Id: I54813888af9203214b3d48732dab71bbc279c220 Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
@@ -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) {
|
||||||
|
@@ -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;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user