Hi guys,
Today I imported a smalltalk project in Moose/Softwarenaut.
I have more than 3500 invocations with multiple candidates in the candidates list. I decided that I will ignore those dependencies. I would rather see fewer dependencies but be sure that the ones I see are for real (some kind of the lower-bounds of inter-package dependencies).
The problem is that after removing the ambiguous invocations, I still have spurious invocations. Two examples:
- In the project, there is a class which defines the #includes: method. In the resulting model, I have 64 invocations to this class's #include. However, if you look at the code, you see that the overwhelming majority of them are actually invocking List>>includes:. In fact, the model sais that several classes from the VisualWorks Base are depending on my code because they call includes:.
- The same situation with the #with. I have it defined in one class, and all the invocations are attributed to the class although almost all are actually invoking the WATagBrush>>with: from Seaside.
I am thinking that I should ignore the dependencies that have as target methods that I will define in a blacklist. I would put in there methods which are frequently used like: for: with: contains: etc... I guess I can remove a lot of noise this way. Then i could probably allow the user to further filter methods from the UI of S*naut.
However, the user would have to know the system in order to be able to filter out these invocations. And the point of S*naut was that the user did not know the system... :)
Does anybody have a better approach to making sure that the dependencies in the model are for real?
Cheers,
Mircea.