aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@qt.io>2018-05-15 11:27:14 +0200
committerNikolai Kosjar <nikolai.kosjar@qt.io>2018-05-15 13:29:53 +0000
commit887a0538cdae7bb45f4d054f5c0a6d8c7b73162b (patch)
tree563b8b3bec0eee97ad7aa8352bc5aa59e2f9218c /src
parent0031dbb667157a65d6ab1a7e2b7287baac00fd27 (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.cpp11
-rw-r--r--src/plugins/clangtools/clangtidyclazytool.h4
-rw-r--r--src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp10
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()