summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@theqtcompany.com>2015-03-02 15:35:10 +0100
committerChristian Kandeler <christian.kandeler@theqtcompany.com>2015-03-09 14:04:59 +0200
commit26abab90ca8cf599421636b2292e801cba9759a1 (patch)
treeda6baa5859e2d6c9dc94977faf9b3f0c6fcda42f
parent5b1a7f37560d24821e9bea705aaba26f71b604ab (diff)
downloadqt-creator-26abab90ca8cf599421636b2292e801cba9759a1.tar.gz
Show the status message also while running.
So users can see how many issues were found before the analyzer has finished, as well as browse them. Change-Id: I82452441168ecb370e7b2aac137961ebb5b8bfc3 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
-rw-r--r--plugins/clangstaticanalyzer/clangstaticanalyzertool.cpp53
-rw-r--r--plugins/clangstaticanalyzer/clangstaticanalyzertool.h1
2 files changed, 38 insertions, 16 deletions
diff --git a/plugins/clangstaticanalyzer/clangstaticanalyzertool.cpp b/plugins/clangstaticanalyzer/clangstaticanalyzertool.cpp
index 645186cc71..37447c5f66 100644
--- a/plugins/clangstaticanalyzer/clangstaticanalyzertool.cpp
+++ b/plugins/clangstaticanalyzer/clangstaticanalyzertool.cpp
@@ -82,6 +82,17 @@ QWidget *ClangStaticAnalyzerTool::createWidgets()
m_diagnosticView->setAutoScroll(false);
m_diagnosticView->setObjectName(QLatin1String("ClangStaticAnalyzerIssuesView"));
m_diagnosticView->setWindowTitle(tr("Clang Static Analyzer Issues"));
+ foreach (auto * const model,
+ QList<QAbstractItemModel *>() << m_diagnosticModel << m_diagnosticFilterModel) {
+ connect(model, &QAbstractItemModel::rowsInserted,
+ this, &ClangStaticAnalyzerTool::handleStateUpdate);
+ connect(model, &QAbstractItemModel::rowsRemoved,
+ this, &ClangStaticAnalyzerTool::handleStateUpdate);
+ connect(model, &QAbstractItemModel::modelReset,
+ this, &ClangStaticAnalyzerTool::handleStateUpdate);
+ connect(model, &QAbstractItemModel::layoutChanged, // For QSortFilterProxyModel::invalidate()
+ this, &ClangStaticAnalyzerTool::handleStateUpdate);
+ }
QDockWidget *issuesDock = AnalyzerManager::createDockWidget(ClangStaticAnalyzerToolId,
m_diagnosticView);
@@ -198,7 +209,6 @@ void ClangStaticAnalyzerTool::startTool()
if (dontStartAfterHintForDebugMode())
return;
- AnalyzerManager::showPermanentStatusMessage(QString());
m_diagnosticModel->clear();
setBusyCursor(true);
Project *project = SessionManager::startupProject();
@@ -207,6 +217,7 @@ void ClangStaticAnalyzerTool::startTool()
m_projectInfoBeforeBuild = CppTools::CppModelManager::instance()->projectInfo(project);
QTC_ASSERT(m_projectInfoBeforeBuild.isValid(), return);
m_running = true;
+ handleStateUpdate();
ProjectExplorerPlugin::runProject(project, ProjectExplorer::ClangStaticAnalyzerMode);
}
@@ -239,23 +250,9 @@ void ClangStaticAnalyzerTool::onNewDiagnosticsAvailable(const QList<Diagnostic>
void ClangStaticAnalyzerTool::onEngineFinished()
{
- QTC_ASSERT(m_goBack, return);
- QTC_ASSERT(m_goNext, return);
- QTC_ASSERT(m_diagnosticModel, return);
- QTC_ASSERT(m_diagnosticFilterModel, return);
-
resetCursorAndProjectInfoBeforeBuild();
-
- const int issuesFound = m_diagnosticModel->rowCount();
- const int issuesVisible = m_diagnosticFilterModel->rowCount();
- m_goBack->setEnabled(issuesVisible > 1);
- m_goNext->setEnabled(issuesVisible > 1);
-
- AnalyzerManager::showPermanentStatusMessage(issuesFound > 0
- ? AnalyzerManager::tr("Clang Static Analyzer finished, %n issues were found (%1 suppressed).",
- 0, issuesFound).arg(issuesFound - issuesVisible)
- : AnalyzerManager::tr("Clang Static Analyzer finished, no issues were found."));
m_running = false;
+ handleStateUpdate();
emit finished();
}
@@ -266,5 +263,29 @@ void ClangStaticAnalyzerTool::setBusyCursor(bool busy)
m_diagnosticView->setCursor(cursor);
}
+void ClangStaticAnalyzerTool::handleStateUpdate()
+{
+ QTC_ASSERT(m_goBack, return);
+ QTC_ASSERT(m_goNext, return);
+ QTC_ASSERT(m_diagnosticModel, return);
+ QTC_ASSERT(m_diagnosticFilterModel, return);
+
+ const int issuesFound = m_diagnosticModel->rowCount();
+ const int issuesVisible = m_diagnosticFilterModel->rowCount();
+ m_goBack->setEnabled(issuesVisible > 1);
+ m_goNext->setEnabled(issuesVisible > 1);
+
+ QString message = m_running ? tr("Clang Static Analyzer running.")
+ : tr("Clang Static Analyzer finished.");
+ message += QLatin1Char(' ');
+ if (issuesFound == 0) {
+ message += tr("No issues found.");
+ } else {
+ message += tr("%n issues found (%1 suppressed).", 0, issuesFound)
+ .arg(issuesFound - issuesVisible);
+ }
+ AnalyzerManager::showPermanentStatusMessage(message);
+}
+
} // namespace Internal
} // namespace ClangStaticAnalyzer
diff --git a/plugins/clangstaticanalyzer/clangstaticanalyzertool.h b/plugins/clangstaticanalyzer/clangstaticanalyzertool.h
index 89c8851acc..2f9b18efa7 100644
--- a/plugins/clangstaticanalyzer/clangstaticanalyzertool.h
+++ b/plugins/clangstaticanalyzer/clangstaticanalyzertool.h
@@ -61,6 +61,7 @@ private:
void onEngineFinished();
void setBusyCursor(bool busy);
+ void handleStateUpdate();
private:
CppTools::ProjectInfo m_projectInfoBeforeBuild;