summaryrefslogtreecommitdiff
path: root/src/plugins/autotest/testcodeparser.cpp
Commit message (Collapse)AuthorAgeFilesLines
* AutoTest: Output time taken when parsing testsMarcus Tillmanns2023-05-121-0/+2
| | | | | | | | Makes debugging easier as you don't have to calculate end - start yourself. Change-Id: Ib75a36bbf52633e188a6c4bbd488eb439cb52984 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* Utils: Rename asynctask.{cpp,h} -> async.{cpp,h}Jarek Kobus2023-05-031-1/+1
| | | | | | | Follows AsyncTask -> Async rename. Change-Id: I37f18368ab826c9960a24087b52f6691bb33f225 Reviewed-by: hjk <hjk@qt.io>
* Tasking::Async: Rename Async into AsyncTaskJarek Kobus2023-05-031-3/+3
| | | | | | | | | Rename Utils::AsyncTask into Utils::Async. Rename AsyncTaskBase into AsyncTask. Task-number: QTCREATORBUG-29102 Change-Id: I3aa24d84138c19922d4f61b1c9cf15bc8989f60e Reviewed-by: hjk <hjk@qt.io>
* FutureSynchronizer: Change the default value of cancelOnWait to trueJarek Kobus2023-04-261-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The "false" default wasn't really useful. This changes the default value to the following usages: 1. AndroidDeployQtStep Introduced in 91f136ef3ab75471cabcaed9dc16dad9f504add8 The synchronizer was used to cancel the running tasks inside the doCancel(), so the similar behavior should be expected when destructing the AndroidDeployQtStep. 2. GitClient Introduced in f3106ebafe9a02904e822e9698c8b4cbb6c7e0f5 Is used only inside the last line of GitSubmitEditor::updateFileModel(). The running function (CommitDataFetchResult::fetch) doesn't take QPromise<>, so it can't detect if the future was canceled or not. In this case this change is no-op. 3. ExtraCompiler Introduced in c99ce1f455189864de9a2043730f704d7b024abf The intention was to make it cancellable and finish early on cancel. 4. PluginManager global future synchronizer Introduced in 72bddf9f51fedd064f551bcb4ced5feeb46fdfc1 The intention was to make it cancellable and finish early on cancel. The relevant places in code are marked explicitly for points: 1, 2 and 3. Change-Id: I1a52deb8d1f81d355950c8772bbaa6d0a202fd7e Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* AutoTest: Optimize starting task tree in TestCodeParser::scanForTests()Jarek Kobus2023-04-251-5/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When loading a Qt project, after the Scanning For Tests finished, the scanForTests() blocks the main thread for about 2.5 seconds on the call to m_taskTree->start(). The reason is that created task tree contains about 8000 asynchronous tasks. If all they run in parallel it means that we start them all synchronously. Don't use internal QThreadPool, as it doesn't prevent the freeze when more than maxTreadCount() threads are started. Instead, use the parallel limit with the same constraint that was used for thread pool. It means that only constrained number of tasks are being run in parallel and the rest is being postponed until some of the running tasks finished. In this way starting the constrained number of tasks reduces the GUI freeze to ~0 ms on task tree start(). In general: this patch divides the overall freeze of 2.5 seconds evenly into many very small pieces and distributes them evenly in time, so the GUI stays responsive. This patch, when applied together with 2 bottom patches, reduces the GUI freeze spent inside scanForTests() after loading a Qt project and after Scanning For Tests finished from about 23 seconds into 160 ms. Change-Id: If33076d4f042c3d96434b9f3cc305776fb30906d Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* AutoTest: Further optimize TestCodeParser::scanForTests()Jarek Kobus2023-04-251-30/+29
| | | | | | | | | | | | | | | When loading a Qt project, after the Scanning For Tests finished, the scanForTests() blocks the main thread for about 3.5 seconds on the calls to parser->init(). Refactor the code so that it operates on QSet<FilePath> instead of QList<FilePaths>. This patch constraints the freeze to about 40 ms. Change-Id: I219b3e2abf2b7e5166eec08d83f4cdcb8e4a8098 Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* AutoTest: Only handle document updates if necessaryChristian Stenger2023-04-251-2/+13
| | | | | | | | | Do not send qml document updated unnecessarily in case we know that nothing had changed at all. Change-Id: I1d6b94dcd68753e0f451a2812a752ff92f4860af Reviewed-by: David Schulz <david.schulz@qt.io> Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
* AutoTest: Optimize TestCodeParser::scanForTestsJarek Kobus2023-04-241-9/+5
| | | | | | | | | | | | | | | | | | | | In case of loading a Creator project, after the Scanning For Tests finished, the scanForTests() called by TestCodeParser::onFinished() freezed the main thread for about 1 second. In this case requestRemoval() signal was emitted nearly 1000 times. Optimize the internals: 1. Don't emit requestRemoval() for every single file but emit it just once passing a QSet<FilePath> instead. 2. Adapt some other callees and callers to work on QSet<FilePath> instead on a single FilePath. This change constraints the freeze to about 2 ms. Change-Id: If23b85b495c125d82eb3c8b5a6912349df122745 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* TestCodeParser: Apply priority to thead poolJarek Kobus2023-03-101-1/+1
| | | | | | | | Rather to async task. Change-Id: I253de9f04e655e394027d15273a86049f5b61f5b Reviewed-by: Christian Stenger <christian.stenger@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* ProjectExplorer: Move some not-fully-session related bitshjk2023-03-011-7/+7
| | | | | | | | | | | | | | | ... out of SessionManager. The idea is to later move SessionManager into the Core plugin, which both is sensible conceptually and also prerequisite to merge the Bookmark plugin into TextEditor plugin. Currently, only the interface is split, as the load/save implemetations are non-mechanical to disentangle. Change-Id: I31631db3094ea192825a2ccaa6add6188662940b Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
* Autotest: Use QPromise for async callsJarek Kobus2023-02-271-4/+4
| | | | | | | Change-Id: I57d2feed36eeb1871b2b00cf7720c48f6a0e81b5 Reviewed-by: Christian Stenger <christian.stenger@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
* TestCodeParser: Reuse TaskTreeJarek Kobus2023-02-061-44/+47
| | | | | | Change-Id: Idf42f2c732151d32d70db9d2344bb18664119857 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* AutoTest: Use using namespace Utils more oftenJarek Kobus2023-01-271-21/+21
| | | | | | | Change-Id: I9d20cd3496c4719d58a977f8fd53253c86d55463 Reviewed-by: Christian Stenger <christian.stenger@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
* AutoTest: Reduce parsing attemptsChristian Stenger2023-01-231-5/+13
| | | | | | | | | | | 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 <david.schulz@qt.io> Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
* AutoTest: Only scan necessary files for testsMarcus Tillmanns2023-01-231-4/+25
| | | | | Change-Id: Idafd064694a7dfdd0fbca66bca1b9f848acb9b3f Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* Autotest: Add ITestParser::supportedExtensionsMarcus Tillmanns2023-01-231-2/+2
| | | | | Change-Id: I3bb0f9b2a989cc4c9b4f6ae95d36308bc192158d Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* Remove GPL-3.0+ from license identifiersKai Köhne2023-01-061-1/+1
| | | | | | | | | | | | | | | Since we also license under GPL-3.0 WITH Qt-GPL-exception-1.0, this applies only to a hypothetical newer version of GPL, that doesn't exist yet. If such a version emerges, we can still decide to relicense... While at it, replace (deprecated) GPL-3.0 with more explicit GPL-3.0-only Change was done by running find . -type f -exec perl -pi -e "s/LicenseRef-Qt-Commercial OR GPL-3.0\+ OR GPL-3.0 WITH Qt-GPL-exception-1.0/LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0/g" {} \; Change-Id: I5097e6ce8d10233993ee30d7e25120e2659eb10b Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* AutoTest: Pass context object to lambda connectionsJarek Kobus2022-12-081-3/+3
| | | | | | | | | Remove some unneeded lambda () brackets. Glue lambda brackets with parameters brackets. Change-Id: I414f7dbbaf60b452cb71f77d53d972937f121a47 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* CPlusPlus: Proliferate FilePath usehjk2022-11-221-1/+1
| | | | | | | | | | | | | | | | | | | The starts with CppDocument::filePath(), plus a bit of the fallout This is one patch of potentially many. It is hard to draw the line where to stop this kind of chunk, this here converts a few additional functions for which including it in the patch looked like less churn than without. Converting is mostly fromString/toString, with a few exceptions for "already seem" like caches, that use cheaper "path()" to avoid likely performance regressions (on Windows FilePath comparison is currently case-insenstive, and more expensive). There should be no difference for local operation with this patch. Change-Id: I7b35f98a0a6f0bfed4ea0f8f987faf586f7a8f2b Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Merge remote-tracking branch 'origin/9.0'Eike Ziller2022-11-031-0/+4
|\ | | | | | | | | | | | | | | | | | | Conflicts: cmake/QtCreatorIDEBranding.cmake qbs/modules/qtc/qtc.qbs qtcreator_ide_branding.pri src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp Change-Id: I154a9ababa9e166cb06e98652d481fe6234f6399
| * Autotest: Don't parse tests without filesMarcus Tillmanns2022-10-261-0/+4
| | | | | | | | | | | | | | | | | | | | | | Previously the "Scan for tests" dialog would pop up momentarily during project loading, even though no files were loaded yet. Partial fix for: QTCREATORBUG-27785 Change-Id: I4087ba23d00a628465dd1532a725d9bcc37dec30 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* | Utils: Add sorted() functionChristian Kandeler2022-10-251-2/+2
|/ | | | | | | | | For simpler calling code. Change-Id: Ia0a16a28770fd172f74d06a626148248bf5d3c0c Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Christian Stenger <christian.stenger@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
* Port from qAsConst() to std::as_const()Marc Mutz2022-10-071-3/+3
| | | | | | | | | | | | | | We've been requiring C++17 since Qt 6.0, and our qAsConst use finally starts to bother us (QTBUG-99313), so time to port away from it now. Since qAsConst has exactly the same semantics as std::as_const (down to rvalue treatment, constexpr'ness and noexcept'ness), there's really nothing more to it than a global search-and-replace. Task-number: QTBUG-99313 Change-Id: I88edd91395849574436299b8badda21bb93bea39 Reviewed-by: hjk <hjk@qt.io>
* Use SPDX license identifiersLucie Gérard2022-08-261-24/+2
| | | | | | | | | Replace the current license disclaimer in files by a SPDX-License-Identifier. Task-number: QTBUG-67283 Change-Id: I708fd1f9f2b73d60f57cc3568646929117825813 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* Autotest: Convert to Tr::trhjk2022-08-011-3/+2
| | | | | | Change-Id: Ifd4b6ace78d02804ec3b3c1d60c5418081cad6c4 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* qmljs: (QString -> Utils::FilePath)++Fawzi Mohamed2022-07-131-2/+2
| | | | | | | | | convert more QString containing paths to Utils::FilePath Change-Id: I1219d7d147993e48cfa641dc9bea72ab38c90f51 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
* Merge CppTools into CppEditorChristian Kandeler2021-09-011-4/+4
| | | | | | | | | | | | | | | | There was no proper separation of responsibilities between these plugins. In particular, CppTools had lots of editor-related functionality, so it's not clear why it was separated out in the first place. In fact, for a lot of code, it seemed quite arbitrary where it was put (just one example: switchHeaderSource() was in CppTools, wheras switchDeclarationDefinition() was in CppEditor). Merging the plugins will enable us to get rid of various convoluted pseudo-abstractions that were only introduced to keep up the artificial separation. Change-Id: Iafc3bce625b4794f6d4aa03df6cddc7f2d26716a Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* Replace two bool flags with one enumJarek Kobus2021-07-021-24/+23
| | | | | | | | | Since it's not allowed to have both m_fullUpdatePostponed and m_partialUpdatePostponed set to true, replace these two flags with one UpdateType enum. Change-Id: Ia4193dafd234f817d34204709d14f345c0a3b962 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* Simplify the assert conditionJarek Kobus2021-07-011-3/+3
| | | | | Change-Id: I59d6fe1bcfeabc33b24efc68c6e691d4e549faf7 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* AutoTest: Use Utils::FilePath for files and directoriesChristian Stenger2021-05-271-17/+17
| | | | | | | | Still some missing bits as some QString members had different meanings depending on their context. Change-Id: Ib48eab54498974a26bbd5123cbffeefee5f7e79c Reviewed-by: hjk <hjk@qt.io>
* AutoTest: Prefer ITestParser to ITestFramework in TestCodeParserBernhard Beschow2021-02-081-26/+19
| | | | | | | Preserves the level of abstraction. Change-Id: I01354fc8fcdf846dd2ef2a20fce12f6e9c4756b2 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* AutoTest: Turn global variable into attributeBernhard Beschow2021-01-061-10/+6
| | | | | | Change-Id: Id45bafa61f03e8225d5f4224611e2f6db84a16b1 Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* Don't access static functions/fields via instanceAlessandro Portale2020-11-271-4/+4
| | | | | | | | | | | | Courtesy of readability-static-accessed-through-instance Amends: b2a766a79ac778febff87f0def34cf6d3f4f93e3 Round #2: This time done with Qt Creator's Analyzer, which found other occurences than run-clang-tidy.py Change-Id: I479e280c7abcf2d24baccbb0af69ae4bda05198e Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
* AutoTest: Introduce ITestToolChristian Stenger2020-11-161-6/+10
| | | | | | | | | Preparation for separating handling of code based and build system based tests. Task-number: QTCREATORBUG-23332 Change-Id: I490af5f3157fd4a8cd07d976cdfd9e4503ade97b Reviewed-by: David Schulz <david.schulz@qt.io>
* AutoTest: Clean up header messChristian Stenger2020-11-091-4/+4
| | | | | | | | Better decoupling and reduced binary size. Change-Id: I4f6239979d9d7dae4ad92f19ec8420be38372c07 Reviewed-by: David Schulz <david.schulz@qt.io> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* Core/Utils: Migrate further to Utils::Idhjk2020-07-061-2/+2
| | | | | | | The coreplugin/id.h header is kept for downstream for now. Change-Id: I8c44590f7b988b3770ecdc177c40783e12353e66 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* AutoTest: Restore former check state on reparseChristian Stenger2020-06-181-0/+1
| | | | | | | | | | | | | | | | When reparsing while modifying a file it can happen that the parse failed for some reason or did not provide full information due to syntax errors the code model cannot cope with. This in turn can purge items from the test tree. Re-adding the items in a later reparse had just added the item and did not take care of (former) check states. Add simple caching mechanism to keep track of check states and use them if available. Task-number: QTCREATORBUG-24099 Change-Id: I3ca04f5fd58810df71582972e6fe96a00cfc48f1 Reviewed-by: David Schulz <david.schulz@qt.io>
* AutoTest: Move TestCodeParser and TestTreeModel ownership to plugin pimplhjk2020-03-201-7/+4
| | | | | Change-Id: I01b32aae894a4b419c8a067f604d5f04a2b14dfe Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* AutoTest: Use ITestFramework * instead of its id in some caseshjk2020-03-161-28/+20
| | | | | Change-Id: Ic327e31185247b6479c78af8bf8156f44bb4bdfb Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* AutoTest: Reparse only newly added frameworksChristian Stenger2019-09-181-1/+0
| | | | | | | | | | Instead of re-parsing all test frameworks trigger a reparse just for the newly added as results for the other should not have changed. Change-Id: I6eb53da04bb927a884d6431e137bfe68f391f2ad Reviewed-by: David Schulz <david.schulz@qt.io> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* AutoTest: Remove leftover code and messageChristian Stenger2019-09-171-11/+1
| | | | | | | | This kind of filtering has been removed long ago and therefore it should be impossible to get triggered. Change-Id: Ic9ea02b5446edaadda4d7f21846b37a2f8178505 Reviewed-by: David Schulz <david.schulz@qt.io>
* AutoTest: Allow re-parsing with a sub-set of parsersChristian Stenger2019-09-171-32/+40
| | | | | | | | | | Avoid expanding parsing over all parsers if we trigger a re-parse for a different parser and there is already a re-parse postponed. Change-Id: If74480fea2c671b32083fb7cf3f4dc4c418e6e33 Reviewed-by: Christian Stenger <christian.stenger@qt.io> Reviewed-by: David Schulz <david.schulz@qt.io>
* AutoTest: Re-order responsibilitiesChristian Stenger2019-09-061-0/+1
| | | | | | | | | Keep the timer for syncing frameworks where it is really used, do not create functions that are not necessary at all. Change-Id: Ie0a49a2611dc67510b72562455ea2a1af7b1c538 Reviewed-by: David Schulz <david.schulz@qt.io>
* AutoTest: Unify container usage in TestFrameworkManagerChristian Stenger2019-08-221-1/+1
| | | | | | | | And provide an accessor for the framework's priority which will be needed later on. Change-Id: I5a2480699d9467ee50e2cc44b9d4ff58f9e8da88 Reviewed-by: David Schulz <david.schulz@qt.io>
* Autotest: Avoid a deprecation warninghjk2019-07-051-1/+1
| | | | | Change-Id: I547f57957098d2e7674928a1055708e49afc04b6 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* Avoid more deprecation warningshjk2019-07-051-2/+2
| | | | | Change-Id: Icc7bb7a4ccf7fc9f89f6f668c194ccd440e5231c Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* Utils: Rename FileName to FilePathhjk2019-05-281-2/+2
| | | | | | | | More in line with QFileInfo terminonlogy which appears to be best-of-breed within Qt. Change-Id: I1d051ff1c8363ebd4ee56376451df45216c4c9ab Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* AutoTest: Remove scan filter capabilityChristian Stenger2019-03-181-23/+0
| | | | | | | | | | | | The scan filter capability had been added to avoid long scans in bigger projects. Nowadays the scans are done multi-threaded and the filtering is probably barely used. Change-Id: I7d99f5a57bb10deb3d79510db0c7a06bd771c271 Reviewed-by: André Hartmann <aha_1980@gmx.de> Reviewed-by: David Schulz <david.schulz@qt.io> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
* Remove hard-coded disabling of debug logsOrgad Shaneh2018-10-131-1/+1
| | | | | | | | | | | Instead, set the default level of all logs to QtWarningMsg. The call to setFilterRules overrides the user preferences in qtlogging.ini. Change-Id: Id5f6cd550d14ff7f45ae04c5d3110e0bafb0f072 Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: Kai Koehne <kai.koehne@qt.io> Reviewed-by: hjk <hjk@qt.io>
* Utils: Purge qtcfallthrough.hOrgad Shaneh2018-04-091-1/+0
| | | | | | | No longer needed. Change-Id: I9b0bee014df89d4c567f1d2431b5ff9404f5f925 Reviewed-by: hjk <hjk@qt.io>