2015-08-26 10:25 GMT+02:00 Marcus Denker <[email protected]>:

> Hi,
>
> Review needed for
>
>
> https://pharo.fogbugz.com/f/cases/16074/Is-RBClassNotReferencedRule-200x-slower-in-Pharo-4-vs-Pharo-3
>
> Speedup can be checked with:
>
> rule:=RBClassNotReferencedRule new.
> environment:=RBBrowserEnvironment new forPackageNames: #('Fuel').
> [RBSmalllintChecker runRule: rule onEnvironment:
> environment] timeToRun
>
>
> Pharo5: "0:00:00:13.526"
> Pharo5 with fix: "0:00:00:00.761"
> Pharo3:  0:00:00:00.547
>
> Checking all classes for usage:
>
> [Smalltalk allClassesAndTraits select: [ : each | each isUsed not]]
> timeToRun
>
> still takes 1:40 to find 600 unused classes.
>
> This shows that adding a cache for “referenced classes” per environment
> would speed this
> up further. But it should be general, not just for RB or even RB Code
> Critique.
>
> The nice things is that code environments only change when you add classes
> or methods,
> so adding a very general cache should be quite possible.
>
> Another thing we should add is a way for classes to define “I am used”.
> E.g this
> now finds all Configurations, all the Manifests and all cases like the RB
> Rules themselves.
> All these should know that they are not useless even though there are no
> references.
>
>         Marcus
>

But now, we have the problem that this rule does not find references to
classes by symbol.
The comment for this rule says:

"This smell arises when a class is not referenced either directly or
indirectly by a symbol."

But all spec adapter classes are only referenced by their symbol and this
now isn't found anymore:

MorphicMenuGroupAdapter isUsed " - > false "

Reply via email to