From a7f0c8e81b7e73686034cfc2f337a5e2bb9e9f2e Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Thu, 19 Jan 2023 22:11:36 +0100 Subject: AutoTest: Reduce parsing attempts Do not check for code model parsing only, but take project parsing as well into account. Explicitly ignore more qml code model related files supposed to hold no functional code. Change-Id: I2dc8a6331ea508cbb287ea5000f5abe302069060 Reviewed-by: David Schulz Reviewed-by: Marcus Tillmanns --- src/plugins/autotest/testcodeparser.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'src/plugins/autotest/testcodeparser.cpp') diff --git a/src/plugins/autotest/testcodeparser.cpp b/src/plugins/autotest/testcodeparser.cpp index b28eca38f4..c5dbcd6d51 100644 --- a/src/plugins/autotest/testcodeparser.cpp +++ b/src/plugins/autotest/testcodeparser.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -32,6 +33,12 @@ Q_LOGGING_CATEGORY(LOG, "qtc.autotest.testcodeparser", QtWarningMsg) using namespace ProjectExplorer; +static bool isProjectParsing() +{ + const BuildSystem *bs = SessionManager::startupBuildSystem(); + return bs && bs->isParsing(); +} + TestCodeParser::TestCodeParser() : m_threadPool(new QThreadPool(this)) { @@ -61,7 +68,7 @@ void TestCodeParser::setState(State state) return; qCDebug(LOG) << "setState(" << state << "), currentState:" << m_parserState; // avoid triggering parse before code model parsing has finished, but mark as dirty - if (m_codeModelParsing) { + if (isProjectParsing() || m_codeModelParsing) { m_dirty = true; qCDebug(LOG) << "Not setting new state - code model parsing is running, just marking dirty"; return; @@ -118,7 +125,7 @@ void TestCodeParser::emitUpdateTestTree(ITestParser *parser) void TestCodeParser::updateTestTree(const QSet &parsers) { m_singleShotScheduled = false; - if (m_codeModelParsing) { + if (isProjectParsing() || m_codeModelParsing) { m_postponedUpdateType = UpdateType::FullUpdate; m_postponedFiles.clear(); if (parsers.isEmpty()) { @@ -146,7 +153,7 @@ void TestCodeParser::updateTestTree(const QSet &parsers) void TestCodeParser::onDocumentUpdated(const Utils::FilePath &fileName, bool isQmlFile) { - if (m_codeModelParsing || m_postponedUpdateType == UpdateType::FullUpdate) + if (isProjectParsing() || m_codeModelParsing || m_postponedUpdateType == UpdateType::FullUpdate) return; Project *project = SessionManager::startupProject(); @@ -166,8 +173,9 @@ void TestCodeParser::onCppDocumentUpdated(const CPlusPlus::Document::Ptr &docume void TestCodeParser::onQmlDocumentUpdated(const QmlJS::Document::Ptr &document) { + static const QStringList ignoredSuffixes{ "qbs", "ui.qml" }; const Utils::FilePath fileName = document->fileName(); - if (!fileName.endsWith(".qbs")) + if (!ignoredSuffixes.contains(fileName.suffix())) onDocumentUpdated(fileName, true); } @@ -186,7 +194,7 @@ void TestCodeParser::onProjectPartsUpdated(Project *project) { if (project != SessionManager::startupProject()) return; - if (m_codeModelParsing) + if (isProjectParsing() || m_codeModelParsing) m_postponedUpdateType = UpdateType::FullUpdate; else emitUpdateTestTree(); -- cgit v1.2.1