Thanks for the bug report! The fix will be integrated into the next version.
About Lint/Code bugs - Well, that depends on your expectations, I guess...
I inspected the results for Object, and it would appear that it hosts lots of messages that are "misplaced", in a sense. For example, this snippet of code out of one of those methods -
class := self class. class isMeta ifTrue: [^self]. "a class" new := self clone. class isSystemDefined ifFalse: [uc := deepCopier uniClasses at: class ifAbsent: [nil]. uc ifNil: [deepCopier uniClasses at: class put: (uc := self copyUniClassWith: deepCopier).
Objects don't implement copyUniClassWith:, but the tests will protect most objects from venturing there. That generally works (so it's not a bug), and I bet there are some reasonable tradeoffs involved (so maybe it's not even Lint). It would me or you some effort to decide either way, but I sure wouldn't expect it of Smalllint ;-)
Generally speaking, Smalllint is more useful on young code (where what looks like a stupid mistake is more likely to be one), but you never know. From a quick inspection, there's lots of good work that can be done cleaning up the Kernel classes starting from a Lint report on it. If you want to start off picking on a weaker victim, just go after my code :-)
One enhancement that I know of, and I'll integrate as soon as I'm told it's ready, is a better mechanism to tell Smalllint to ignore "infractions" (using comments in the code).
Anyway, thanks for the feedback! Daniel
"PhiHo Hoang" phiho.hoang@home.com wrote:
Hi Daniel,
I got a walk back 'Error: subscript is out of bounds: 0' when clicking
in SmallLint Results window where there are no result messages.
I am learning to use RB and found that SmallLint reports 39 'messages
sent but not implemented' bugs for Kernel-Objects and Kernel-Classes. Are there really bugs for these two categories or it's SmallLint's bug ;-)
Cheers,
PhiHo
----- Original Message ----- From: danielv@netvision.net.il To: squeak-dev@lists.squeakfoundation.org Sent: Friday, September 28, 2001 8:51 PM Subject: [ANN] Squeak RB release
Hey guys, another release is up. A couple of fixes, and one main new feature - a search feature based on parse tree matching.
This lets you find just about any pattern in the code that you can describe. You can look in a class, a class category, or all the system (that'll take a while!).
The way the search work is like this - You give it a pattern that looks like the code you want to match `@exp halt
will match "3 halt" and also "(3 + 4) halt".
You can also specify a test clause. For example,
The pattern - `@Expression with the test clause - aNode isVariable and: [(class _ Smalltalk classNamed: aNode name) isBehavior and: [class allSuperclasses includes: Morph]]
Will look for every expression, that's a variable, that's really a global, and a class, and a subclass of Morph (In short, you'll see all the methods that reference some Morph class explicitly).
Note that the clause is really compiled as the body of a block, that recieves aNode as it's only parameters.
To invoke the search, go to the "RB - Class" menu, and poke the "ind code like..." item. Invoking it with no class will apply the search to the category, if no category either, then all categories.
To load the RB, do (btw, tests show you must delete any Squeak%20RB projects from your Squeaklets directory) - ProjectLoading installRemoteNamed: 'Squeak%20RB.pr' from: 'http://squeak.heeg.de:8080/TFODC69UQ0MFRIHMG40DRML1CU7VYZ9-4/Squeak%20R B.pr' named: 'SqueakRB' in: Project current.
Daniel PS - anyone know the rationale for Project>>fromUrl: working only for the predefined servers?
Hi,
If you want to start off picking on a weaker victim, just go after my code
:-)
Just to set the record straight, I am not trying to pick on a victim, weak or strong ;-)
I am simply learning a wonderful tool that will help me in learning the Squeak Micro Kernel Image available, hopefully, after we have a module system in place.
The fix will be integrated into the next version.
While you are at it, maybe you want to look at PluggableListMorphOfMany's when it's neighbors resize.
Many thanks to all who gave us RB and SmallLint. Please keep up with the excellent work.
Cheers,
PhiHo.
----- Original Message ----- From: danielv@netvision.net.il To: squeak-dev@lists.squeakfoundation.org Sent: Saturday, September 29, 2001 7:25 AM Subject: Re: [ANN] Squeak RB release
Thanks for the bug report! The fix will be integrated into the next version.
About Lint/Code bugs - Well, that depends on your expectations, I guess...
I inspected the results for Object, and it would appear that it hosts lots of messages that are "misplaced", in a sense. For example, this snippet of code out of one of those methods -
class := self class. class isMeta ifTrue: [^self]. "a class" new := self clone. class isSystemDefined ifFalse: [uc := deepCopier uniClasses at: class ifAbsent: [nil]. uc ifNil: [deepCopier uniClasses at: class put: (uc := self copyUniClassWith: deepCopier).
Objects don't implement copyUniClassWith:, but the tests will protect most objects from venturing there. That generally works (so it's not a bug), and I bet there are some reasonable tradeoffs involved (so maybe it's not even Lint). It would me or you some effort to decide either way, but I sure wouldn't expect it of Smalllint ;-)
Generally speaking, Smalllint is more useful on young code (where what looks like a stupid mistake is more likely to be one), but you never know. From a quick inspection, there's lots of good work that can be done cleaning up the Kernel classes starting from a Lint report on it. If you want to start off picking on a weaker victim, just go after my code :-)
One enhancement that I know of, and I'll integrate as soon as I'm told it's ready, is a better mechanism to tell Smalllint to ignore "infractions" (using comments in the code).
Anyway, thanks for the feedback! Daniel
"PhiHo Hoang" phiho.hoang@home.com wrote:
Hi Daniel,
I got a walk back 'Error: subscript is out of bounds: 0' when
clicking
in SmallLint Results window where there are no result messages.
I am learning to use RB and found that SmallLint reports 39
'messages
sent but not implemented' bugs for Kernel-Objects and Kernel-Classes.
Are
there really bugs for these two categories or it's SmallLint's bug ;-)
Cheers,
PhiHo
----- Original Message ----- From: danielv@netvision.net.il To: squeak-dev@lists.squeakfoundation.org Sent: Friday, September 28, 2001 8:51 PM Subject: [ANN] Squeak RB release
Hey guys, another release is up. A couple of fixes, and one main new feature - a search feature based
on
parse tree matching.
This lets you find just about any pattern in the code that you can describe. You can look in a class, a class category, or all the system (that'll take a while!).
The way the search work is like this - You give it a pattern that looks like the code you want to match `@exp halt
will match "3 halt" and also "(3 + 4) halt".
You can also specify a test clause. For example,
The pattern - `@Expression with the test clause - aNode isVariable and: [(class _ Smalltalk classNamed: aNode name) isBehavior and: [class allSuperclasses includes: Morph]]
Will look for every expression, that's a variable, that's really a global, and a class, and a subclass of Morph (In short, you'll see all the methods that reference some Morph class explicitly).
Note that the clause is really compiled as the body of a block, that recieves aNode as it's only parameters.
To invoke the search, go to the "RB - Class" menu, and poke the "ind code like..." item. Invoking it with no class will apply the search to the category, if no category either, then all categories.
To load the RB, do (btw, tests show you must delete any Squeak%20RB projects from your Squeaklets directory) - ProjectLoading installRemoteNamed: 'Squeak%20RB.pr' from:
'http://squeak.heeg.de:8080/TFODC69UQ0MFRIHMG40DRML1CU7VYZ9-4/Squeak%20R
B.pr' named: 'SqueakRB' in: Project current.
Daniel PS - anyone know the rationale for Project>>fromUrl: working only for the predefined servers?
Daniel,
Sorry to take a while to respond to this, I just got back from a 2-week vacation.
One enhancement that I know of, and I'll integrate as soon as I'm told it's ready, is a better mechanism to tell Smalllint to ignore "infractions" (using comments in the code).
The VW and VA versions of the RB use filters for this. Since there may be legitimate reasons to break a Smalllint rule, especially the Possible Bugs and Intention Revealing rules, you can specify for specific methods and/or classes to be excluded from the processing of specific rules. This greatly increases the signal-to-noise ratio of Smalllint results.
It would be nice to have the Squeak RB environment browsers hook into this filter mechanism.
-Bob
squeak-dev@lists.squeakfoundation.org