forked from qt-creator/qt-creator
Merge remote-tracking branch 'origin/4.7'
Change-Id: Ifec1f8dc20a18f432ec6ccf68153f31fff3f8b29
This commit is contained in:
@@ -113,6 +113,13 @@
|
||||
\" </magic>\",
|
||||
\" </mime-type>\",
|
||||
|
||||
\" <mime-type type=\'text/x-dsrc\'>\",
|
||||
\" <comment>D source code</comment>\",
|
||||
\" <sub-class-of type=\'text/plain\'/>\",
|
||||
\" <glob pattern=\'*.d\'/>\",
|
||||
\" <glob pattern=\'*.di\'/>\",
|
||||
\" </mime-type>\",
|
||||
|
||||
\"</mime-info>\"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -37,8 +37,9 @@ static void addConfigForQuestionableConstructs(ClangDiagnosticConfigsModel &mode
|
||||
{
|
||||
ClangDiagnosticConfig config;
|
||||
config.setId("Builtin.Questionable");
|
||||
config.setDisplayName(QCoreApplication::translate("ClangDiagnosticConfigsModel",
|
||||
"Warnings for questionable constructs"));
|
||||
config.setDisplayName(QCoreApplication::translate(
|
||||
"ClangDiagnosticConfigsModel",
|
||||
"Clang-only checks for questionable constructs"));
|
||||
config.setIsReadOnly(true);
|
||||
config.setClangOptions(QStringList{
|
||||
QStringLiteral("-Wall"),
|
||||
@@ -53,19 +54,33 @@ static void addConfigForPedanticWarnings(ClangDiagnosticConfigsModel &model)
|
||||
ClangDiagnosticConfig config;
|
||||
config.setId("Builtin.Pedantic");
|
||||
config.setDisplayName(QCoreApplication::translate("ClangDiagnosticConfigsModel",
|
||||
"Pedantic Warnings"));
|
||||
"Clang-only pedantic checks"));
|
||||
config.setIsReadOnly(true);
|
||||
config.setClangOptions(QStringList{QStringLiteral("-Wpedantic")});
|
||||
|
||||
model.appendOrUpdate(config);
|
||||
}
|
||||
|
||||
constexpr const char *DEFAULT_TIDY_CHECKS = "-*,"
|
||||
"bugprone-*,"
|
||||
"cppcoreguidelines-*,"
|
||||
"misc-*,"
|
||||
"modernize-*,"
|
||||
"performance-*,"
|
||||
"readability-*,"
|
||||
"-cppcoreguidelines-owning-memory,"
|
||||
"-readability-braces-around-statements,"
|
||||
"-readability-implicit-bool-conversion,"
|
||||
"-readability-named-parameter";
|
||||
constexpr const char *DEFAULT_CLAZY_CHECKS = "level0";
|
||||
|
||||
static void addConfigForAlmostEveryWarning(ClangDiagnosticConfigsModel &model)
|
||||
{
|
||||
ClangDiagnosticConfig config;
|
||||
config.setId(Constants::CPP_CLANG_BUILTIN_CONFIG_ID_EVERYTHING_WITH_EXCEPTIONS);
|
||||
config.setDisplayName(QCoreApplication::translate("ClangDiagnosticConfigsModel",
|
||||
"Warnings for almost everything"));
|
||||
config.setDisplayName(QCoreApplication::translate(
|
||||
"ClangDiagnosticConfigsModel",
|
||||
"Clang-only checks for almost everything"));
|
||||
config.setIsReadOnly(true);
|
||||
config.setClangOptions(QStringList{
|
||||
QStringLiteral("-Weverything"),
|
||||
@@ -86,11 +101,75 @@ static void addConfigForAlmostEveryWarning(ClangDiagnosticConfigsModel &model)
|
||||
model.appendOrUpdate(config);
|
||||
}
|
||||
|
||||
static void addConfigForTidy(ClangDiagnosticConfigsModel &model)
|
||||
{
|
||||
ClangDiagnosticConfig config;
|
||||
config.setId("Builtin.Tidy");
|
||||
config.setDisplayName(QCoreApplication::translate("ClangDiagnosticConfigsModel",
|
||||
"Clang-Tidy thorough checks"));
|
||||
config.setIsReadOnly(true);
|
||||
config.setClangOptions(QStringList{QStringLiteral("-w")});
|
||||
config.setClangTidyMode(ClangDiagnosticConfig::TidyMode::ChecksPrefixList);
|
||||
config.setClangTidyChecks(QString::fromUtf8(DEFAULT_TIDY_CHECKS));
|
||||
|
||||
model.appendOrUpdate(config);
|
||||
}
|
||||
|
||||
static void addConfigForClangAnalyze(ClangDiagnosticConfigsModel &model)
|
||||
{
|
||||
ClangDiagnosticConfig config;
|
||||
config.setId("Builtin.TidyClangAnalyze");
|
||||
config.setDisplayName(QCoreApplication::translate(
|
||||
"ClangDiagnosticConfigsModel",
|
||||
"Clang-Tidy static analyzer checks"));
|
||||
config.setIsReadOnly(true);
|
||||
config.setClangOptions(QStringList{
|
||||
QStringLiteral("-w"),
|
||||
});
|
||||
config.setClangTidyMode(ClangDiagnosticConfig::TidyMode::ChecksPrefixList);
|
||||
config.setClangTidyChecks("-*,clang-analyzer-*");
|
||||
|
||||
model.appendOrUpdate(config);
|
||||
}
|
||||
|
||||
static void addConfigForClazy(ClangDiagnosticConfigsModel &model)
|
||||
{
|
||||
ClangDiagnosticConfig config;
|
||||
config.setId("Builtin.Clazy");
|
||||
config.setDisplayName(QCoreApplication::translate("ClangDiagnosticConfigsModel",
|
||||
"Clazy level0 checks"));
|
||||
config.setIsReadOnly(true);
|
||||
config.setClangOptions(QStringList{QStringLiteral("-w")});
|
||||
config.setClazyChecks(QString::fromUtf8(DEFAULT_CLAZY_CHECKS));
|
||||
|
||||
model.appendOrUpdate(config);
|
||||
}
|
||||
|
||||
static void addConfigForTidyAndClazy(ClangDiagnosticConfigsModel &model)
|
||||
{
|
||||
ClangDiagnosticConfig config;
|
||||
config.setId("Builtin.TidyAndClazy");
|
||||
config.setDisplayName(QCoreApplication::translate("ClangDiagnosticConfigsModel",
|
||||
"Clang-Tidy and Clazy preselected checks"));
|
||||
config.setIsReadOnly(true);
|
||||
config.setClangOptions(QStringList{QStringLiteral("-w")});
|
||||
config.setClangTidyMode(ClangDiagnosticConfig::TidyMode::ChecksPrefixList);
|
||||
|
||||
config.setClangTidyChecks(QString::fromUtf8(DEFAULT_TIDY_CHECKS));
|
||||
config.setClazyChecks(QString::fromUtf8(DEFAULT_CLAZY_CHECKS));
|
||||
|
||||
model.appendOrUpdate(config);
|
||||
}
|
||||
|
||||
static void addBuiltinConfigs(ClangDiagnosticConfigsModel &model)
|
||||
{
|
||||
addConfigForPedanticWarnings(model);
|
||||
addConfigForQuestionableConstructs(model);
|
||||
addConfigForAlmostEveryWarning(model);
|
||||
addConfigForTidy(model);
|
||||
addConfigForClangAnalyze(model);
|
||||
addConfigForClazy(model);
|
||||
addConfigForTidyAndClazy(model);
|
||||
}
|
||||
|
||||
ClangDiagnosticConfigsModel::ClangDiagnosticConfigsModel(const ClangDiagnosticConfigs &customConfigs)
|
||||
|
||||
@@ -112,7 +112,7 @@ public:
|
||||
const QModelIndex index = indexForCheck(check);
|
||||
if (!index.isValid())
|
||||
continue;
|
||||
auto node = static_cast<ProjectExplorer::Tree *>(index.internalPointer());
|
||||
auto *node = static_cast<ProjectExplorer::Tree *>(index.internalPointer());
|
||||
node->checked = state;
|
||||
propagateUp(index);
|
||||
propagateDown(index);
|
||||
@@ -161,6 +161,18 @@ public:
|
||||
return ProjectExplorer::SelectableFilesModel::data(index, role);
|
||||
}
|
||||
|
||||
void setEnabled(bool enabled)
|
||||
{
|
||||
m_enabled = enabled;
|
||||
}
|
||||
|
||||
bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override
|
||||
{
|
||||
if (role == Qt::CheckStateRole && !m_enabled)
|
||||
return false;
|
||||
return ProjectExplorer::SelectableFilesModel::setData(index, value, role);
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
// TODO: Remove/replace this method after base class refactoring is done.
|
||||
@@ -220,6 +232,8 @@ private:
|
||||
for (const ProjectExplorer::Tree *t : root->childDirectories)
|
||||
collectChecks(t, checks);
|
||||
}
|
||||
|
||||
bool m_enabled = true;
|
||||
};
|
||||
|
||||
ClangDiagnosticConfigsWidget::ClangDiagnosticConfigsWidget(const Core::Id &configToSelect,
|
||||
@@ -489,7 +503,11 @@ void ClangDiagnosticConfigsWidget::syncClangTidyWidgets(const ClangDiagnosticCon
|
||||
break;
|
||||
}
|
||||
|
||||
m_tidyChecksWidget->setEnabled(!config.isReadOnly());
|
||||
const bool enabled = !config.isReadOnly();
|
||||
m_tidyChecks->tidyMode->setEnabled(enabled);
|
||||
m_tidyChecks->plainTextEditButton->setText(enabled ? tr("Edit Checks as String...")
|
||||
: tr("View Checks as String..."));
|
||||
m_tidyTreeModel->setEnabled(enabled);
|
||||
connectClangTidyItemChanged();
|
||||
}
|
||||
|
||||
@@ -650,12 +668,17 @@ void ClangDiagnosticConfigsWidget::setupTabs()
|
||||
m_tidyChecks->checksPrefixesTree->header()->setStretchLastSection(false);
|
||||
m_tidyChecks->checksPrefixesTree->header()->setSectionResizeMode(0, QHeaderView::Stretch);
|
||||
connect(m_tidyChecks->plainTextEditButton, &QPushButton::clicked, this, [this]() {
|
||||
const bool readOnly = selectedConfig().isReadOnly();
|
||||
|
||||
QDialog dialog;
|
||||
dialog.setWindowTitle(tr("Checks"));
|
||||
dialog.setLayout(new QVBoxLayout);
|
||||
auto *textEdit = new QTextEdit(&dialog);
|
||||
textEdit->setReadOnly(readOnly);
|
||||
dialog.layout()->addWidget(textEdit);
|
||||
auto *buttonsBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
||||
auto *buttonsBox = new QDialogButtonBox(QDialogButtonBox::Ok
|
||||
| (readOnly ? QDialogButtonBox::NoButton
|
||||
: QDialogButtonBox::Cancel));
|
||||
dialog.layout()->addWidget(buttonsBox);
|
||||
QObject::connect(buttonsBox, &QDialogButtonBox::accepted, &dialog, &QDialog::accept);
|
||||
QObject::connect(buttonsBox, &QDialogButtonBox::rejected, &dialog, &QDialog::reject);
|
||||
|
||||
@@ -487,10 +487,6 @@ QString CompilerOptionsBuilder::includeOption() const
|
||||
|
||||
bool CompilerOptionsBuilder::excludeDefineDirective(const ProjectExplorer::Macro ¯o) const
|
||||
{
|
||||
// TODO: Remove in QtCreator 4.7
|
||||
if (macro.key == "__cplusplus")
|
||||
return true;
|
||||
|
||||
// Ignore for all compiler toolchains since LLVM has it's own implementation for
|
||||
// __has_include(STR) and __has_include_next(STR)
|
||||
if (macro.key.startsWith("__has_include"))
|
||||
|
||||
Reference in New Issue
Block a user