summaryrefslogtreecommitdiff
path: root/src/plugins/clangstaticanalyzer
diff options
context:
space:
mode:
authorDenis Klychkov <kd.snake@gmail.com>2016-11-02 12:21:54 +0300
committerNikolai Kosjar <nikolai.kosjar@qt.io>2016-11-16 09:10:14 +0000
commit36d4d01cd374a21a8b7c229b261c5f1a23d1184e (patch)
treeebb2fb9b760253b0c315918db8fd4fcf3c29e6bd /src/plugins/clangstaticanalyzer
parent569f4499c038f4186d511d15d2b626d57b57fcd1 (diff)
downloadqt-creator-36d4d01cd374a21a8b7c229b261c5f1a23d1184e.tar.gz
Clang: Take precompiled headers into account when parsing source files
Task-number: QTCREATORBUG-15590 Change-Id: Icbfce4ffd6e9f9802641d35d898fa1dc1c4c18ee Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Diffstat (limited to 'src/plugins/clangstaticanalyzer')
-rw-r--r--src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp b/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp
index 10cb6115ba..2a8a5f58c9 100644
--- a/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp
+++ b/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp
@@ -40,6 +40,7 @@
#include <cpptools/compileroptionsbuilder.h>
#include <cpptools/cppmodelmanager.h>
#include <cpptools/cppprojectfile.h>
+#include <cpptools/cpptoolsreuse.h>
#include <cpptools/projectinfo.h>
#include <projectexplorer/abi.h>
@@ -165,7 +166,8 @@ class ClangStaticAnalyzerOptionsBuilder : public CompilerOptionsBuilder
{
public:
static QStringList build(const CppTools::ProjectPart &projectPart,
- CppTools::ProjectFile::Kind fileKind)
+ CppTools::ProjectFile::Kind fileKind,
+ PchUsage pchUsage)
{
ClangStaticAnalyzerOptionsBuilder optionsBuilder(projectPart);
@@ -184,6 +186,7 @@ public:
optionsBuilder.undefineClangVersionMacrosForMsvc();
optionsBuilder.undefineCppLanguageFeatureMacrosForMsvc2015();
optionsBuilder.addHeaderPathOptions();
+ optionsBuilder.addPrecompiledHeaderOptions(pchUsage);
optionsBuilder.addMsvcCompatibilityVersion();
if (type != ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID)
@@ -243,10 +246,17 @@ private:
QString includeOption() const override
{
if (m_isMsvcToolchain)
- return QLatin1String("/I");
+ return QLatin1String("/FI");
return CompilerOptionsBuilder::includeOption();
}
+ QString includeDirOption() const override
+ {
+ if (m_isMsvcToolchain)
+ return QLatin1String("/I");
+ return CompilerOptionsBuilder::includeDirOption();
+ }
+
QString defineOption() const override
{
if (m_isMsvcToolchain)
@@ -376,8 +386,9 @@ static AnalyzeUnits unitsToAnalyzeFromProjectParts(const QList<ProjectPart::Ptr>
continue;
QTC_CHECK(file.kind != ProjectFile::Unclassified);
if (ProjectFile::isSource(file.kind)) {
+ const CompilerOptionsBuilder::PchUsage pchUsage = CppTools::getPchUsage();
const QStringList arguments
- = ClangStaticAnalyzerOptionsBuilder::build(*projectPart.data(), file.kind);
+ = ClangStaticAnalyzerOptionsBuilder::build(*projectPart.data(), file.kind, pchUsage);
unitsToAnalyze << AnalyzeUnit(file.path, arguments);
}
}