summaryrefslogtreecommitdiff
path: root/src/libs/clangsupport/refactoringdatabaseinitializer.h
Commit message (Collapse)AuthorAgeFilesLines
* Remove ClangRefactoring and ClangPchManagerEike Ziller2021-06-151-240/+0
| | | | | | | | | | | | This removes the plugins and tools, and removes all the tests that would fail to build because of that. Fixes: QTCREATORBUG-25659 Change-Id: I8adb5d503fc8eea313bcaada421f309dbbfa8c26 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: Christian Stenger <christian.stenger@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Marco Bubke <marco.bubke@qt.io>
* Sqlite: Improve constraint supportMarco Bubke2020-05-141-9/+7
| | | | | | | | Now you can add more than one constraint. And we added some new constraints too. Change-Id: I849d2d2ef6e44c897a65ff2bdfe8d172a345c991 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
* ClangRefactoring: Improve follow symbol and usageMarco Bubke2019-08-271-1/+3
| | | | | Change-Id: Idb42010443e4560489ef067e54d05b4e567598e9 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
* Clang: Watch only PCH sourcesMarco Bubke2019-06-271-2/+2
| | | | | | | | We watched all sources but we do not want to watch the sources of the project part because they are not used to build a PCH. Change-Id: I700cd6077fc54230c9be94d620043cf3f10cf9ea Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
* Clang: Minimize reindexingMarco Bubke2019-04-021-0/+2
| | | | | | | | | | We optimal indexer is only reindexing if the index would be changed. This patch is a step in that direction. We only reindex now if the file or project has changed. It fixes some typos too. Task-number: QTCREATORBUG-21150 Change-Id: I6ea1c13282fbcd70253b9b2939aed37580dbd160 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
* Clang: Improve project part updatingMarco Bubke2019-04-011-3/+31
| | | | | | | | | | | | The project part ids are now already created very early in the database. This removes some checks because we can assume that an id already exists. The project part are now completely persistent, so we can read them from the database and compare them with new generated from a new creator session. This should help to not recreate the same PCH again and again. Task-number: QTCREATORBUG-21151 Change-Id: Iced818ff9f7431eaed3e37978087cc0a43b9afda Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
* Clang: Don't filter source with missing includesMarco Bubke2019-03-061-0/+1
| | | | | | | | We do now tag and save them. So we can reliably track them. Task-number: QTCREATORBUG-22035 Change-Id: I49aaeeb76150b7e2d77b863eeb0aedefc9ab50f4 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
* Clang: Improve dependency buildingMarco Bubke2019-03-061-3/+4
| | | | | | | | | We want to use the cached values in the database because it is faster than to parse the the files again. Task-number: QTCREATORBUG-22035 Change-Id: I7ada7073887b1d89a06332fdb617701cb69ccd68 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
* ClangRefactoring: Adapt project part in the databaseMarco Bubke2019-01-241-1/+4
| | | | | | | | Extend ProjectPartArtefact and use CommandLineBuilder everywhere. Task-number: QTCREATORBUG-21842 Change-Id: Ibc78849bc543512eccec8a558a1c3f57fec33fa2 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
* PchManager: Split pch tasks in project and system pch tasksMarco Bubke2019-01-211-1/+2
| | | | | | | | | | | | | | | | | | | Like you can see in the task numbers this patch is touching many different areas. So I will only touch the main parts. It is using a clang action instead of an extra process which will be enabling the handling of generated files in PCHs. The flags from the project part are now not anymore transformed in a command line but they are saved in the container semantically aware so that they can later be merged. Most of this patch is simply polishing of other patches. Task-number: QTCREATORBUG-21346 Task-number: QTCREATORBUG-21380 Task-number: QTCREATORBUG-21382 Task-number: QTCREATORBUG-21383 Task-number: QTCREATORBUG-21693 Task-number: QTCREATORBUG-21778 Change-Id: I9b0c02d8149b554254e819448fbc61eeaa5b7494 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
* ClangPchManager: Introduce PchTaskQueueMarco Bubke2018-12-101-3/+4
| | | | | | | | With the PchTaskQueue the pipeline is almost complete. Task-number: QTCREATORBUG-21346 Change-Id: I5f05d525db1679eb37dd1d462076c1ed42958099 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
* Merge remote-tracking branch 'origin/4.8'Eike Ziller2018-11-091-1/+2
|\ | | | | | | | | | | | | Conflicts: tests/unit/unittest/unittest.pro Change-Id: I4f0ab05f96ee60900a3a35fad4c7331238367593
| * Clang: Add BuildDependenciesStorageMarco Bubke2018-11-081-1/+2
| | | | | | | | | | | | Task-number: QTCREATORBUG-21378 Change-Id: Ibcb90239d240653b21f12a7b96a7775e5b0b4319 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
* | ClangRefactoring: Initialize sqlite database only onceMarco Bubke2018-09-261-14/+18
|/ | | | | | | | | | Initializing the database is not cheap so it is better to initializing it only once. We simply check if the database file already exists and then skip the initializing step. Task-number: QTCREATORBUG-21174 Change-Id: I151090c5081c009f7913a30517065be2833791d8 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
* Clang: Locator filter for the symbol databaseMarco Bubke2018-04-121-2/+5
| | | | | | | | There are no symbol queries for the locator filters. The signature generation is still not implemented but for simple cases it should work. Change-Id: Ic6b04fbe1e7e057892f194ac139615c47d6ec33f Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
* Clang: Store the symbol kind in the databaseMarco Bubke2018-04-121-0/+2
| | | | | | | It is cleaning up some other stuff too. Change-Id: I75274356fd35f2ee8c84aedf8839c67506ab2355 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
* Clang: Make more indices uniqueMarco Bubke2018-04-041-4/+4
| | | | | | | | | This is providing more security that there will be no double entries in the database. Instead you will get an exception if you try to corrupt the database. Change-Id: I162dc8ddd270b86afdf12ba4d55686637b2c09ef Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
* Clang: Use PCHs for indexingMarco Bubke2018-03-221-0/+14
| | | | | | | | | | | | As generating the AST is quite expensive it would be very useful to cache the not changed include. So we generate PCHs for include outside of a project part. With this change this PCHs are used by the indexer. For that they are save to the symbol database by the PCH manager and when fetched by the symbol indexer. Change-Id: I7a5b07cfb32d72d50dc52d2b108cd41727a7bfc7 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
* Clang: Add isInPrecompiledHeader to the file status tableMarco Bubke2018-02-221-1/+1
| | | | | | | | It will useful to find out if we have to wait for an updated precompiled header. Change-Id: I6a314f278485965571cc6e46982bbd6f5523c581 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
* Clang: Check if the include search path has changedMarco Bubke2018-02-221-0/+1
| | | | | | | | | | If the include search paths and the compiler macros have not changed it is save to assume that we don't need to update the symbol database. This saves us from executing a very expensive task. Later we have to test the modification time of the files too. Change-Id: I6b958075024a811c2abd3d7918263fd74bba090b Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
* Clang: Introduce CompilerMacroMarco Bubke2018-02-151-1/+1
| | | | | | | | We want not only the name but the value of the macro too. So we can compare if anything has changed. Change-Id: Ie59caf8cbf54d108f9e15299d25306a406b5c40d Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
* Clang: Rename FileInformation in FileStatusMarco Bubke2018-02-081-3/+3
| | | | | | | It's more near to the Unix convention and it has a plural too. Change-Id: I53f85911d8fcbaadba9947c70e9a375dc6995ed5 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
* Clang: Fix index for project part sourcesMarco Bubke2018-02-011-1/+1
| | | | | | | | The index has to be unique so that the inserting will be fail. We have to add integration tests if everything is finished. Change-Id: I4e20b90f1865d548572d2e634ac934f81da957c2 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
* Clang: Add source dependencies tableMarco Bubke2018-02-011-0/+12
| | | | | | | We want to track which source is dependent on which source. Change-Id: I4b3c14be540974d69cc5026a5d081be1baceb133 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
* Clang: Add file informations tableMarco Bubke2018-02-011-0/+13
| | | | | | | | | We could add this properties to the sources table but then we have to handle null values which makes the SQL statements much more complicated and most probably slower too. Change-Id: Ie2a1e4862b0517825292213567725d6c18abfb30 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
* Clang: Add macro names the to project partMarco Bubke2018-02-011-0/+1
| | | | | | | So we can compare later if the macro names have changed. Change-Id: I65c5f76e07fced8df6cc7282c03430adffcf5fa8 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
* Clang: Rename defineName in macroNameMarco Bubke2018-02-011-7/+7
| | | | | Change-Id: Iaf8da991032e5ed4726384c051290a77887351fa Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
* Clang: Store UsedDefines in the symbol databaseMarco Bubke2018-02-011-1/+1
| | | | | | | | | | | We write the new defines in a temporary table and then write every new entry in the usedDefines table, followed by remove of every entry in usedDefines which are not in the temporary table but have a file entry in common with one of the entries in the temporary table. At last we clean up the temporary table. Change-Id: Idf11ce8d17ad9ccef490578059fac08409fcc5d9 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
* Clang: Add usedDefines tableMarco Bubke2018-02-011-0/+15
| | | | | Change-Id: Icbffb8a0450cfdff5d4958b5cc890114aeb0d794 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
* Clang: Fix typoMarco Bubke2018-02-011-2/+2
| | | | | Change-Id: I525459bd9e28b34912960bc43eca1b776da98344 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
* Clang: On the road to update and preprocessor supportMarco Bubke2018-01-291-3/+17
| | | | | | | | | | | | | | | | | This patch has grown in a quite big change set and it is really hard to divide it in different parts. V2::ProjectPartContainer is now using FileIds instead of file paths. This cleans code up because it is a big step in the direction that internally only file ids are used. But it is depending on the file cache, so the file cache has to be provided as an argument. There is now an interface for transactions too which are ease the testing of them and enables the support of preprocessor. It adds macros as symbols and is saving used macros. The used macro support is enabling update improvements because only if a changed macro is used it needs to be recompiled. This is still in flux and can be changed in later patches. Change-Id: I492a2c9af1201d40fdd9f46a0045f7878bbbaa3d Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
* Clang: Add project parts tableMarco Bubke2018-01-161-0/+14
| | | | | Change-Id: Id2525b6664c6dc0e9d19f8d58cd26b515ae5640c Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
* Clang: Add file cacheMarco Bubke2017-10-051-4/+20
| | | | | | | | | | | The database is using file path integer ids to handle file paths because otherwise we would save many redundant data. This patch is improving it further with the introduction of a database based file path cache. The entries are now divided in a directory path and file name. This is quite handy for directory based file watching. Change-Id: I03f2e388e43f3d521d6bf8e39dfb95eb2309dc73 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
* Clang: Add RefactoringDatabaseInitializerMarco Bubke2017-09-201-0/+93
We moved the creation of the tables and indices to an extra class which can be called from other places. So you can be sure that a database is initialized. Change-Id: Ief5b30ced7b9011ca94367aa2578098423dcecd9 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>