diff options
author | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2018-05-15 11:27:14 +0200 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2018-05-15 13:29:53 +0000 |
commit | 887a0538cdae7bb45f4d054f5c0a6d8c7b73162b (patch) | |
tree | 563b8b3bec0eee97ad7aa8352bc5aa59e2f9218c /src | |
parent | 0031dbb667157a65d6ab1a7e2b7287baac00fd27 (diff) |
CppTools: Allow filtering issues with line edit
...matching diagnostic text/description. Child items are excluded.
Change-Id: Ie7c50af59e0836f60b2ca3bbe50b11eb19398c61
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/clangtools/clangtidyclazytool.cpp | 11 | ||||
-rw-r--r-- | src/plugins/clangtools/clangtidyclazytool.h | 4 | ||||
-rw-r--r-- | src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp | 10 |
3 files changed, 24 insertions, 1 deletions
diff --git a/src/plugins/clangtools/clangtidyclazytool.cpp b/src/plugins/clangtools/clangtidyclazytool.cpp index ab922e2c4d..4e5b3448ca 100644 --- a/src/plugins/clangtools/clangtidyclazytool.cpp +++ b/src/plugins/clangtools/clangtidyclazytool.cpp @@ -50,6 +50,7 @@ #include <projectexplorer/target.h> #include <projectexplorer/session.h> +#include <utils/fancylineedit.h> #include <utils/utilsicons.h> #include <QAction> @@ -108,6 +109,15 @@ ClangTidyClazyTool::ClangTidyClazyTool() connect(action, &QAction::triggered, m_diagnosticView, &DetailedErrorView::goNext); m_goNext = action; + // Filter line edit + m_filterLineEdit = new Utils::FancyLineEdit(); + m_filterLineEdit->setFiltering(true); + m_filterLineEdit->setHistoryCompleter("CppTools.ClangTidyClazyIssueFilter", true); + connect(m_filterLineEdit, &Utils::FancyLineEdit::filterChanged, [this](const QString &filter) { + m_diagnosticFilterModel->setFilterRegExp( + QRegExp(filter, Qt::CaseSensitive, QRegExp::WildcardUnix)); + }); + ActionContainer *menu = ActionManager::actionContainer(Debugger::Constants::M_DEBUG_ANALYZER); const QString toolTip = tr("Clang-Tidy and Clazy use a customized Clang executable from the " "Clang project to search for errors and warnings."); @@ -132,6 +142,7 @@ ClangTidyClazyTool::ClangTidyClazyTool() tidyClazyToolbar.addAction(m_stopAction); tidyClazyToolbar.addAction(m_goBack); tidyClazyToolbar.addAction(m_goNext); + tidyClazyToolbar.addWidget(m_filterLineEdit); Debugger::registerToolbar(ClangTidyClazyPerspectiveId, tidyClazyToolbar); updateRunActions(); diff --git a/src/plugins/clangtools/clangtidyclazytool.h b/src/plugins/clangtools/clangtidyclazytool.h index 20aebea724..45358560c1 100644 --- a/src/plugins/clangtools/clangtidyclazytool.h +++ b/src/plugins/clangtools/clangtidyclazytool.h @@ -27,6 +27,8 @@ #include "clangtool.h" +namespace Utils { class FancyLineEdit; } + namespace ClangTools { namespace Internal { @@ -58,6 +60,8 @@ private: DiagnosticFilterModel *m_diagnosticFilterModel = nullptr; + Utils::FancyLineEdit *m_filterLineEdit = nullptr; + QAction *m_goBack = nullptr; QAction *m_goNext = nullptr; }; diff --git a/src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp b/src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp index fb174b1f3f..bd1db48d32 100644 --- a/src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp +++ b/src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp @@ -346,8 +346,11 @@ void DiagnosticFilterModel::addSuppressedDiagnostic( bool DiagnosticFilterModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const { + // Avoid filtering child diagnostics / explaining steps. if (sourceParent.isValid()) return true; + + // Is the diagnostic suppressed? const Diagnostic diag = static_cast<ClangToolsDiagnosticModel *>(sourceModel()) ->diagnostics().at(sourceRow); foreach (const SuppressedDiagnostic &d, m_suppressedDiagnostics) { @@ -360,7 +363,12 @@ bool DiagnosticFilterModel::filterAcceptsRow(int sourceRow, if (filePath == diag.location.filePath) return false; } - return true; + + // Does the diagnostic match the filter? + if (diag.description.contains(filterRegExp())) + return true; + + return false; } void DiagnosticFilterModel::handleSuppressedDiagnosticsChanged() |