aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@theqtcompany.com>2014-10-30 17:35:52 +0100
committerNikolai Kosjar <nikolai.kosjar@theqtcompany.com>2014-10-31 11:41:00 +0200
commit23136eb749b15daa9dc4be0b7e3d5aca949cd747 (patch)
treeabf3b4f63461e4dbe9507155cf7b0a58a97a1eaa
parentf6eb83490a3f4a793eea1dad3d0d23e4d2fc801c (diff)
RunControl: Show more status in Application Output pane
Change-Id: I07e80e5a987612c19247a2d9a0628382b1136a06 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
-rw-r--r--plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp42
-rw-r--r--plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.h2
-rw-r--r--plugins/clangstaticanalyzer/clangstaticanalyzerrunner.cpp10
-rw-r--r--plugins/clangstaticanalyzer/clangstaticanalyzerrunner.h3
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;