ClangCodeModel: Minimize QStringList -> QJsonArray conversions

... when setting up the compilation database.
As it turns out, these conversions were the most expensive part of
creating the JSON file. We now build the JSON arrays incrementally
instead of setting them up from scratch for every source file.

Change-Id: I1e664a6320d5b3c49b31366c58aa14f63818e008
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
Christian Kandeler
2022-05-05 17:34:31 +02:00
parent 3ce7ca7242
commit 3d1ba205d0
3 changed files with 71 additions and 26 deletions

View File

@@ -63,9 +63,15 @@ const QStringList optionsForProject(ProjectExplorer::Project *project,
CppEditor::CompilerOptionsBuilder clangOptionsBuilder(
const CppEditor::ProjectPart &projectPart,
const CppEditor::ClangDiagnosticConfig &warningsConfig);
QStringList clangOptionsForFile(CppEditor::CompilerOptionsBuilder optionsBuilder,
const CppEditor::ProjectFile &file,
const QStringList &projectOptions, CppEditor::UsePrecompiledHeaders usePch);
QJsonArray projectPartOptions(const CppEditor::CompilerOptionsBuilder &optionsBuilder);
QJsonArray fullProjectPartOptions(const CppEditor::CompilerOptionsBuilder &optionsBuilder,
const QStringList &projectOptions);
QJsonArray fullProjectPartOptions(const QJsonArray &projectPartOptions,
const QJsonArray &projectOptions);
QJsonArray clangOptionsForFile(const CppEditor::ProjectFile &file,
const CppEditor::ProjectPart &projectPart,
const QJsonArray &generalOptions,
CppEditor::UsePrecompiledHeaders usePch);
CppEditor::ProjectPart::ConstPtr projectPartForFile(const QString &filePath);
CppEditor::ProjectPart::ConstPtr projectPartForFileBasedOnProcessor(const QString &filePath);