On Jan 11, 2010, at 9:59 13AM, Mariano Martinez Peck wrote:

Hi folks:  As part of my PhD I started to work with ImageSegment. This week I clean up all the stuff related to class discovery from there. I then wanted to put that extracted code in a separate class. I didn't like that code at all, so at the end I finished rewriting completely this stuff.

The cool thing is that:

- I remove all that stuff from ImageSegment (which has nothing to do with that)
- I remove that stuff from classes like Behavior and ClassDescription
- I put all these as an external package that can be perfectly loaded in core
- I rewrote that in style that I like much more. At least for me, it is much more easy to understand and to use now
- I wrote test cases
- I wrote good class comment.

The repository is: http://www.squeaksource.com/ClaseUseDiscovery
 and the license is MIT.

It is a little project, but maybe someone find it useful. This project only works with Pharo images newer than 1.1  version 11142

I paste here the class comment of CUDClassesUseDiscoverer:

Cheers

Mariano




This approach of swapping out inactive classes have two big problems:

- The granularity is too high: the class. As soon as only one method is invoked, the whole class is recovered.
- It is very common to recover all classes doing a simple action. For example, searching for implementors or senders of a certain method. Because of this, when you are developing in your Smalltalk image is very likely that all classes are recovered in less than 5 minutes of work. It is not useful. Browsing or editing code seems not to be a problem, thus. Maybe this approach has more sense in production images rather than development.

I guess the next tool you'll make is CUDMethodUseDiscover? ;)

Good job, and good luck!

Cheers,
Henry
 
PS. like in MessageTally, maybe a useful constructor method would be one taking a block as argument, and running trace during its execution?