Clang: Allow to forward warnings flags from build system

Change-Id: I47ebb1ce4f3b5544408eb1d0f891ed5090394282
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This commit is contained in:
Nikolai Kosjar
2019-01-31 10:16:28 +01:00
parent 69565d6c88
commit b9d3055e72
13 changed files with 132 additions and 32 deletions

View File

@@ -452,6 +452,10 @@ public:
const QStringList &options() const { return m_options; }
const Core::Id &diagnosticConfigId() const { return m_diagnosticConfigId; }
CppTools::UseBuildSystemWarnings useBuildSystemWarnings() const
{
return m_useBuildSystemWarnings;
}
private:
void addLanguageOptions()
@@ -491,6 +495,9 @@ private:
void addDiagnosticOptionsForConfig(const CppTools::ClangDiagnosticConfig &diagnosticConfig)
{
m_diagnosticConfigId = diagnosticConfig.id();
m_useBuildSystemWarnings = diagnosticConfig.useBuildSystemWarnings()
? CppTools::UseBuildSystemWarnings::Yes
: CppTools::UseBuildSystemWarnings::No;
m_options.append(diagnosticConfig.clangOptions());
addClangTidyOptions(diagnosticConfig);
@@ -565,6 +572,7 @@ private:
const CppTools::ProjectPart &m_projectPart;
Core::Id m_diagnosticConfigId;
CppTools::UseBuildSystemWarnings m_useBuildSystemWarnings = CppTools::UseBuildSystemWarnings::No;
CppTools::CompilerOptionsBuilder m_builder;
QStringList m_options;
};
@@ -586,13 +594,13 @@ void ClangEditorDocumentProcessor::updateBackendDocument(CppTools::ProjectPart &
return;
}
const QStringList projectPartOptions = ClangCodeModel::Utils::createClangOptions(
projectPart,
CppTools::ProjectFile::Unsupported); // No language option as FileOptionsBuilder adds it.
const FileOptionsBuilder fileOptions(filePath(), projectPart);
m_diagnosticConfigId = fileOptions.diagnosticConfigId();
const QStringList projectPartOptions = ClangCodeModel::Utils::createClangOptions(
projectPart, fileOptions.useBuildSystemWarnings(),
CppTools::ProjectFile::Unsupported); // No language option as FileOptionsBuilder adds it.
const QStringList compilationArguments = projectPartOptions + fileOptions.options();
m_communicator.documentsOpened(

View File

@@ -66,11 +66,13 @@ namespace Utils {
class LibClangOptionsBuilder final : public CompilerOptionsBuilder
{
public:
LibClangOptionsBuilder(const ProjectPart &projectPart)
LibClangOptionsBuilder(const ProjectPart &projectPart,
UseBuildSystemWarnings useBuildSystemWarnings)
: CompilerOptionsBuilder(projectPart,
UseSystemHeader::No,
UseTweakedHeaderPaths::Yes,
UseLanguageDefines::No,
useBuildSystemWarnings,
QString(CLANG_VERSION),
QString(CLANG_RESOURCE_DIR))
{
@@ -101,9 +103,12 @@ private:
}
};
QStringList createClangOptions(const ProjectPart &projectPart, ProjectFile::Kind fileKind)
QStringList createClangOptions(const ProjectPart &projectPart,
UseBuildSystemWarnings useBuildSystemWarnings,
ProjectFile::Kind fileKind)
{
return LibClangOptionsBuilder(projectPart).build(fileKind, UsePrecompiledHeaders::No);
return LibClangOptionsBuilder(projectPart, useBuildSystemWarnings)
.build(fileKind, UsePrecompiledHeaders::No);
}
ProjectPart::Ptr projectPartForFile(const QString &filePath)

View File

@@ -28,6 +28,7 @@
#include <cplusplus/Icons.h>
#include <cpptools/projectpart.h>
#include <cpptools/compileroptionsbuilder.h>
#include <QTextCursor>
@@ -53,6 +54,7 @@ CppTools::CppEditorDocumentHandle *cppDocument(const QString &filePath);
void setLastSentDocumentRevision(const QString &filePath, uint revision);
QStringList createClangOptions(const CppTools::ProjectPart &projectPart,
CppTools::UseBuildSystemWarnings useBuildSystemWarnings,
CppTools::ProjectFile::Kind fileKind);
CppTools::ProjectPart::Ptr projectPartForFile(const QString &filePath);