diff options
author | Eike Ziller <eike.ziller@qt.io> | 2019-06-28 12:50:03 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2019-06-28 12:50:03 +0200 |
commit | 10098b2508abe6e8df59b7e27ea64e9483f1f8be (patch) | |
tree | b73815f1e8ca7aa12c347706b410050e3eb22caa /src/plugins/clangtools | |
parent | 5dbfd46bcfe177b8308c70a66f7d404429249f6b (diff) | |
parent | a111f251261159b50e92d6866f2058c66b43e390 (diff) | |
download | qt-creator-10098b2508abe6e8df59b7e27ea64e9483f1f8be.tar.gz |
Merge remote-tracking branch 'origin/4.10'
Conflicts:
CMakeLists.txt
tests/unit/unittest/unittest.pro
Change-Id: I64296ad31502d9b35012da129a28e9277e9fcf8e
Diffstat (limited to 'src/plugins/clangtools')
-rw-r--r-- | src/plugins/clangtools/clangselectablefilesdialog.cpp | 3 | ||||
-rw-r--r-- | src/plugins/clangtools/clangtoolruncontrol.cpp | 10 | ||||
-rw-r--r-- | src/plugins/clangtools/clangtoolsconfigwidget.cpp | 3 | ||||
-rw-r--r-- | src/plugins/clangtools/clangtoolsprojectsettings.cpp | 4 | ||||
-rw-r--r-- | src/plugins/clangtools/clangtoolsutils.cpp | 23 | ||||
-rw-r--r-- | src/plugins/clangtools/clangtoolsutils.h | 3 |
6 files changed, 44 insertions, 2 deletions
diff --git a/src/plugins/clangtools/clangselectablefilesdialog.cpp b/src/plugins/clangtools/clangselectablefilesdialog.cpp index e48679aa05..c6ad76ff0a 100644 --- a/src/plugins/clangtools/clangselectablefilesdialog.cpp +++ b/src/plugins/clangtools/clangselectablefilesdialog.cpp @@ -295,6 +295,7 @@ SelectableFilesDialog::SelectableFilesDialog(const ProjectInfo &projectInfo, CppTools::ClangDiagnosticConfigsSelectionWidget *diagnosticConfigsSelectionWidget = m_ui->clangToolsBasicSettings->ui()->clangDiagnosticConfigsSelectionWidget; QCheckBox *buildBeforeAnalysis = m_ui->clangToolsBasicSettings->ui()->buildBeforeAnalysis; + buildBeforeAnalysis->setToolTip(hintAboutBuildBeforeAnalysis()); ClangToolsProjectSettings *settings = ClangToolsProjectSettingsManager::getSettings(m_project); m_customDiagnosticConfig = diagnosticConfiguration(settings); @@ -337,6 +338,8 @@ SelectableFilesDialog::SelectableFilesDialog(const ProjectInfo &projectInfo, m_customDiagnosticConfig = currentConfigId; }); connect(buildBeforeAnalysis, &QCheckBox::toggled, [this](bool checked) { + if (!checked) + showHintAboutBuildBeforeAnalysis(); if (m_ui->globalOrCustom->currentIndex() == CustomSettings) m_buildBeforeAnalysis = checked; }); diff --git a/src/plugins/clangtools/clangtoolruncontrol.cpp b/src/plugins/clangtools/clangtoolruncontrol.cpp index b1572b0010..0c2ca841e6 100644 --- a/src/plugins/clangtools/clangtoolruncontrol.cpp +++ b/src/plugins/clangtools/clangtoolruncontrol.cpp @@ -477,6 +477,16 @@ void ClangToolRunControl::finalize() if (m_filesNotAnalyzed != 0) { QString msg = tr("%1: Not all files could be analyzed.").arg(toolName); TaskHub::addTask(Task::Error, msg, Debugger::Constants::ANALYZERTASK_ID); + if (m_target && !m_target->activeBuildConfiguration()->buildDirectory().exists() + && !ClangToolsProjectSettingsManager::getSettings(m_target->project()) + ->buildBeforeAnalysis()) { + msg = tr("%1: You might need to build the project to generate or update source " + "files. To build automatically, enable \"Build the project before starting " + "analysis\".") + .arg(toolName); + TaskHub::addTask(Task::Error, msg, Debugger::Constants::ANALYZERTASK_ID); + } + TaskHub::requestPopup(); } diff --git a/src/plugins/clangtools/clangtoolsconfigwidget.cpp b/src/plugins/clangtools/clangtoolsconfigwidget.cpp index ad966ab518..b634875f97 100644 --- a/src/plugins/clangtools/clangtoolsconfigwidget.cpp +++ b/src/plugins/clangtools/clangtoolsconfigwidget.cpp @@ -56,9 +56,12 @@ ClangToolsConfigWidget::ClangToolsConfigWidget( [settings](int count) { settings->setSimultaneousProcesses(count); }); QCheckBox *buildBeforeAnalysis = m_ui->clangToolsBasicSettings->ui()->buildBeforeAnalysis; + buildBeforeAnalysis->setToolTip(hintAboutBuildBeforeAnalysis()); buildBeforeAnalysis->setCheckState(settings->savedBuildBeforeAnalysis() ? Qt::Checked : Qt::Unchecked); connect(buildBeforeAnalysis, &QCheckBox::toggled, [settings](bool checked) { + if (!checked) + showHintAboutBuildBeforeAnalysis(); settings->setBuildBeforeAnalysis(checked); }); diff --git a/src/plugins/clangtools/clangtoolsprojectsettings.cpp b/src/plugins/clangtools/clangtoolsprojectsettings.cpp index bc8a3cabb6..55573c8ee6 100644 --- a/src/plugins/clangtools/clangtoolsprojectsettings.cpp +++ b/src/plugins/clangtools/clangtoolsprojectsettings.cpp @@ -87,7 +87,9 @@ void ClangToolsProjectSettings::load() m_useGlobalSettings = useGlobalVariant.isValid() ? useGlobalVariant.toBool() : true; m_diagnosticConfig = Core::Id::fromSetting( m_project->namedSettings(SETTINGS_KEY_DIAGNOSTIC_CONFIG)); - m_buildBeforeAnalysis = m_project->namedSettings(SETTINGS_KEY_BUILD_BEFORE_ANALYSIS).toBool(); + + const QVariant value = m_project->namedSettings(SETTINGS_KEY_BUILD_BEFORE_ANALYSIS); + m_buildBeforeAnalysis = value.isValid() ? value.toBool() : true; auto toFileName = [](const QString &s) { return Utils::FilePath::fromString(s); }; diff --git a/src/plugins/clangtools/clangtoolsutils.cpp b/src/plugins/clangtools/clangtoolsutils.cpp index 3e811500ac..173d97e31d 100644 --- a/src/plugins/clangtools/clangtoolsutils.cpp +++ b/src/plugins/clangtools/clangtoolsutils.cpp @@ -25,6 +25,7 @@ #include "clangtoolsutils.h" +#include "clangtool.h" #include "clangtoolsdiagnostic.h" #include "clangtoolssettings.h" @@ -32,8 +33,9 @@ #include <projectexplorer/projectexplorerconstants.h> -#include <utils/hostosinfo.h> +#include <utils/checkablemessagebox.h> #include <utils/environment.h> +#include <utils/hostosinfo.h> #include <utils/synchronousprocess.h> #include <QCoreApplication> @@ -49,5 +51,24 @@ QString createFullLocationString(const Debugger::DiagnosticLocation &location) + QLatin1Char(':') + QString::number(location.column); } +QString hintAboutBuildBeforeAnalysis() +{ + return ClangTool::tr( + "In general, the project should be built before starting the analysis to ensure that the " + "code to analyze is valid.<br/><br/>" + "Building the project might also run code generators that update the source files as " + "necessary."); +} + +void showHintAboutBuildBeforeAnalysis() +{ + Utils::CheckableMessageBox::doNotShowAgainInformation( + Core::ICore::dialogParent(), + ClangTool::tr("Info About Build the Project Before Analysis"), + hintAboutBuildBeforeAnalysis(), + Core::ICore::settings(), + "ClangToolsDisablingBuildBeforeAnalysisHint"); +} + } // namespace Internal } // namespace ClangTools diff --git a/src/plugins/clangtools/clangtoolsutils.h b/src/plugins/clangtools/clangtoolsutils.h index 6d3a7a90ca..05acb953c5 100644 --- a/src/plugins/clangtools/clangtoolsutils.h +++ b/src/plugins/clangtools/clangtoolsutils.h @@ -41,5 +41,8 @@ namespace Internal { QString createFullLocationString(const Debugger::DiagnosticLocation &location); +QString hintAboutBuildBeforeAnalysis(); +void showHintAboutBuildBeforeAnalysis(); + } // namespace Internal } // namespace ClangTools |