diff options
author | Christian Kandeler <[email protected]> | 2015-01-23 15:25:45 +0100 |
---|---|---|
committer | Christian Kandeler <[email protected]> | 2015-01-30 15:38:40 +0200 |
commit | 0aa20dd26d641dcaeb19efc1028e408910032e93 (patch) | |
tree | 21615c28df840397dcd399c3f055c166e19dd51d /plugins/clangstaticanalyzer/clangstaticanalyzerrunner.cpp | |
parent | 6aad65375b265bced5758cd147b89fe26ca5edff (diff) |
Add support for MSVC.
Via clang-cl, which supports the --analyze option now.
Change-Id: Idbefe048eaa80e8c5bdb2244cb30c26ba7c71ef5
Reviewed-by: Nikolai Kosjar <[email protected]>
Diffstat (limited to 'plugins/clangstaticanalyzer/clangstaticanalyzerrunner.cpp')
-rw-r--r-- | plugins/clangstaticanalyzer/clangstaticanalyzerrunner.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/plugins/clangstaticanalyzer/clangstaticanalyzerrunner.cpp b/plugins/clangstaticanalyzer/clangstaticanalyzerrunner.cpp index 5c469a07a22..d2cc637cc24 100644 --- a/plugins/clangstaticanalyzer/clangstaticanalyzerrunner.cpp +++ b/plugins/clangstaticanalyzer/clangstaticanalyzerrunner.cpp @@ -50,7 +50,7 @@ static QStringList constructCommandLineArguments(const QString &filePath, << logFile ; arguments += options; - arguments << filePath; + arguments << QDir::toNativeSeparators(filePath); return arguments; } @@ -73,6 +73,7 @@ ClangStaticAnalyzerRunner::ClangStaticAnalyzerRunner(const QString &clangExecuta QTC_CHECK(!m_clangLogFileDir.isEmpty()); m_process.setProcessChannelMode(QProcess::MergedChannels); + m_process.setWorkingDirectory(m_clangLogFileDir); // Current clang-cl puts log file into working dir. connect(&m_process, &QProcess::started, this, &ClangStaticAnalyzerRunner::onProcessStarted); connect(&m_process, static_cast<void (QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished), @@ -122,7 +123,7 @@ void ClangStaticAnalyzerRunner::onProcessFinished(int exitCode, QProcess::ExitSt { if (exitStatus == QProcess::NormalExit) { if (exitCode == 0) - emit finishedWithSuccess(m_logFile); + emit finishedWithSuccess(actualLogFile()); else emit finishedWithFailure(finishedWithBadExitCode(exitCode), processCommandlineAndOutput()); } else { // == QProcess::CrashExit @@ -169,5 +170,15 @@ QString ClangStaticAnalyzerRunner::processCommandlineAndOutput() const QString::fromLocal8Bit(m_processOutput)); } +QString ClangStaticAnalyzerRunner::actualLogFile() const +{ + if (QFileInfo(m_logFile).size() == 0) { + // Current clang-cl ignores -o, always putting the log file into the working directory. + return m_clangLogFileDir + QLatin1Char('/') + QFileInfo(m_filePath).completeBaseName() + + QLatin1String(".plist"); + } + return m_logFile; +} + } // namespace Internal } // namespace ClangStaticAnalyzer |