summaryrefslogtreecommitdiff
path: root/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2016-07-29 16:12:02 +0300
committerOrgad Shaneh <orgad.shaneh@audiocodes.com>2016-07-29 16:13:18 +0300
commit35d7352b3e2965768f90dc3f2ac17aec68af5df5 (patch)
treee9ce2b482fe1a4ea965701154ba4967256202462 /src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp
parentcda7a3188f86f6a506225a679e123ee72b8c4f76 (diff)
parent5c5197d19d31a7c81f5bfb64a666b589bbd5638c (diff)
downloadqt-creator-35d7352b3e2965768f90dc3f2ac17aec68af5df5.tar.gz
Merge remote-tracking branch 'origin/4.1'
Change-Id: Ie96fa53a88bcd06fa688a579c1d84aaf6f5e905f
Diffstat (limited to 'src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp')
-rw-r--r--src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp23
1 files changed, 20 insertions, 3 deletions
diff --git a/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp b/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp
index f140907a66..f96b11e4a5 100644
--- a/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp
+++ b/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp
@@ -446,6 +446,21 @@ static Core::Id toolchainType(ProjectExplorer::RunConfiguration *runConfiguratio
return ToolChainKitInformation::toolChain(runConfiguration->target()->kit(), ToolChain::Language::Cxx)->typeId();
}
+static QString executableForVersionCheck(Core::Id toolchainType, const QString &executable)
+{
+ if (toolchainType == ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID) {
+ const QString suffix = QLatin1String("-cl.exe");
+ if (executable.endsWith(suffix, Utils::HostOsInfo::fileNameCaseSensitivity())) {
+ QString modified = executable;
+ modified.chop(suffix.length());
+ modified.append(QLatin1String(".exe"));
+ return modified;
+ }
+ }
+
+ return executable;
+}
+
void ClangStaticAnalyzerRunControl::start()
{
m_success = false;
@@ -458,7 +473,8 @@ void ClangStaticAnalyzerRunControl::start()
// Check clang executable
bool isValidClangExecutable;
- const QString executable = clangExecutableFromSettings(toolchainType(runConfiguration()),
+ const Core::Id theToolchainType = toolchainType(runConfiguration());
+ const QString executable = clangExecutableFromSettings(theToolchainType,
&isValidClangExecutable);
if (!isValidClangExecutable) {
const QString errorMessage = tr("Clang Static Analyzer: Invalid executable \"%1\", stop.")
@@ -471,12 +487,13 @@ void ClangStaticAnalyzerRunControl::start()
}
// Check clang version
- const ClangExecutableVersion version = clangExecutableVersion(executable);
+ const QString versionCheckExecutable = executableForVersionCheck(theToolchainType, executable);
+ const ClangExecutableVersion version = clangExecutableVersion(versionCheckExecutable);
if (!version.isValid()) {
const QString warningMessage
= tr("Clang Static Analyzer: Running with possibly unsupported version, "
"could not determine version from executable \"%1\".")
- .arg(executable);
+ .arg(versionCheckExecutable);
appendMessage(warningMessage + QLatin1Char('\n'), Utils::StdErrFormat);
TaskHub::addTask(Task::Warning, warningMessage, Debugger::Constants::ANALYZERTASK_ID);
TaskHub::requestPopup();