summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Donchevskii <ivan.donchevskii@qt.io>2017-11-02 16:26:17 +0100
committerIvan Donchevskii <ivan.donchevskii@qt.io>2017-11-16 11:05:21 +0000
commit8eececaa96153c69c11ac42c4b09e5b1944f9d4e (patch)
treef6eca7fb0a3e3d850420c26ccbeafced62efd429
parentcdaa4aee1a5caa411b4f790ce1d6834da281eb54 (diff)
downloadqt-creator-8eececaa96153c69c11ac42c4b09e5b1944f9d4e.tar.gz
Clang: add clang plugins checks to code model settings
Add UI controls to change settings and apply them together with warnings and command line options. Current settings are not very flexible but should be easy to test and use without reading tidy/clazy help. Change-Id: I1ca6b49a42a1169b34a703dd50de0bbc105df28f Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
-rw-r--r--src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp48
-rw-r--r--src/plugins/clangcodemodel/clangutils.cpp32
-rw-r--r--src/plugins/cpptools/clazychecks.ui80
-rw-r--r--src/plugins/cpptools/cppcodemodelsettings.cpp34
-rw-r--r--src/plugins/cpptools/cppcodemodelsettings.h9
-rw-r--r--src/plugins/cpptools/cppcodemodelsettingspage.cpp71
-rw-r--r--src/plugins/cpptools/cppcodemodelsettingspage.h18
-rw-r--r--src/plugins/cpptools/cppcodemodelsettingspage.ui37
-rw-r--r--src/plugins/cpptools/cpptools.pro4
-rw-r--r--src/plugins/cpptools/cpptools.qbs2
-rw-r--r--src/plugins/cpptools/cpptoolsconstants.h2
-rw-r--r--src/plugins/cpptools/tidychecks.ui157
12 files changed, 460 insertions, 34 deletions
diff --git a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp
index 3d2f2f5267..4735c8497b 100644
--- a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp
+++ b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp
@@ -553,12 +553,54 @@ static QStringList warningOptions(CppTools::ProjectPart *projectPart)
return CppTools::codeModelSettings()->clangDiagnosticConfig().commandLineWarnings();
}
+static QStringList tidyCommandLine()
+{
+ const QString tidyChecks = CppTools::codeModelSettings()->tidyChecks();
+
+ if (tidyChecks.isEmpty())
+ return QStringList();
+
+ QStringList result;
+ result.append("-Xclang");
+ result.append("-add-plugin");
+ result.append("-Xclang");
+ result.append("clang-tidy");
+ result.append("-Xclang");
+ result.append("-plugin-arg-clang-tidy");
+ result.append("-Xclang");
+ result.append("-checks='-*" + tidyChecks + "'");
+ return result;
+}
+
+static QStringList clazyCommandLine()
+{
+ const QString clazyChecks = CppTools::codeModelSettings()->clazyChecks();
+
+ if (clazyChecks.isEmpty())
+ return QStringList();
+
+ QStringList result;
+ result.append("-Xclang");
+ result.append("-add-plugin");
+ result.append("-Xclang");
+ result.append("clang-lazy");
+ result.append("-Xclang");
+ result.append("-plugin-arg-clang-lazy");
+ result.append("-Xclang");
+ result.append(clazyChecks);
+ return result;
+}
+
static QStringList commandLineOptions(CppTools::ProjectPart *projectPart)
{
+ QStringList result;
if (!projectPart || !projectPart->project)
- return ClangProjectSettings::globalCommandLineOptions();
-
- return ClangProjectSettings{projectPart->project}.commandLineOptions();
+ result.append(ClangProjectSettings::globalCommandLineOptions());
+ else
+ result.append(ClangProjectSettings{projectPart->project}.commandLineOptions());
+ result.append(tidyCommandLine());
+ result.append(clazyCommandLine());
+ return result;
}
static QStringList precompiledHeaderOptions(
diff --git a/src/plugins/clangcodemodel/clangutils.cpp b/src/plugins/clangcodemodel/clangutils.cpp
index 81c85dc12c..8d04157d59 100644
--- a/src/plugins/clangcodemodel/clangutils.cpp
+++ b/src/plugins/clangcodemodel/clangutils.cpp
@@ -35,6 +35,8 @@
#include <cpptools/cppmodelmanager.h>
#include <cpptools/editordocumenthandle.h>
#include <cpptools/projectpart.h>
+#include <cpptools/cppcodemodelsettings.h>
+#include <cpptools/cpptoolsreuse.h>
#include <projectexplorer/projectexplorerconstants.h>
#include <utils/qtcassert.h>
@@ -79,12 +81,6 @@ static QString creatorResourcePath()
#endif
}
-static bool loadClangPlugins()
-{
- static bool load = qEnvironmentVariableIntValue("QTC_CLANG_PLUGINS_LOAD");
- return load;
-}
-
class LibClangOptionsBuilder final : public CompilerOptionsBuilder
{
public:
@@ -102,10 +98,6 @@ public:
void addExtraOptions() final
{
addDummyUiHeaderOnDiskIncludePath();
- if (loadClangPlugins()) {
- addTidyPlugin();
- addClazyPlugin();
- }
add("-fmessage-length=0");
add("-fdiagnostics-show-note-include-stack");
add("-fmacro-backtrace-limit=0");
@@ -133,26 +125,6 @@ private:
if (!path.isEmpty())
add(includeDirOption() + QDir::toNativeSeparators(path));
}
-
- void addClazyPlugin()
- {
- add("-Xclang");
- add("-add-plugin");
- add("-Xclang");
- add("clang-lazy");
- }
-
- void addTidyPlugin()
- {
- add("-Xclang");
- add("-add-plugin");
- add("-Xclang");
- add("clang-tidy");
- add("-Xclang");
- add("-plugin-arg-clang-tidy");
- add("-Xclang");
- add("-checks='-*,clang-diagnostic-*,llvm-*,misc-*,-misc-unused-parameters,readability-identifier-naming'");
- }
};
/**
diff --git a/src/plugins/cpptools/clazychecks.ui b/src/plugins/cpptools/clazychecks.ui
new file mode 100644
index 0000000000..7008201b4a
--- /dev/null
+++ b/src/plugins/cpptools/clazychecks.ui
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>CppTools::ClazyChecks</class>
+ <widget class="QWidget" name="CppTools::ClazyChecks">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>503</width>
+ <height>40</height>
+ </rect>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QComboBox" name="clazyLevel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="currentIndex">
+ <number>0</number>
+ </property>
+ <item>
+ <property name="text">
+ <string>Disable</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>level0</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>level1</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>level2</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>level3</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src/plugins/cpptools/cppcodemodelsettings.cpp b/src/plugins/cpptools/cppcodemodelsettings.cpp
index f5bb404b61..f735697347 100644
--- a/src/plugins/cpptools/cppcodemodelsettings.cpp
+++ b/src/plugins/cpptools/cppcodemodelsettings.cpp
@@ -67,6 +67,12 @@ static QString skipIndexingBigFilesKey()
static QString indexerFileSizeLimitKey()
{ return QLatin1String(Constants::CPPTOOLS_INDEXER_FILE_SIZE_LIMIT); }
+static QString tidyChecksKey()
+{ return QLatin1String(Constants::CPPTOOLS_TIDY_CHECKS); }
+
+static QString clazyChecksKey()
+{ return QLatin1String(Constants::CPPTOOLS_CLAZY_CHECKS); }
+
void CppCodeModelSettings::fromSettings(QSettings *s)
{
s->beginGroup(QLatin1String(Constants::CPPTOOLS_SETTINGSGROUP));
@@ -101,6 +107,12 @@ void CppCodeModelSettings::fromSettings(QSettings *s)
const QVariant indexerFileSizeLimit = s->value(indexerFileSizeLimitKey(), 5);
setIndexerFileSizeLimitInMb(indexerFileSizeLimit.toInt());
+ const QVariant tidyChecks = s->value(tidyChecksKey(),
+ QString("clang-diagnostic-*,llvm-*,misc-*"));
+ setTidyChecks(tidyChecks.toString());
+ const QVariant clazyChecks = s->value(clazyChecksKey(), QString("level1"));
+ setClazyChecks(clazyChecks.toString());
+
s->endGroup();
emit changed();
@@ -127,6 +139,8 @@ void CppCodeModelSettings::toSettings(QSettings *s)
s->setValue(interpretAmbiguousHeadersAsCHeadersKey(), interpretAmbigiousHeadersAsCHeaders());
s->setValue(skipIndexingBigFilesKey(), skipIndexingBigFiles());
s->setValue(indexerFileSizeLimitKey(), indexerFileSizeLimitInMb());
+ s->setValue(tidyChecksKey(), tidyChecks());
+ s->setValue(clazyChecksKey(), clazyChecks());
s->endGroup();
@@ -204,3 +218,23 @@ void CppCodeModelSettings::setIndexerFileSizeLimitInMb(int sizeInMB)
{
m_indexerFileSizeLimitInMB = sizeInMB;
}
+
+QString CppCodeModelSettings::tidyChecks() const
+{
+ return m_tidyChecks;
+}
+
+void CppCodeModelSettings::setTidyChecks(QString checks)
+{
+ m_tidyChecks = checks;
+}
+
+QString CppCodeModelSettings::clazyChecks() const
+{
+ return m_clazyChecks;
+}
+
+void CppCodeModelSettings::setClazyChecks(QString checks)
+{
+ m_clazyChecks = checks;
+}
diff --git a/src/plugins/cpptools/cppcodemodelsettings.h b/src/plugins/cpptools/cppcodemodelsettings.h
index 4c6404e506..edf0a6e1dc 100644
--- a/src/plugins/cpptools/cppcodemodelsettings.h
+++ b/src/plugins/cpptools/cppcodemodelsettings.h
@@ -72,6 +72,12 @@ public:
int indexerFileSizeLimitInMb() const;
void setIndexerFileSizeLimitInMb(int sizeInMB);
+ QString tidyChecks() const;
+ void setTidyChecks(QString checks);
+
+ QString clazyChecks() const;
+ void setClazyChecks(QString checks);
+
public: // for tests
void emitChanged();
@@ -86,6 +92,9 @@ private:
int m_indexerFileSizeLimitInMB = 5;
ClangDiagnosticConfigs m_clangCustomDiagnosticConfigs;
Core::Id m_clangDiagnosticConfigId;
+
+ QString m_tidyChecks;
+ QString m_clazyChecks;
};
} // namespace CppTools
diff --git a/src/plugins/cpptools/cppcodemodelsettingspage.cpp b/src/plugins/cpptools/cppcodemodelsettingspage.cpp
index e6af115aed..d9bc8c9370 100644
--- a/src/plugins/cpptools/cppcodemodelsettingspage.cpp
+++ b/src/plugins/cpptools/cppcodemodelsettingspage.cpp
@@ -29,6 +29,8 @@
#include "cppmodelmanager.h"
#include "cpptoolsconstants.h"
#include "ui_cppcodemodelsettingspage.h"
+#include "ui_clazychecks.h"
+#include "ui_tidychecks.h"
#include <coreplugin/icore.h>
#include <utils/algorithm.h>
@@ -84,6 +86,65 @@ void CppCodeModelSettingsWidget::setupClangCodeModelWidgets()
diagnosticConfigsModel,
m_settings->clangDiagnosticConfigId());
m_ui->clangSettingsGroupBox->layout()->addWidget(m_clangDiagnosticConfigsWidget);
+
+ setupPluginsWidgets();
+}
+
+void CppCodeModelSettingsWidget::setupPluginsWidgets()
+{
+ m_clazyChecks.reset(new CppTools::Ui::ClazyChecks);
+ m_clazyChecksWidget = new QWidget();
+ m_clazyChecks->setupUi(m_clazyChecksWidget);
+
+ m_tidyChecks.reset(new CppTools::Ui::TidyChecks);
+ m_tidyChecksWidget = new QWidget();
+ m_tidyChecks->setupUi(m_tidyChecksWidget);
+
+ m_ui->pluginChecks->layout()->addWidget(m_tidyChecksWidget);
+ m_ui->pluginChecks->layout()->addWidget(m_clazyChecksWidget);
+ m_clazyChecksWidget->setVisible(false);
+ connect(m_ui->pluginSelection,
+ static_cast<void (QComboBox::*)(int index)>(&QComboBox::currentIndexChanged),
+ [this](int index) {
+ (index ? m_clazyChecksWidget : m_tidyChecksWidget)->setVisible(true);
+ (!index ? m_clazyChecksWidget : m_tidyChecksWidget)->setVisible(false);
+ });
+
+ setupTidyChecks();
+ setupClazyChecks();
+}
+
+void CppCodeModelSettingsWidget::setupTidyChecks()
+{
+ m_currentTidyChecks = m_settings->tidyChecks();
+ for (QObject *child : m_tidyChecksWidget->children()) {
+ auto *check = qobject_cast<QCheckBox *>(child);
+ if (!check)
+ continue;
+ if (m_currentTidyChecks.indexOf(check->text()) != -1)
+ check->setChecked(true);
+ connect(check, &QCheckBox::clicked, [this, check](bool checked) {
+ const QString prefix = check->text();
+ checked ? m_currentTidyChecks.append(',' + prefix)
+ : m_currentTidyChecks.remove(',' + prefix);
+ });
+ }
+}
+
+void CppCodeModelSettingsWidget::setupClazyChecks()
+{
+ m_currentClazyChecks = m_settings->clazyChecks();
+ if (!m_currentClazyChecks.isEmpty())
+ m_clazyChecks->clazyLevel->setCurrentText(m_currentClazyChecks);
+ connect(m_clazyChecks->clazyLevel,
+ static_cast<void (QComboBox::*)(int index)>(&QComboBox::currentIndexChanged),
+ [this](int index) {
+ if (index == 0) {
+ m_currentClazyChecks.clear();
+ return;
+ }
+ m_currentClazyChecks = m_clazyChecks->clazyLevel->itemText(index);
+ });
}
void CppCodeModelSettingsWidget::setupGeneralWidgets()
@@ -117,6 +178,16 @@ bool CppCodeModelSettingsWidget::applyClangCodeModelWidgetsToSettings() const
settingsChanged = true;
}
+ if (m_settings->tidyChecks() != m_currentTidyChecks) {
+ m_settings->setTidyChecks(m_currentTidyChecks);
+ settingsChanged = true;
+ }
+
+ if (m_settings->clazyChecks() != m_currentClazyChecks) {
+ m_settings->setClazyChecks(m_currentClazyChecks);
+ settingsChanged = true;
+ }
+
return settingsChanged;
}
diff --git a/src/plugins/cpptools/cppcodemodelsettingspage.h b/src/plugins/cpptools/cppcodemodelsettingspage.h
index 21911763a1..478c0b11b0 100644
--- a/src/plugins/cpptools/cppcodemodelsettingspage.h
+++ b/src/plugins/cpptools/cppcodemodelsettingspage.h
@@ -32,6 +32,8 @@
#include <QPointer>
#include <QWidget>
+#include <memory>
+
QT_FORWARD_DECLARE_CLASS(QComboBox)
QT_FORWARD_DECLARE_CLASS(QSettings)
@@ -39,6 +41,11 @@ namespace CppTools {
class ClangDiagnosticConfigsWidget;
+namespace Ui {
+class ClazyChecks;
+class TidyChecks;
+} // namespace Ui
+
namespace Internal {
namespace Ui { class CppCodeModelSettingsPage; }
@@ -57,6 +64,9 @@ public:
private:
void setupGeneralWidgets();
void setupClangCodeModelWidgets();
+ void setupPluginsWidgets();
+ void setupTidyChecks();
+ void setupClazyChecks();
bool applyGeneralWidgetsToSettings() const;
bool applyClangCodeModelWidgetsToSettings() const;
@@ -65,6 +75,14 @@ private:
Ui::CppCodeModelSettingsPage *m_ui;
QPointer<ClangDiagnosticConfigsWidget> m_clangDiagnosticConfigsWidget;
QSharedPointer<CppCodeModelSettings> m_settings;
+
+ std::unique_ptr<CppTools::Ui::ClazyChecks> m_clazyChecks;
+ QWidget *m_clazyChecksWidget;
+ QString m_currentClazyChecks;
+
+ std::unique_ptr<CppTools::Ui::TidyChecks> m_tidyChecks;
+ QWidget *m_tidyChecksWidget;
+ QString m_currentTidyChecks;
};
class CppCodeModelSettingsPage: public Core::IOptionsPage
diff --git a/src/plugins/cpptools/cppcodemodelsettingspage.ui b/src/plugins/cpptools/cppcodemodelsettingspage.ui
index 36ce48f28a..443ba44804 100644
--- a/src/plugins/cpptools/cppcodemodelsettingspage.ui
+++ b/src/plugins/cpptools/cppcodemodelsettingspage.ui
@@ -109,6 +109,43 @@
</widget>
</item>
<item>
+ <widget class="QGroupBox" name="clangPlugins">
+ <property name="title">
+ <string>Clang Plugins</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_6">
+ <item>
+ <widget class="QComboBox" name="pluginSelection">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <item>
+ <property name="text">
+ <string>ClangTidy</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Clazy</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="pluginChecks">
+ <property name="title">
+ <string>Checks</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_5"/>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
diff --git a/src/plugins/cpptools/cpptools.pro b/src/plugins/cpptools/cpptools.pro
index 8067604fcc..4dfc0ceece 100644
--- a/src/plugins/cpptools/cpptools.pro
+++ b/src/plugins/cpptools/cpptools.pro
@@ -183,7 +183,9 @@ FORMS += \
clangdiagnosticconfigswidget.ui \
cppcodemodelsettingspage.ui \
cppcodestylesettingspage.ui \
- cppfilesettingspage.ui
+ cppfilesettingspage.ui \
+ clazychecks.ui \
+ tidychecks.ui
equals(TEST, 1) {
HEADERS += \
diff --git a/src/plugins/cpptools/cpptools.qbs b/src/plugins/cpptools/cpptools.qbs
index 934629ccb0..a510f5a21d 100644
--- a/src/plugins/cpptools/cpptools.qbs
+++ b/src/plugins/cpptools/cpptools.qbs
@@ -49,6 +49,7 @@ Project {
"clangdiagnosticconfigswidget.cpp",
"clangdiagnosticconfigswidget.h",
"clangdiagnosticconfigswidget.ui",
+ "clazychecks.ui",
"compileroptionsbuilder.cpp",
"compileroptionsbuilder.h",
"cppcanonicalsymbol.cpp",
@@ -201,6 +202,7 @@ Project {
"symbolfinder.h",
"symbolsfindfilter.cpp",
"symbolsfindfilter.h",
+ "tidychecks.ui",
"typehierarchybuilder.cpp",
"typehierarchybuilder.h",
"usages.h"
diff --git a/src/plugins/cpptools/cpptoolsconstants.h b/src/plugins/cpptools/cpptoolsconstants.h
index dff6d2c6f0..b5e9d86bdb 100644
--- a/src/plugins/cpptools/cpptoolsconstants.h
+++ b/src/plugins/cpptools/cpptoolsconstants.h
@@ -56,6 +56,8 @@ const char CPPTOOLS_INTERPRET_AMBIGIUOUS_HEADERS_AS_C_HEADERS[]
= "InterpretAmbiguousHeadersAsCHeaders";
const char CPPTOOLS_SKIP_INDEXING_BIG_FILES[] = "SkipIndexingBigFiles";
const char CPPTOOLS_INDEXER_FILE_SIZE_LIMIT[] = "IndexerFileSizeLimit";
+const char CPPTOOLS_TIDY_CHECKS[] = "TidyChecks";
+const char CPPTOOLS_CLAZY_CHECKS[] = "ClazyChecks";
const char CPP_CLANG_BUILTIN_CONFIG_ID_EVERYTHING_WITH_EXCEPTIONS[]
= "Builtin.EverythingWithExceptions";
diff --git a/src/plugins/cpptools/tidychecks.ui b/src/plugins/cpptools/tidychecks.ui
new file mode 100644
index 0000000000..78c4878ae4
--- /dev/null
+++ b/src/plugins/cpptools/tidychecks.ui
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>CppTools::TidyChecks</class>
+ <widget class="QWidget" name="CppTools::TidyChecks">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>682</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <widget class="QCheckBox" name="androidCheck">
+ <property name="text">
+ <string>android-*</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="boostCheck">
+ <property name="text">
+ <string>boost-</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="bugproneCheck">
+ <property name="text">
+ <string>bugprone-*</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="certCheck">
+ <property name="text">
+ <string>cert-*</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="coreCheck">
+ <property name="text">
+ <string>cppcoreguidelines-*</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QCheckBox" name="analyzerCheck">
+ <property name="text">
+ <string>clang-analyzer-*</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="diagnosticCheck">
+ <property name="text">
+ <string>clang-diagnostic-*</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="googleCheck">
+ <property name="text">
+ <string>google-*</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="hicppCheck">
+ <property name="text">
+ <string>hicpp-*</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="llvmCheck">
+ <property name="text">
+ <string>llvm-*</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <item>
+ <widget class="QCheckBox" name="miscCheck">
+ <property name="text">
+ <string>misc-*</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="modernizeCheck">
+ <property name="text">
+ <string>modernize-*</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="mpiCheck">
+ <property name="text">
+ <string>mpi-*</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="objcCheck">
+ <property name="text">
+ <string>objc-*</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="performanceCheck">
+ <property name="text">
+ <string>performance-*</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="readabilityCheck">
+ <property name="text">
+ <string>readability-*</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>