forked from qt-creator/qt-creator
Android: Use QRegularExpression for parsing logcat output
Task-number: QTCREATORBUG-24098 Change-Id: I3df81c06611f1547b9424e31ea1b4a4541573946 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -54,6 +54,7 @@
|
|||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
#include <QLoggingCategory>
|
#include <QLoggingCategory>
|
||||||
#include <QScopeGuard>
|
#include <QScopeGuard>
|
||||||
|
#include <QRegularExpression>
|
||||||
#include <QTcpServer>
|
#include <QTcpServer>
|
||||||
#include <QThread>
|
#include <QThread>
|
||||||
|
|
||||||
@@ -77,7 +78,7 @@ static const QString pidScriptPreNougat = QStringLiteral("for p in /proc/[0-9]*;
|
|||||||
"do cat <$p/cmdline && echo :${p##*/}; done");
|
"do cat <$p/cmdline && echo :${p##*/}; done");
|
||||||
static const QString pidPollingScript = QStringLiteral("while [ -d /proc/%1 ]; do sleep 1; done");
|
static const QString pidPollingScript = QStringLiteral("while [ -d /proc/%1 ]; do sleep 1; done");
|
||||||
|
|
||||||
static const QString regExpLogcat = QStringLiteral("[0-9\\-]*" // date
|
static const QRegularExpression regExpLogcat{"^[0-9\\-]*" // date
|
||||||
"\\s+"
|
"\\s+"
|
||||||
"[0-9\\-:.]*"// time
|
"[0-9\\-:.]*"// time
|
||||||
"\\s*"
|
"\\s*"
|
||||||
@@ -89,8 +90,7 @@ static const QString regExpLogcat = QStringLiteral("[0-9\\-]*" // date
|
|||||||
"\\s+"
|
"\\s+"
|
||||||
"(.*): " // source 3. capture
|
"(.*): " // source 3. capture
|
||||||
"(.*)" // message 4. capture
|
"(.*)" // message 4. capture
|
||||||
"[\\n\\r]*"
|
"[\\n\\r]*$"};
|
||||||
);
|
|
||||||
static int APP_START_TIMEOUT = 45000;
|
static int APP_START_TIMEOUT = 45000;
|
||||||
|
|
||||||
static bool isTimedOut(const chrono::high_resolution_clock::time_point &start,
|
static bool isTimedOut(const chrono::high_resolution_clock::time_point &start,
|
||||||
@@ -242,7 +242,6 @@ AndroidRunnerWorker::AndroidRunnerWorker(RunWorker *runner, const QString &packa
|
|||||||
: m_packageName(packageName)
|
: m_packageName(packageName)
|
||||||
, m_adbLogcatProcess(nullptr, deleter)
|
, m_adbLogcatProcess(nullptr, deleter)
|
||||||
, m_psIsAlive(nullptr, deleter)
|
, m_psIsAlive(nullptr, deleter)
|
||||||
, m_logCatRegExp(regExpLogcat)
|
|
||||||
, m_debugServerProcess(nullptr, deleter)
|
, m_debugServerProcess(nullptr, deleter)
|
||||||
, m_jdbProcess(nullptr, deleter)
|
, m_jdbProcess(nullptr, deleter)
|
||||||
|
|
||||||
@@ -457,11 +456,12 @@ void AndroidRunnerWorker::logcatProcess(const QByteArray &text, QByteArray &buff
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (m_logCatRegExp.exactMatch(line)) {
|
const QRegularExpressionMatch match = regExpLogcat.match(line);
|
||||||
|
if (match.hasMatch()) {
|
||||||
// Android M
|
// Android M
|
||||||
if (m_logCatRegExp.cap(1) == pidString) {
|
if (match.captured(1) == pidString) {
|
||||||
const QString &messagetype = m_logCatRegExp.cap(2);
|
const QString messagetype = match.captured(2);
|
||||||
QString output = line.mid(m_logCatRegExp.pos(2));
|
const QString output = line.mid(match.capturedStart(2));
|
||||||
|
|
||||||
if (onlyError
|
if (onlyError
|
||||||
|| messagetype == QLatin1String("F")
|
|| messagetype == QLatin1String("F")
|
||||||
|
|||||||
@@ -97,7 +97,6 @@ private:
|
|||||||
std::unique_ptr<QProcess, Deleter> m_psIsAlive;
|
std::unique_ptr<QProcess, Deleter> m_psIsAlive;
|
||||||
QByteArray m_stdoutBuffer;
|
QByteArray m_stdoutBuffer;
|
||||||
QByteArray m_stderrBuffer;
|
QByteArray m_stderrBuffer;
|
||||||
QRegExp m_logCatRegExp;
|
|
||||||
QFuture<qint64> m_pidFinder;
|
QFuture<qint64> m_pidFinder;
|
||||||
bool m_useCppDebugger = false;
|
bool m_useCppDebugger = false;
|
||||||
bool m_useLldb = false; // FIXME: Un-implemented currently.
|
bool m_useLldb = false; // FIXME: Un-implemented currently.
|
||||||
|
|||||||
Reference in New Issue
Block a user