aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/clangstaticanalyzer/clangstaticanalyzertool.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/clangstaticanalyzer/clangstaticanalyzertool.cpp')
-rw-r--r--plugins/clangstaticanalyzer/clangstaticanalyzertool.cpp34
1 files changed, 18 insertions, 16 deletions
diff --git a/plugins/clangstaticanalyzer/clangstaticanalyzertool.cpp b/plugins/clangstaticanalyzer/clangstaticanalyzertool.cpp
index 4fbc2aa5b5..645186cc71 100644
--- a/plugins/clangstaticanalyzer/clangstaticanalyzertool.cpp
+++ b/plugins/clangstaticanalyzer/clangstaticanalyzertool.cpp
@@ -49,16 +49,15 @@ namespace ClangStaticAnalyzer {
namespace Internal {
ClangStaticAnalyzerTool::ClangStaticAnalyzerTool(QObject *parent)
- : IAnalyzerTool(parent)
+ : QObject(parent)
, m_diagnosticModel(0)
+ , m_diagnosticFilterModel(0)
, m_diagnosticView(0)
, m_goBack(0)
, m_goNext(0)
, m_running(false)
{
setObjectName(QLatin1String("ClangStaticAnalyzerTool"));
- setRunMode(ProjectExplorer::ClangStaticAnalyzerMode);
- setToolMode(AnyMode);
}
QWidget *ClangStaticAnalyzerTool::createWidgets()
@@ -76,16 +75,16 @@ QWidget *ClangStaticAnalyzerTool::createWidgets()
m_diagnosticView->setFrameStyle(QFrame::NoFrame);
m_diagnosticView->setAttribute(Qt::WA_MacShowFocusRect, false);
m_diagnosticModel = new ClangStaticAnalyzerDiagnosticModel(m_diagnosticView);
- // TODO: Make use of the proxy model
- QSortFilterProxyModel *proxyModel = new QSortFilterProxyModel(m_diagnosticView);
- proxyModel->setSourceModel(m_diagnosticModel);
- m_diagnosticView->setModel(proxyModel);
+ m_diagnosticFilterModel = new ClangStaticAnalyzerDiagnosticFilterModel(m_diagnosticView);
+ m_diagnosticFilterModel->setSourceModel(m_diagnosticModel);
+ m_diagnosticView->setModel(m_diagnosticFilterModel);
m_diagnosticView->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);
m_diagnosticView->setAutoScroll(false);
m_diagnosticView->setObjectName(QLatin1String("ClangStaticAnalyzerIssuesView"));
m_diagnosticView->setWindowTitle(tr("Clang Static Analyzer Issues"));
- QDockWidget *issuesDock = AnalyzerManager::createDockWidget(this, m_diagnosticView);
+ QDockWidget *issuesDock = AnalyzerManager::createDockWidget(ClangStaticAnalyzerToolId,
+ m_diagnosticView);
issuesDock->show();
Utils::FancyMainWindow *mw = AnalyzerManager::mainWindow();
mw->splitDockWidget(mw->toolBarDockWidget(), issuesDock, Qt::Vertical);
@@ -192,23 +191,23 @@ static bool dontStartAfterHintForDebugMode()
return false;
}
-void ClangStaticAnalyzerTool::startTool(StartMode mode)
+void ClangStaticAnalyzerTool::startTool()
{
- QTC_ASSERT(mode == Analyzer::StartLocal, return);
-
AnalyzerManager::showMode();
if (dontStartAfterHintForDebugMode())
return;
+ AnalyzerManager::showPermanentStatusMessage(QString());
m_diagnosticModel->clear();
setBusyCursor(true);
Project *project = SessionManager::startupProject();
QTC_ASSERT(project, return);
+ m_diagnosticFilterModel->setProject(project);
m_projectInfoBeforeBuild = CppTools::CppModelManager::instance()->projectInfo(project);
QTC_ASSERT(m_projectInfoBeforeBuild.isValid(), return);
m_running = true;
- ProjectExplorerPlugin::instance()->runProject(project, runMode());
+ ProjectExplorerPlugin::runProject(project, ProjectExplorer::ClangStaticAnalyzerMode);
}
CppTools::ProjectInfo ClangStaticAnalyzerTool::projectInfoBeforeBuild() const
@@ -243,15 +242,18 @@ 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();
- m_goBack->setEnabled(issuesFound > 1);
- m_goNext->setEnabled(issuesFound > 1);
+ const int issuesVisible = m_diagnosticFilterModel->rowCount();
+ m_goBack->setEnabled(issuesVisible > 1);
+ m_goNext->setEnabled(issuesVisible > 1);
- AnalyzerManager::showStatusMessage(issuesFound > 0
- ? AnalyzerManager::tr("Clang Static Analyzer finished, %n issues were found.", 0, issuesFound)
+ 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;
emit finished();