forked from qt-creator/qt-creator
Tool: Warn on run in Release mode
Change-Id: I3443ccc8daf37a1b10b43df3736fcf24c7ae2fea Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
This commit is contained in:
@@ -24,10 +24,14 @@
|
|||||||
|
|
||||||
#include <analyzerbase/analyzermanager.h>
|
#include <analyzerbase/analyzermanager.h>
|
||||||
#include <coreplugin/coreconstants.h>
|
#include <coreplugin/coreconstants.h>
|
||||||
|
#include <coreplugin/icore.h>
|
||||||
|
#include <projectexplorer/buildconfiguration.h>
|
||||||
#include <projectexplorer/projectexplorer.h>
|
#include <projectexplorer/projectexplorer.h>
|
||||||
#include <projectexplorer/projectexplorerconstants.h>
|
#include <projectexplorer/projectexplorerconstants.h>
|
||||||
#include <projectexplorer/session.h>
|
#include <projectexplorer/session.h>
|
||||||
|
#include <projectexplorer/target.h>
|
||||||
|
|
||||||
|
#include <utils/checkablemessagebox.h>
|
||||||
#include <utils/fancymainwindow.h>
|
#include <utils/fancymainwindow.h>
|
||||||
|
|
||||||
#include <QDockWidget>
|
#include <QDockWidget>
|
||||||
@@ -139,23 +143,60 @@ AnalyzerRunControl *ClangStaticAnalyzerTool::createRunControl(
|
|||||||
return engine;
|
return engine;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool dontStartAfterHintForDebugMode()
|
||||||
|
{
|
||||||
|
const Project *project = SessionManager::startupProject();
|
||||||
|
BuildConfiguration::BuildType buildType = BuildConfiguration::Unknown;
|
||||||
|
if (project) {
|
||||||
|
if (const Target *target = project->activeTarget()) {
|
||||||
|
if (const BuildConfiguration *buildConfig = target->activeBuildConfiguration())
|
||||||
|
buildType = buildConfig->buildType();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (buildType == BuildConfiguration::Release) {
|
||||||
|
const QString wrongMode = ClangStaticAnalyzerTool::tr("Release");
|
||||||
|
const QString toolName = ClangStaticAnalyzerTool::tr("Clang Static Analyzer");
|
||||||
|
const QString title = ClangStaticAnalyzerTool::tr("Run %1 in %2 Mode?").arg(toolName)
|
||||||
|
.arg(wrongMode);
|
||||||
|
const QString message = ClangStaticAnalyzerTool::tr(
|
||||||
|
"<html><head/><body>"
|
||||||
|
"<p>You are trying to run the tool \"%1\" on an application in %2 mode. The tool is "
|
||||||
|
"designed to be used in Debug mode since enabled assertions can reduce the number of "
|
||||||
|
"false positives.</p>"
|
||||||
|
"<p>Do you want to continue and run the tool in %2 mode?</p>"
|
||||||
|
"</body></html>")
|
||||||
|
.arg(toolName).arg(wrongMode);
|
||||||
|
if (Utils::CheckableMessageBox::doNotAskAgainQuestion(Core::ICore::mainWindow(),
|
||||||
|
title, message, Core::ICore::settings(),
|
||||||
|
QLatin1String("ClangStaticAnalyzerCorrectModeWarning"),
|
||||||
|
QDialogButtonBox::Yes|QDialogButtonBox::Cancel,
|
||||||
|
QDialogButtonBox::Cancel, QDialogButtonBox::Yes) != QDialogButtonBox::Yes)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void ClangStaticAnalyzerTool::startTool(StartMode mode)
|
void ClangStaticAnalyzerTool::startTool(StartMode mode)
|
||||||
{
|
{
|
||||||
QTC_ASSERT(mode == Analyzer::StartLocal, return);
|
QTC_ASSERT(mode == Analyzer::StartLocal, return);
|
||||||
|
|
||||||
AnalyzerManager::showMode();
|
AnalyzerManager::showMode();
|
||||||
|
|
||||||
|
if (dontStartAfterHintForDebugMode())
|
||||||
|
return;
|
||||||
|
|
||||||
m_diagnosticModel->clear();
|
m_diagnosticModel->clear();
|
||||||
setBusyCursor(true);
|
setBusyCursor(true);
|
||||||
Project *pro = SessionManager::startupProject();
|
Project *project = SessionManager::startupProject();
|
||||||
QTC_ASSERT(pro, return);
|
QTC_ASSERT(project, return);
|
||||||
ProjectExplorerPlugin::instance()->runProject(pro, runMode());
|
ProjectExplorerPlugin::instance()->runProject(project, runMode());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ClangStaticAnalyzerTool::onEngineIsStarting()
|
void ClangStaticAnalyzerTool::onEngineIsStarting()
|
||||||
{
|
{
|
||||||
QTC_ASSERT(m_diagnosticModel, return);
|
QTC_ASSERT(m_diagnosticModel, return);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ClangStaticAnalyzerTool::onNewDiagnosticsAvailable(const QList<Diagnostic> &diagnostics)
|
void ClangStaticAnalyzerTool::onNewDiagnosticsAvailable(const QList<Diagnostic> &diagnostics)
|
||||||
|
Reference in New Issue
Block a user