diff options
author | Christian Stenger <christian.stenger@qt.io> | 2021-06-04 11:41:13 +0200 |
---|---|---|
committer | Christian Stenger <christian.stenger@qt.io> | 2021-06-04 12:28:44 +0000 |
commit | c624467a5ff5709cef0af30a2cd4198b8e44f295 (patch) | |
tree | 16861d097ac1486e778d2415f17563407643e84e /src/plugins/cppcheck/cppcheckrunner.cpp | |
parent | 133b3b58a70fcbd1cd440cb34e54c6a4b180f603 (diff) | |
download | qt-creator-c624467a5ff5709cef0af30a2cd4198b8e44f295.tar.gz |
CppCheck: Use line-based output callback
Change-Id: I1b2341f71908a00f820b47109fcc4fda2134a83b
Reviewed-by: hjk <hjk@qt.io>
Diffstat (limited to 'src/plugins/cppcheck/cppcheckrunner.cpp')
-rw-r--r-- | src/plugins/cppcheck/cppcheckrunner.cpp | 43 |
1 files changed, 7 insertions, 36 deletions
diff --git a/src/plugins/cppcheck/cppcheckrunner.cpp b/src/plugins/cppcheck/cppcheckrunner.cpp index 458cccd3b8..7b8205aed1 100644 --- a/src/plugins/cppcheck/cppcheckrunner.cpp +++ b/src/plugins/cppcheck/cppcheckrunner.cpp @@ -49,10 +49,13 @@ CppcheckRunner::CppcheckRunner(CppcheckTool &tool) : m_maxArgumentsLength = std::max(argMax.toInt(), m_maxArgumentsLength); } - connect(m_process, &QtcProcess::readyReadStandardOutput, - this, &CppcheckRunner::readOutput); - connect(m_process, &QtcProcess::readyReadStandardOutput, - this, &CppcheckRunner::readError); + m_process->setStdOutLineCallback([this](const QString &line) { + m_tool.parseOutputLine(line); + }); + m_process->setStdErrLineCallback([this](const QString &line) { + m_tool.parseErrorLine(line); + }); + connect(m_process, &QtcProcess::started, this, &CppcheckRunner::handleStarted); connect(m_process, &QtcProcess::finished, @@ -158,36 +161,6 @@ void CppcheckRunner::checkQueued() m_process->start(); } -void CppcheckRunner::readOutput() -{ - if (!m_isRunning) // workaround for QTBUG-30929 - handleStarted(); - - const QByteArray output = m_process->readAllStandardOutput(); - int start = 0; - int end; - do { - end = output.indexOf('\n', start); - m_tool.parseOutputLine(QString::fromUtf8(output.mid(start, end - start))); - start = end + 1; - } while (end >= 0); -} - -void CppcheckRunner::readError() -{ - if (!m_isRunning) // workaround for QTBUG-30929 - handleStarted(); - - const QByteArray output = m_process->readAllStandardError(); - int start = 0; - int end; - do { - end = output.indexOf('\n', start); - m_tool.parseErrorLine(QString::fromUtf8(output.mid(start, end - start))); - start = end + 1; - } while (end >= 0); -} - void CppcheckRunner::handleStarted() { if (m_isRunning) @@ -200,8 +173,6 @@ void CppcheckRunner::handleStarted() void CppcheckRunner::handleFinished(int) { if (m_process->error() != QProcess::FailedToStart) { - readOutput(); - readError(); m_tool.finishParsing(); } else { const QString message = tr("Cppcheck failed to start: \"%1\".").arg(currentCommand()); |