Clang/ClangTools: Separate custom diagnostic configs

Add a separate pool of custom diagnostic configs for the
ClangTools plugin. That is, the diagnostic configs in

  Menu: Tools > C++ > Code Model

are not shared anymore with the configs at

  Menu: Tools > Analyzer > ClangTools

On plugin initialization of ClangTools, move tidy/clazy related configs
to ClangTools.

Change-Id: Id06087a58b53e466a3d7bbac669550c5fbe9899d
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
This commit is contained in:
Nikolai Kosjar
2019-09-25 15:46:15 +02:00
parent d2648db914
commit b895dfa382
35 changed files with 523 additions and 443 deletions

View File

@@ -31,10 +31,10 @@
#include "clangtoolsutils.h"
#include <coreplugin/icore.h>
#include <cpptools/cppcodemodelsettings.h>
#include <cpptools/clangdiagnosticconfig.h>
#include <cpptools/cppmodelmanager.h>
#include <cpptools/cpptoolstestcase.h>
#include <cpptools/cpptoolsreuse.h>
#include <cpptools/cpptoolstestcase.h>
#include <projectexplorer/kitinformation.h>
#include <projectexplorer/kitmanager.h>
#include <projectexplorer/projectexplorer.h>
@@ -62,8 +62,8 @@ void ClangToolsUnitTests::initTestCase()
const QList<Kit *> allKits = KitManager::kits();
if (allKits.count() != 1)
QSKIP("This test requires exactly one kit to be present");
const ToolChain * const toolchain = ToolChainKitAspect::toolChain(allKits.first(),
Constants::CXX_LANGUAGE_ID);
const ToolChain *const toolchain = ToolChainKitAspect::toolChain(allKits.first(),
Constants::CXX_LANGUAGE_ID);
if (!toolchain)
QSKIP("This test requires that there is a kit with a toolchain.");
@@ -110,25 +110,11 @@ void ClangToolsUnitTests::testProject()
Tests::ProjectOpenerAndCloser projectManager;
const ProjectInfo projectInfo = projectManager.open(projectFilePath, true);
QVERIFY(projectInfo.isValid());
ClangTool *tool = ClangTool::instance();
// Change configs
QSharedPointer<CppCodeModelSettings> cppToolsSettings = codeModelSettings();
ClangToolsSettings *clangToolsSettings = ClangToolsSettings::instance();
const ClangDiagnosticConfigs originalConfigs = cppToolsSettings->clangCustomDiagnosticConfigs();
ClangDiagnosticConfigs modifiedConfigs = originalConfigs;
modifiedConfigs.push_back(diagnosticConfig);
ExecuteOnDestruction restoreCustomConfigs([=]() {
cppToolsSettings->setClangCustomDiagnosticConfigs(originalConfigs);
});
cppToolsSettings->setClangCustomDiagnosticConfigs(modifiedConfigs);
RunSettings runSettings = clangToolsSettings->runSettings();
runSettings.setDiagnosticConfigId(diagnosticConfig.id());
tool->startTool(runSettings, ClangTool::FileSelection::AllFiles);
tool->startTool(ClangTool::FileSelection::AllFiles,
ClangToolsSettings::instance()->runSettings(),
diagnosticConfig);
QSignalSpy waiter(tool, SIGNAL(finished(bool)));
QVERIFY(waiter.wait(30000));