1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-06 09:16:02 +02:00
cdt/core/org.eclipse.cdt.core/plugin.properties
Andrew Eidsness 6c6ab24c23 Bug 400020: Allow tagging of IBindings
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>
2013-02-26 21:17:01 -05:00

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