mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-06-06 09:16:02 +02:00

Addresses review comments from https://git.eclipse.org/r/#/c/10648. Fixes the junit problems by making sure that the dummy PDOM acquires its write lock before calling exercising the tag index. Original commit message: This new extension point allows contributors to put their own information into the PDOM and to later retrieve it for their own purposes. There are many details in the bug. The idea is that contributors provide an implementation of IBindingTagger, which is given a chance to examine IBindings when they are created. The ITagWriter interface allows the contributor to create a new tag which can then have data written to it. The ITagService interface (accessible from CCorePlugin.getTagService() provides a way for the contributor to later get an instance of ITagReader to retrieve tags from bindings. ITags are copied to the PDOM when the associated binding is persisteed. Contributors use a unique id (based on their plugin id), so that multiple contributors are able to independently tag a given binding. In-memory tags are not cached. I've done some timing tests using my sample implementation and found no measurable difference. The full log lines look like: !MESSAGE Indexed 'simple-01' (2 sources, 184 headers) in <see below> sec: 21,550 declarations; 35,394 references; 0 unresolved inclusions; 1 syntax errors; 0 unresolved names (0.00%) I did 5 tests using the current master (no tagging-related code), the times were: 18.86 sec 9.17 sec 5.91 sec 4.79 sec 4.83 sec And then I ran the same sequence of tests using the code in this commit: 18.73 sec 9.39 sec 6.50 sec 4.78 sec 5.27 sec If performance does become a problem, then caching could be introduced with a new implementation of ITaggableService. The two problems are finding a key other than the identity of the IBinding (since IBindings are re-created often) and properly evicting stale entries when the binding is no longer valid. The process of copying tags from an in-memory IBinding to a PDOMBinding, is a synchronization. This means that tags that are no longer applicable, will be removed from the persistent store. While developing this I found that PDOMBindings are not deleted from the Database (only the names that reference them are deleted), so there is no provision for deleting all tags at once. New database locks are not needed. By the time the persistent tags are accessed, higher levels of code have already taken a read or write lock as appropriate. There are new unit tests covering the changes to the PDOM. Change-Id: I6ae1afc949082f7f4484b3faa1550670be43312f Reviewed-on: https://git.eclipse.org/r/10659 Reviewed-by: Doug Schaefer <dschaefer@qnx.com> IP-Clean: Doug Schaefer <dschaefer@qnx.com> Tested-by: Doug Schaefer <dschaefer@qnx.com>
137 lines
6.6 KiB
Properties
137 lines
6.6 KiB
Properties
###############################################################################
|
|
# Copyright (c) 2003, 2011 IBM Corporation and others.
|
|
# All rights reserved. This program and the accompanying materials
|
|
# are made available under the terms of the Eclipse Public License v1.0
|
|
# which accompanies this distribution, and is available at
|
|
# http://www.eclipse.org/legal/epl-v10.html
|
|
#
|
|
# Contributors:
|
|
# IBM Corporation - initial API and implementation
|
|
# Anton Leherbauer (Wind River Systems)
|
|
###############################################################################
|
|
pluginName=C/C++ Development Tools Core
|
|
providerName=Eclipse CDT
|
|
|
|
cnature.name=C Nature
|
|
ccnature.name=C++ Nature
|
|
CProblemMarker.name=C/C++ Problem
|
|
PathEntryProblemMarker.name=Path Entry Problem
|
|
CBuildCommand.name=C Builder Command
|
|
|
|
#names of extension points
|
|
CProject.name=C Project
|
|
CBuildConsole.name=C Builder Console
|
|
ProcessList.name=Process List
|
|
ErrorParser.name=Error Parser
|
|
BinaryParser.name=Binary Parser
|
|
PathEntryStore.name=Path Entry Store
|
|
ScannerInfoProvider.name=Scanner Information Provider
|
|
LanguageSettingsProvider.name=Language Settings Provider
|
|
CIndexer.name= C/C++ Indexer
|
|
language.name= CDT Language
|
|
|
|
CodeFormatter.name=C/C++ Code Formatter
|
|
|
|
CTaskName=C/C++ Task
|
|
|
|
IndexerMarker=Indexer Marker
|
|
|
|
ElfParser.name=Elf Parser
|
|
GNUElfParser.name=GNU Elf Parser
|
|
PEWindowsParser.name=PE Windows Parser
|
|
CygwinPEParser.name=Cygwin PE Parser
|
|
XCOFF32Parser.name=AIX XCOFF32 Parser
|
|
MachOParser.name=Mach-O Parser (Deprecated)
|
|
MachOParser64.name=Mach-O 64 Parser
|
|
SOMParser.name=HP-UX SOM Parser
|
|
|
|
CDTGNUCErrorParser.name=CDT GNU C/C++ Error Parser
|
|
CDTGNUCErrorParser.regex.ReportedOnlyOnce=(.*?):(\\d+):(\\d+:)? .*\\(Each undeclared identifier is reported only once.*
|
|
CDTGNUCErrorParser.regex.ForEachFunctionItAppearsIn=(.*?):(\\d+):(\\d+:)? .*for each function it appears in.\\).*
|
|
CDTGNUCErrorParser.regex.ReportedOnlyOncePerInputFile=(.*?):(\\d+):(\\d+:)? .*this will be reported only once per input file.*
|
|
CDTGNUCErrorParser.regex.InstantiatedFromHere=(.*?):(\\d+):(\\d+:)?\\s*(.*instantiated from .*)
|
|
CDTGNUCErrorParser.regex.GenericInfo=(.*?):(\\d+):(\\d+:)?\\s*(([Nn]ote)|(NOTE)|([Ii]nfo)|(INFO)): (.*)
|
|
CDTGNUCErrorParser.regex.ParseErrorBefore=(.*?):(\\d+):(\\d+:)? (parse error before.*[`'"](.*)['"].*)
|
|
CDTGNUCErrorParser.regex.ErrorUndeclared=(.*?):(\\d+):(\\d+:)? [Ee]rror: ([`'"](.*)['"] undeclared .*)
|
|
CDTGNUCErrorParser.regex.ErrorConflictingTypesFor=(.*?):(\\d+):(\\d+:)? [Ee]rror: (conflicting types for .*[`'"](.*)['"].*)
|
|
CDTGNUCErrorParser.regex.GenericError=(.*?):(\\d+):(\\d+:)?\\s*(([Ee]rror)|(ERROR)): (.*)
|
|
CDTGNUCErrorParser.regex.DefinedButNotUsed=(.*?):(\\d+):(\\d+:)? [Ww]arning: ([`'"](.*)['"] defined but not used.*)
|
|
CDTGNUCErrorParser.regex.WarningConflictingTypesFor=(.*?):(\\d+):(\\d+:)? [Ww]arning: (conflicting types for .*[`'"](.*)['"].*)
|
|
CDTGNUCErrorParser.regex.GenericWarning=(.*?):(\\d+):(\\d+:)?\\s*(([Ww]arning)|(WARNING)): (.*)
|
|
CDTGNUCErrorParser.regex.OtherError=(.*?):(\\d+):(\\d+:)? (.*)
|
|
|
|
CDTGNULinkerErrorParser.name=CDT GNU Linker Error Parser
|
|
CDTGNULinkerErrorParser.regex.InFunction=(.*?):?(\\(\\.\\w+\\+.*\\))?:\\s*(In function [`'"](.*)['"]:)
|
|
CDTGNULinkerErrorParser.regex.WarningDangerousFunction=(.*?):(\\d+):(\\d+:)? ([Ww]arning:)?\\s*(the use of [`'"](.*)['"] is dangerous, better use [`'"](.*)['"].*)
|
|
CDTGNULinkerErrorParser.regex.TextWarning=(.*?):?\\(\\.\\w+\\+.*\\): [Ww]arning:? (.*)
|
|
CDTGNULinkerErrorParser.regex.TextError=(.*?):?\\(\\.\\w+\\+.*\\): (.*)
|
|
CDTGNULinkerErrorParser.regex.ldWarning=(.*[/\\\\])?ld(\\.exe)?: [Ww]arning:? (.*)
|
|
CDTGNULinkerErrorParser.regex.ldError=(.*[/\\\\])?ld(\\.exe)?: (.*)
|
|
|
|
CDTGNUAssemblerErrorParser.name=CDT GNU Assembler Error Parser
|
|
CDTWorkingDirLocator.name=CDT pushd/popd CWD Locator
|
|
CDTGNUMakeErrorParser.name=CDT GNU Make Error Parser 7.0
|
|
CDTGNUMakeErrorParser.name.deprecated=CDT GNU Make Error Parser 6.0 (Deprecated)
|
|
CDTVisualCErrorParser.name=CDT Visual C Error Parser
|
|
|
|
PathEntryContainerInitializer=Path Entry Container Initializer
|
|
|
|
fileTypeMapping.AssemblyLanguage=Assembly
|
|
fileTypeMapping.cSourceFile=C Source File
|
|
fileTypeMapping.cppSourceFile=C++ Source File
|
|
fileTypeMapping.assemblySourceFile=Assembly Source File
|
|
fileTypeMapping.cHeaderFile=C Header File
|
|
fileTypeMapping.cppHeaderFile=C++ Header File
|
|
|
|
fragmentName.aix = C/C++ Development Tools Core for AIX
|
|
fragmentName.linux = C/C++ Development Tools Core for Linux
|
|
fragmentName.linux.ia64 = C/C++ Development Tools Core for Linux (ia64)
|
|
fragmentName.linux.ppc = C/C++ Development Tools Core for Linux (ppc)
|
|
fragmentName.linux.ppc64 = C/C++ Development Tools Core for Linux (ppc64)
|
|
fragmentName.linux.x86 = C/C++ Development Tools Core for Linux (x86)
|
|
fragmentName.linux.x86_64 = C/C++ Development Tools Core for Linux (x86_64)
|
|
fragmentName.qnx = C/C++ Development Tools Core for QNX
|
|
fragmentName.solaris = C/C++ Development Tools Core for Solaris
|
|
fragmentName.win32 = C/C++ Development Tools Core for Windows
|
|
fragmentName.win32.x86 = C/C++ Development Tools Core for Windows (x86)
|
|
fragmentName.win32.x86_64 = C/C++ Development Tools Core for Windows (x86_64)
|
|
fragmentName.macosx = C/C++ Development Tools Core for MacOS X
|
|
|
|
cSourceName=C Source File
|
|
cHeaderName=C Header File
|
|
cxxSourceName=C++ Source File
|
|
cxxHeaderName=C++ Header File
|
|
asmSourceName=Assembly Source File
|
|
binaryFileName=Binary File
|
|
|
|
cdt_pathentry_var.description=CDT PathEntry variable
|
|
config_name_var.description=The name of the active configuration for the project specified as an argument
|
|
config_description_var.description=The description of the active configuration for the project specified as an argument
|
|
|
|
PDOMProviderName=PDOM Provider
|
|
|
|
fastIndexer.name=Fast Indexer
|
|
|
|
# built-in languages
|
|
language.name.gcc= GNU C
|
|
language.name.gpp= GNU C++
|
|
language.name.asm= Assembly
|
|
|
|
CConfigurationDataProvider.name = CConfigurationData provider
|
|
projectConverter.name = project converter
|
|
CIndex.name = CIndex
|
|
externalSettingsProvider.name = External Settings provider
|
|
tagger.name = Parser Node Tagger Extension Point
|
|
GeneratePDOMApplication.name = GeneratePDOM
|
|
defaultProvider.name = Default Provider
|
|
templatesExtensionPoint.name = Templates Extension point
|
|
templateProcessTypes.name = Process Types Extension point
|
|
templateAssociations.name = Template Associations
|
|
CProjectDescriptionStorage.name = Project Description Storage Extension point
|
|
CProjectStorageType.singlefile.name = Xml Storage (single file)
|
|
CProjectStorageType.separatefile.name = Xml Storage (Separate Files)
|
|
scannerInfoProvider2.name = Scanner Info Provider
|
|
efsExtensionProvider.name = EFSExtensionProvider
|
|
refreshExclusionFactory.name = Refresh Exclusion Factory
|
|
uncPathConverter.name = UNC Path Converter
|
|
ScannerInfoExtensionLanguageSettingsProvider.name=Contributed ScannerInfo Entries
|