Commit Graph
83 Commits
Author SHA1 Message Date
Eberhard Graether 27bf5108ab data: fixed file clearing to clear only elements with no more source_locations 2015-10-12 11:42:19 +02:00
Eberhard Graether 0fba3f5cf9 logic: random fixes and improvements
* added new logos to setup ui
* changed wording in status messages and bundle nodes
* removed ununsed Vector.h
* save NameHierarchy to SearchMatch
* fixed NameHierarchyElement retrieval for name elements without parent
* fixed match weight to score last letters higher
2015-10-06 16:21:03 +02:00
Eberhard Graether 2704d47cd8 logic: multiple fixes and improvements
* showing project name in main window title
* keep reference count visible when maximizing code file
* show first node in db when no main function is available
* log Storage stats after parse
* fixed macro locations saved multiply
* using NameHierarchy when retrieving ids
2015-10-01 19:03:05 +02:00
Eberhard Graether eeed22f478 build: updated to new clang and other fixes
* don't save macros from external files
* fixed macro and include saving duplicates
* added NODE_UNDEFINED_MACRO

TIL = You need to cut a 1kg cake about 85 times in half until you have a piece with only a single atom.
2015-09-29 14:22:52 +02:00
Andreas Stallinger e3696df5e1 data: Macro handling
Macros have now edges from Files where they are usesd
2015-09-28 15:25:52 +02:00
malte_langkabel 27ed5a0635 data: handling nested type names
* Implemented recursive handling of nested names in CxxTypeNameResolver. For example used when resolving names of dependent template parameters.
2015-09-26 19:18:07 +02:00
Eberhard Graether 5c06dedf7c data: Fixed inheritance parsing for tests 2015-09-24 10:30:25 +02:00
Eberhard Graether c18bd6a8bc data: fixes for parsing and logging
* readded Storage logs
* turned type name resolver error logs to info logs
* fixed inheritance not parsed in forward declarations
* check file node id before saving source location
* show errors in unparsed files again
2015-09-24 02:39:10 +02:00
Eberhard Graether 78c1b32797 data: increased parse and graph assembly performance
* removed header search in subdirectories of header search paths
* cache file node ids in Storage for faster lookup
* retrieve node names from SearchIndex
* fixed addNodeAndAllChildren also called for member edges
* added check if node already present in addEdgeAndAllChildren
2015-09-23 09:26:03 +02:00
Eberhard Graether a596c58b02 data: Fixed performance drop in file path search 2015-09-17 13:53:28 +02:00
malte_langkabel 3d94b78b8c data: refreshing with DB
* database stores modification time of files.
* FileManager updates internal state based on database info.
* reimplemented FileManager's check if a file is in project.
* implemented clearing data of updated or removed files before reparsing the updated and added files.
2015-09-16 18:53:33 +02:00
Andreas Stallinger 73b1b77ca8 data, utility: Fixes to run Opensource Projects
templateSpecializationArgsAsWritten returning null caused a crash
VisitMemberExprInDeclBody for vardecl was missing
subdirectories for headersearchpaths, that the user does not need to add a hugh amount of folders
2015-09-16 17:08:16 +02:00
malte_langkabel e628241b02 data: database storage
* replaced storage by a new version that utilizes sqlite for persistence.
* added SqliteStorage to manage direct access to the database.
* added testsuit for sqlite.
* slimmed down the protected interface of the storage.
* changed tests in StorageTestSuit to avoid using protected methods of the storage.
* added functions to begin and commit a transaction to the storage.
* removed GraphFilterTestSuite.
* removed GraphFilterConductorTestSuite.
* added Node and Edge constructor that takes id as parameter
* added constructor for TokenComponentNameCached that accepts NameHierarchy as parameter
* added TokenLocation constructor that takes locationId as parameter.
* created respective construction functions in TokenLocatonLine, -File and -Collection.

fortune cookie message = Recognition will come from unexpected sources.
2015-08-25 18:07:02 +02:00
Eberhard Graether 5f25311389 logic: paths in ProjectSettings relative to file not working directory
This change checks all paths in the ProjectSettings file for relativity and makes them relative to the location of the
ProjectSettings file if necessary. The paths are also correctly saved relative to the file.
2015-07-29 22:20:26 +02:00
malte_langkabel 8949470848 data: Fixed splitting of name hierarchy for template Arguments
* fixed bug where types used by templates as arguments have not been split into proper name hierarchy.
2015-05-27 10:35:41 +02:00
Eberhard Graether 1f3be0e60d data: fixes for clearing on refresh
* reduce aggregation count when clearing
* added TokenLocation to method override edge
* added TokenLocations to template related edges
2015-05-18 16:22:39 +02:00
Eberhard Graether 7d48a873f7 data: parse type usages of types used as template arguments
This change ist just an interim solution and does not cover all cases.
The TokenLocation saved for the template argument is the location of the whole expression.
2015-05-05 23:21:43 +02:00
Eberhard Graether 7dcf8b0bdb src: various fixes
* fixed crash when hovering GraphNode while expanding/collapsing it
* fixed clang warnings
* fixed GraphNodeExpandToggle to show empty circle
* fixed Searchbar showing empty block when nothing was parsed
* made template related edges in GraphView red
2015-05-05 23:12:25 +02:00
Eberhard Graether 4ec3dfd372 src: fixed clang warnings 2015-05-04 10:15:55 +02:00
Eberhard Graether 749b1647e4 ui: added loader animation gif to StatusBar
The loader animation can be activated by setting the showLoader flag on MessageStatus.
2015-04-28 20:26:31 +02:00
malte_langkabel a0340d9438 data: name resolving refactored
* Created CxxNameResolver classes that take care of resolving the name hierarchies of clang components.
* NameResolvers store clang::Decls they ignore when traversing the hierarchy of DeclContext nodes. This approach is used to avoid infinite loops when parsing template parameters of a template class that depends on it's template parameters that depend on the template class....

<description>
2015-04-27 10:33:31 +02:00
Eberhard Graether d56a9afe24 data: Only show parse errors in project files 2015-04-24 00:37:40 +02:00
Eberhard Graether 3c7c3da527 logic: made parsing interruptable by introducing TaskScheduler
This change introduces the TaskScheduler, which queues and processes Tasks on a separate thread. The Task class provides
a common interface for deriving all specific tasks. A task can split it's processing into multiple update calls. The
TaskScheduler will update a task until it is finished or interrupt it when necessary. TaskGroups can be used to bundle
multiple Tasks together. So far only TaskGroupSequential was implemented which runs the Tasks in the set order.

TaskParseCxx utilizes the CxxParser to parse each source file in a single update call. Parsing can be interrupted using
the ESC key. The Statusbar shows the parsing progress.
2015-04-23 18:57:38 +02:00
malte_langkabel bdbd266a67 data: NameHierarchy class
* replaced vector of strings as name hierarchy by a new NameHierarchy class.
* Adjusted code in ASTVisitor, Storage and various test cases.
2015-03-28 16:57:30 +01:00
Eberhard Graether be123a33b4 data: fixed parser issues to load whole Coati on Mac 2015-03-24 20:34:55 +01:00
malte_langkabel 3738f196b9 data: fixed crashed when parsing own code
* fixed test that was expecting a wrong result.
* refactored DataType class.
* added code to parse dependent type names.
* refactored utilityCxx a little.
2015-03-23 17:00:54 +01:00
Eberhard Graether 03cf9eeb5f data: Fixes and features for loading Coati into Coati
This change facilitates loading Coati into Coati:
* removed error logs for TokenComponent setting
* fixed edge checks regarding template stuff
* separated CommonSettings to be inherited by Project- and ApplicationSettings for common settings
* pluralized SourcePaths setting in xml to allow for loading multiple directories and single files
* added CompilerFlags section to settings
* passing Compiler arguments to Parser via struct Parser::Arguments
* setting -isystem for all header search paths to avoid distinction between "" and <> headers
* parsing all headers from the SourcePaths, even the ones that are not included
* fixed parsing time measurement and display
* added utility.h file for general utility functionality
2015-03-16 10:07:57 +01:00
malte_langkabel 0e0553c90b test: added missing template parameter tests
* Added tests for parameter parsing of template functions.
* Added missing tests for template parameters and arguments.
* Fixed warning when using the "typename" keyword in combination with template template arguments.
* Added code to handle template template default arguments and implemented test case.
2015-03-11 15:50:07 +01:00
Eberhard Graether ca85d5a5d3 build: bug fixes for release version
* fixed search activating 2 nodes, because of NodeType in query
* fixed search results didn't contain results with same name
* added protected contents to sample and tictactoe code
* fixed CxxParserTests not logging errors, disabled logging for tests with errors
* fixed CxxParserTests not finding system headers, added TestSettings.xml and pass headers to Parser::parseFile()
2015-03-11 13:14:22 +01:00
malte_langkabel 9b3f9ebdbf data: non-type- and template-template parameters
* name of template class now also contains type information on the template parameters (e.g. typename, class, bool, const std::string&, etc.)
* implemented handling of non-type template parameters and template template parameters.
* implemented lots of tests for these features.
2015-03-09 18:07:30 +01:00
Eberhard Graether df888e4151 utility: added FilePath abstraction and rewrote data management to use it
The utility class FilePath wraps an instance of boost::filesystem::path. Using FilePath allows for easy comparision of
file paths on different platforms using absolute or relative paths. Whereever file paths are compared, this wrapper
should be used.
2015-03-09 01:51:32 +01:00
Eberhard Graether 7014c8ac4c data: ClangTool gets invoked for cpp files only, headers are parsed on-the-fly
This change adds the class FileRegister, that splits cpp and h files for the Parser and keeps track which headers have
been parsed yet. TranslationUnits get only created for cpp files now, and headers are parsed on the fly. This reduces
parse time by around half.
2015-03-09 01:32:51 +01:00
Eberhard Graether 598041f896 data: parsing file dependencies
This change adds the node NODE_FILE to the graph and the edge EDGE_INCLUDE, which determine the dependencies between
files by parsing the include preprocessor directive. File nodes can be searched and displayed in the GraphView as file
dependency graph. The filter "file" allows for selecting all files. The file depency information is used on project
refresh do determine which files need to get reparsed.
2015-03-03 00:33:13 +01:00
malte_langkabel 5370541a0f data: filename info
* Changed the TokenLocation of TemplateArguments to have at least a valid file name.
* Extended name of anonymous namespace by the containing file's name.
* Adjusted tests to reflect these changes.
2015-02-27 16:07:51 +01:00
malte_langkabel d0c92a6553 data: refined template parameter names
* Fixed template parameters to be resolved to their correct names even if they are (re)definied outside of the class (e.g. for template method definitions).
* Added test code.
2015-02-27 14:40:38 +01:00
malte_langkabel 6c3c8cdcc1 data: parsing template functions
* implemented parsing of template functions.
* added tests for those cases.
2015-02-16 16:22:58 +01:00
malte_langkabel 115b19c266 data: fixed parsing errors.
* (quick) fixed all the crashes that occurred when parsing the own source code.
2015-02-12 14:01:43 +01:00
Eberhard Graether b8f6b4be4e data: added Node type NODE_ENUM_CONSTANT 2015-02-10 14:28:53 +01:00
Eberhard Graether 0b9a2bf4a1 build: fixed clang warnings and console errors 2015-02-10 13:48:20 +01:00
Eberhard Graether 51c6675464 data: parsing and saving method overrides
This change parses method overrides and saves them in the Storage with type EDGE_OVERRIDE.
2015-02-10 12:18:40 +01:00
malte_langkabel 8bc11c9d9c logic: File Manager
* added FileManager that keeps track of the files analyzed by the project. It therefore checks if files get added, updated or deleted from the source- and include folders.
* refactored ASTVisitor::hasValidLocation() and implemented one version that search for the location in the currently parsed file and one that searches in all the project's source files.
* quickfix: switched order in FileManager so that header files are parsed first.
* created folder for helper classes used in tests.
* added test code for FileManager
* adjusted test code for Parser Tests.
2015-02-09 14:52:31 +01:00
malte_langkabel 4da51180ca data: fixed crash when parsing initialization of global variable
handled visiting of global variable usage in initialization of another global variable.
2015-02-09 11:20:01 +01:00
Eberhard Graether 1f6d503b9c logic: fixed layouting and parsing
* Fixed spectral layouting not initializing matrices with 0
* Fixed some kinds of template arguments don't resolve to a name
2015-02-05 13:52:34 +01:00
malte_langkabel 0649644663 data: fixed template specialization parse crash
handled conversion to DataType of clang::TemplateArgument when it is of integral kind.
2015-02-05 12:08:57 +01:00
malte_langkabel bdcca6dbad data: template arguments default parameters
* implemented parsing of template argument default parameters.
* added tests for default arguments of template parameters.

fortune cookie message = If you continually give, you will continually have.
2015-02-03 16:22:48 +01:00
malte_langkabel e17341fc43 data: parse partial template specializations
* fixed: implicit template specializations will be found even if the original template definition is located in a different file (that gets included).
* implemented correct extraction of template parameters, template arguments and template specialization edges.
* added token locations for template parameters of partial template specializations.
* graph view displays full names of template parameters and template arguments.
* added test code for features
2015-02-03 13:10:56 +01:00
malte_langkabel 4775a87104 data: elaborated type name usage fix
* fixed node name hierarchy creation for elaborated type names (like when using the class namespaceA::B)
2015-01-19 17:22:27 +01:00
malte_langkabel 6fc61a7e22 data: token locations for constructor calls
* fixed token locations for implicit constructor calls.
* removed error line from test code.
2015-01-19 15:08:16 +01:00
Eberhard Graether bdb38acbce ui/logic/data: show parse errors in CodeView
This change saves the errors while parsing in the Storage and displays them in the CodeView. The error messages can be
read in the tooltip on hovering. The error count is visible in the status bar.
2015-01-15 19:38:19 +01:00
Eberhard Graether 8242454104 ui/data: cleaned up UI and parsing
* HOT FIX: typename not always correctly split to name hierarchy
* show node main if available as first active token after parsing
* show all contents of namespaces if searched for
* added missing enum type and enum value usages
* added inheritance for structs
* removed MessageActivateToken and replaced it with MessageActivateTokens
* activating correct nodes for clicks in GraphView and CodeView
* no graph change when clicking an edge, but highlighting the edge instead
* only show active nodes without connections when multiple are activated
* fixed snippet sorting to put file that contains declarations on top
* set sizeHints on CodeView and SearchView to increase their initial size

fortune cookie message = Das Leben wird eine positive Wendung nehmen.
2015-01-08 12:12:50 +01:00