diff options
Diffstat (limited to 'plugins/clangstaticanalyzer/clangstaticanalyzertool.cpp')
-rw-r--r-- | plugins/clangstaticanalyzer/clangstaticanalyzertool.cpp | 34 |
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(); |