diff options
author | Nikolai Kosjar <nikolai.kosjar@theqtcompany.com> | 2014-10-30 17:35:52 +0100 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@theqtcompany.com> | 2014-10-31 11:41:00 +0200 |
commit | 23136eb749b15daa9dc4be0b7e3d5aca949cd747 (patch) | |
tree | abf3b4f63461e4dbe9507155cf7b0a58a97a1eaa | |
parent | f6eb83490a3f4a793eea1dad3d0d23e4d2fc801c (diff) | |
download | qt-creator-23136eb749b15daa9dc4be0b7e3d5aca949cd747.tar.gz |
RunControl: Show more status in Application Output pane
Change-Id: I07e80e5a987612c19247a2d9a0628382b1136a06
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
4 files changed, 48 insertions, 9 deletions
diff --git a/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp b/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp index e0c7b11e71..7c7e8a1554 100644 --- a/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp +++ b/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp @@ -53,6 +53,8 @@ ClangStaticAnalyzerRunControl::ClangStaticAnalyzerRunControl( ProjectExplorer::RunConfiguration *runConfiguration) : AnalyzerRunControl(startParams, runConfiguration) , m_initialFilesToProcessSize(0) + , m_filesAnalyzed(0) + , m_filesNotAnalyzed(0) { } @@ -126,6 +128,8 @@ bool ClangStaticAnalyzerRunControl::startEngine() } m_filesToProcess = filesToProcess; m_initialFilesToProcessSize = m_filesToProcess.count(); + m_filesAnalyzed = 0; + m_filesNotAnalyzed = 0; // Set up progress information using namespace Core; @@ -156,7 +160,10 @@ void ClangStaticAnalyzerRunControl::stopEngine() } m_runners.clear(); m_filesToProcess.clear(); - analyzeNextFile(); // emits finished + appendMessage(tr("Clang Static Analyzer stopped by user.") + QLatin1Char('\n'), + Utils::NormalMessageFormat); + m_progress.reportFinished(); + emit finished(); } void ClangStaticAnalyzerRunControl::analyzeNextFile() @@ -166,7 +173,11 @@ void ClangStaticAnalyzerRunControl::analyzeNextFile() if (m_filesToProcess.isEmpty()) { if (m_runners.size() == 0) { - appendMessage(tr("Clang Static Analyzer finished.") + QLatin1Char('\n'), + appendMessage(tr("Clang Static Analyzer finished: " + "Processed %1 files successfully, %2 failed.") + .arg(m_filesAnalyzed) + .arg(m_filesNotAnalyzed) + + QLatin1Char('\n'), Utils::NormalMessageFormat); m_progress.reportFinished(); emit finished(); @@ -182,6 +193,8 @@ void ClangStaticAnalyzerRunControl::analyzeNextFile() m_runners.insert(runner); qCDebug(LOG) << "analyzeNextFile:" << filePath; QTC_ASSERT(runner->run(filePath, options), return); + appendMessage(tr("Analyzing \"%1\".").arg(filePath) + QLatin1Char('\n'), + Utils::StdOutFormat); } ClangStaticAnalyzerRunner *ClangStaticAnalyzerRunControl::createRunner() @@ -201,21 +214,36 @@ ClangStaticAnalyzerRunner *ClangStaticAnalyzerRunControl::createRunner() void ClangStaticAnalyzerRunControl::onRunnerFinishedWithSuccess(const QString &logFilePath) { qCDebug(LOG) << "onRunnerFinishedWithSuccess:" << logFilePath; - handleFinished(); QString errorMessage; const QList<Diagnostic> diagnostics = LogFileReader::read(logFilePath, &errorMessage); - QTC_CHECK(errorMessage.isEmpty()); - if (!errorMessage.isEmpty()) + if (!errorMessage.isEmpty()) { qCDebug(LOG) << "onRunnerFinishedWithSuccess: Error reading log file:" << errorMessage; - if (!diagnostics.isEmpty()) - emit newDiagnosticsAvailable(diagnostics); + const QString filePath = qobject_cast<ClangStaticAnalyzerRunner *>(sender())->filePath(); + appendMessage(tr("Failed to analyze \"%1\": %2").arg(filePath, errorMessage) + + QLatin1Char('\n') + , Utils::StdErrFormat); + } else { + ++m_filesAnalyzed; + if (!diagnostics.isEmpty()) + emit newDiagnosticsAvailable(diagnostics); + } + + handleFinished(); } void ClangStaticAnalyzerRunControl::onRunnerFinishedWithFailure(const QString &errorMessage, const QString &errorDetails) { qCDebug(LOG) << "onRunnerFinishedWithFailure:" << errorMessage << errorDetails; + + ++m_filesNotAnalyzed; + const QString filePath = qobject_cast<ClangStaticAnalyzerRunner *>(sender())->filePath(); + appendMessage(tr("Failed to analyze \"%1\": %2").arg(filePath, errorMessage) + + QLatin1Char('\n') + , Utils::StdErrFormat); + appendMessage(errorDetails, Utils::StdErrFormat); + handleFinished(); } diff --git a/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.h b/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.h index 661594bf11..0339751717 100644 --- a/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.h +++ b/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.h @@ -76,6 +76,8 @@ private: QList<SourceFileConfiguration> m_filesToProcess; QSet<ClangStaticAnalyzerRunner *> m_runners; int m_initialFilesToProcessSize; + int m_filesAnalyzed; + int m_filesNotAnalyzed; }; } // namespace Internal diff --git a/plugins/clangstaticanalyzer/clangstaticanalyzerrunner.cpp b/plugins/clangstaticanalyzer/clangstaticanalyzerrunner.cpp index ed8efb93f8..1d4e5b527a 100644 --- a/plugins/clangstaticanalyzer/clangstaticanalyzerrunner.cpp +++ b/plugins/clangstaticanalyzer/clangstaticanalyzerrunner.cpp @@ -99,6 +99,7 @@ bool ClangStaticAnalyzerRunner::run(const QString &filePath, const QStringList & QTC_CHECK(!compilerOptions.contains(QLatin1String("-o"))); QTC_CHECK(!compilerOptions.contains(filePath)); + m_filePath = filePath; m_processOutput.clear(); m_logFile = createLogFile(filePath); @@ -112,6 +113,11 @@ bool ClangStaticAnalyzerRunner::run(const QString &filePath, const QStringList & return true; } +QString ClangStaticAnalyzerRunner::filePath() const +{ + return m_filePath; +} + void ClangStaticAnalyzerRunner::onProcessStarted() { emit started(); @@ -161,8 +167,8 @@ QString ClangStaticAnalyzerRunner::createLogFile(const QString &filePath) const QString ClangStaticAnalyzerRunner::processCommandlineAndOutput() const { return QObject::tr("Command line: \"%1\"\n" - "Process Error: \"%2\"\n" - "Output:\n\"%3\"") + "Process Error: %2\n" + "Output:\n%3") .arg(m_commandLine, QString::number(m_process.error()), QString::fromLocal8Bit(m_processOutput)); diff --git a/plugins/clangstaticanalyzer/clangstaticanalyzerrunner.h b/plugins/clangstaticanalyzer/clangstaticanalyzerrunner.h index b535ec1077..461f694e2e 100644 --- a/plugins/clangstaticanalyzer/clangstaticanalyzerrunner.h +++ b/plugins/clangstaticanalyzer/clangstaticanalyzerrunner.h @@ -45,6 +45,8 @@ public: // (2) -o output-file bool run(const QString &filePath, const QStringList &compilerOptions = QStringList()); + QString filePath() const; + signals: void started(); void finishedWithSuccess(const QString &logFilePath); @@ -62,6 +64,7 @@ private: private: QString m_clangExecutable; QString m_clangLogFileDir; + QString m_filePath; QString m_logFile; QString m_commandLine; QProcess m_process; |