aboutsummaryrefslogtreecommitdiffstats
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)
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;