Dan's analysis thingy/MudPie
daniel.vainsencher at gmail.com
Mon Mar 21 23:21:07 UTC 2005
Dan Ingalls wrote:
> While I haven't tried it, I think Daniel's Mudpie may help with
> determining effective root sets, after which my "differencing" scheme
> is pretty effective, as you discovered.
Sorry I didn't reply earlier.
If you want to get *possible* root sets, load MudPie and then do:
mma _ MultiModuleAnalyzer onCategoriesWithPrefix: ''. "initialize for
analysis of all categories"
mma packageGraph unreachedNodes
This gives you (after maybe a minute, probably less) all the individual
categories whose classes are referenced by no other categories,
therefore they are possible roots.
However, it is probably better to see all "bunches" of categories that
don't have incoming references, though they have internal references.
The following does that:
pdag _ GraphAnalyzer new convertToDAGOfStrongComponents: mma packageGraph.
This list contains lists of categories, such that each list can be used
as a root for Dan's algorithm (assuming no impedance mismatch between
him and me).
1. This will include all the code that's already well-untangled, so
either list would require filtering.
2. Of course these bunches are not maximal, that's what Dan's code does.
In fact, in a way they are minimal, but that's a different story.
Dan Ingalls wrote:
>>After filing in the patch Dan just posted on squeak-dev, I ran:
>>etoysRemovals _ Smalltalk reportClassAndMethodRemovalsFor: ((PackageInfo named: 'EToys') classes collect: [:each | each name]).
> Hi, Cees -
> Thanks for actually taking the trouble to try this out!
> Just to complete the archaeological dig, check out SystemDictionary>>computeImageSegmentation ;-). It's out of date, but it shows how you can do a lot of different packaging experiments at once to save time.
> While I haven't tried it, I think Daniel's Mudpie may help with determining effective root sets, after which my "differencing" scheme is pretty effective, as you discovered.
> - Dan
More information about the Packages