void ClangToolsUnitTests::testProject() { QFETCH(QString, projectFilePath); QFETCH(int, expectedDiagCount); if (projectFilePath.contains("mingw")) { const ToolChain * const toolchain = ToolChainKitAspect::toolChain(KitManager::kits().constFirst(), Constants::CXX_LANGUAGE_ID); if (toolchain->typeId() != ProjectExplorer::Constants::MINGW_TOOLCHAIN_TYPEID) QSKIP("This test is mingw specific, does not run for other toolchains"); } CppTools::Tests::ProjectOpenerAndCloser projectManager; const CppTools::ProjectInfo projectInfo = projectManager.open(projectFilePath, true); QVERIFY(projectInfo.isValid()); ClangTool *tool = ClangTidyClazyTool::instance(); // Change configs QSharedPointer<CppTools::CppCodeModelSettings> settings = CppTools::codeModelSettings(); const CppTools::ClangDiagnosticConfigs originalConfigs = settings->clangCustomDiagnosticConfigs(); const Core::Id originalId = settings->clangDiagnosticConfigId(); CppTools::ClangDiagnosticConfigs modifiedConfigs = originalConfigs; const CppTools::ClangDiagnosticConfig clangTidyConfig = createTidyClazyConfig(); modifiedConfigs.push_back(clangTidyConfig); ExecuteOnDestruction executeOnDestruction([=]() { // Restore configs settings->setClangCustomDiagnosticConfigs(originalConfigs); settings->setClangDiagnosticConfigId(originalId); }); settings->setClangCustomDiagnosticConfigs(modifiedConfigs); settings->setClangDiagnosticConfigId(clangTidyConfig.id()); tool->startTool(false); QSignalSpy waiter(tool, SIGNAL(finished(bool))); QVERIFY(waiter.wait(30000)); const QList<QVariant> arguments = waiter.takeFirst(); QVERIFY(arguments.first().toBool()); QCOMPARE(tool->diagnostics().count(), expectedDiagCount); }
static CppTools::ClangDiagnosticConfig createTidyClazyConfig() { CppTools::ClangDiagnosticConfig config; config.setId("Test.ClangTidy"); config.setDisplayName("Test"); config.setIsReadOnly(true); config.setClangOptions(QStringList{QStringLiteral("-Wno-everything")}); config.setClangTidyMode(CppTools::ClangDiagnosticConfig::TidyMode::ChecksPrefixList); config.setClangTidyChecks("modernize-*, misc-*"); config.setClazyChecks("level2"); return config; }
static CppTools::ClangDiagnosticConfig createConfigRepresentingGlobalSetting(const CppTools::ClangDiagnosticConfig &baseConfig) { CppTools::ClangDiagnosticConfig config = baseConfig; config.setId(GLOBAL_PROXY_CONFIG_ID); QString displayName = config.displayName(); if (config.isReadOnly()) displayName = CppTools::ClangDiagnosticConfigsModel::displayNameWithBuiltinIndication(config); displayName = ClangProjectSettingsWidget::tr("Global setting (%1)").arg(displayName); config.setDisplayName(displayName); config.setIsReadOnly(true); return config; }