Success!
Wow, thanks Steve – that would have undoubtedly taken me days to work out
on my own. Glad to know that I’m not alone ;) In case others run
into this thread later on down the road the only amendment that I’ll make
is that I’m guessing that you are referring to IPerFileDiscoveredPathInfo2
rather than IDiscoveredPathInfo2 below. Once I worked that bit out everything
seemed to work just fine in 6.0 M6.
Thanks
again!
Glen
From: cdt-dev-bounces@xxxxxxxxxxx
[mailto:cdt-dev-bounces@xxxxxxxxxxx] On Behalf Of Kennedy, Stephen M
(Steve)
Sent: Thursday, May 07, 2009 3:40 PM
To: CDT General developers list.
Subject: RE: [cdt-dev] Trying to implement a scanner
configurationdiscoveryprofile
Glen,
I've gotten a "per file"
ScannerInfoCollector (attribute scope="file") to work at least.
Looking at my code, I see I added a comment on
"getCollectedScannerInfo()": "NOTE: not called so far..."
:). My ScannerInfoCollector class implements
IScannerInfoCollector3. The key part is the IScannerInfoCollector2
interface which has a createPathInfoObject() method that returns an object
implementing the IDiscoveredPathManager.IDiscoveredPathInfo
interface. For this object I implemented the
IDiscoveredPathManager.IDiscoveredPathInfo2 interface instead. The
IDiscoveredPathInfo2 has a getPathInfoMap() method which returns a map of
IResource -> PathInfo (this object has the include path & preprocessor
definitions). Whew. As far as I can tell none of the other methods
in IDiscoveredPathInfo2 are called aside from getSerializable(). I
implemented this originally in 4.x but it is still working in 5.0.2 and I think
it still worked in 6.0 M4).
Hope this helps.
From:
cdt-dev-bounces@xxxxxxxxxxx [mailto:cdt-dev-bounces@xxxxxxxxxxx] On Behalf
Of Anderson, Glen
Sent: Thursday, May 07, 2009 1:58 PM
To: CDT General developers list.
Subject: [cdt-dev] Trying to implement a scanner configuration
discoveryprofile
Hi all,
Currently I’m trying to implement a plugin that adds built-in include
paths, library paths and preprocessor definitions to the Paths and Symbols
preference page in our CDT based product (currently developing against 6.0
M6). From the (likely outdated) documentation that I’ve been able
to find it seems like extending the org.eclipse.cdt.make.core.ScannerConfigurationDiscoveryProfile
extension point and providing my own implementation of IScannerInfoCollector
and IScannerInfoProvider is the way to go.
Having done that I can see that my provider is being called appropriately and
is adding the correct information to the collector. The problem that
I’m seeing is that at no point is
IScannerInfoCollector.getCollectedScannerInfo() ever called. Grepping
through the entire CDT source tree seems to reveal that there are only two
instances of this method being called, both of which are in internal GCC
related implementations and neither of which are actually asking for
ScannerInfoTypes.INCLUDE_PATHS or ScannerInfoTypes.SYMBOL_DEFINITIONS.
Has this mechanism been deprecated or is there maybe something else that
I’m missing? Does anyone know of a better way to accomplish this?
Thanks,
Glen