Yes, the description now mentions that DVS is a requirement.
This is because the analysis operates on the DVS concept of a package - by default, a group of system categories that share a prefix + the method categories outside it begin with '*',thePrefix.
Just load DVS and try again, please.
Daniel Vainsencher
PhiHo Hoang phiho.hoang@rogers.com wrote:
This is a multi-part message in MIME format.
--Boundary_(ID_rbOVtc8iS018uZwXiEqaGA) Content-type: text/plain; charset=iso-8859-1 Content-transfer-encoding: 7BIT
Daniel,
I got: 'MessageNotUnderstood: methodsFor:stamp:' Please find attached the log file. Cheers, PhiHo.
----- Original Message ----- From: danielv@netvision.net.il To: "squeak" squeak-dev@lists.squeakfoundation.org Sent: Friday, November 01, 2002 2:16 PM Subject: [ANN] Spaghetti Tracer (0.4)
Now on SqueakMap.
This version has a new analysis for multiple modules. This means you can now ask questions like "is Sunit hierarchially structured?" (yes) "is Balloon3D?" (well, not quite) "No? why not?" (you'll get a list of references that create a cyclic dependency between classes that are not in the same system category).
Load it and do -
mma _ MultiModuleAnalyzer onPackageNamedStarting: 'Balloon3D' mma isNonCyclic. mma packageStrongComponents. mma badStrongComponentsIn: mma packageStrongComponents. MessageSet openMessageList: mma cycleExampleForLargestPackageStrongComponent name: 'Methods that create one bad cycle'.
More tutorial material is available on the SM package description, which I've cleaned up and updated.
Especially if you maintain a package that spans more than one category, trying it out and let me know if it helps you find problems or find bogus problems, so forth.
Daniel Vainsencher
--Boundary_(ID_rbOVtc8iS018uZwXiEqaGA) Content-type: application/octet-stream; name=SpaghettiTracer.log Content-transfer-encoding: quoted-printable Content-disposition: attachment; filename=SpaghettiTracer.log
MessageNotUnderstood: methodsFor:stamp:=0D2 November 2002 3:06:15 = am=0D=0DVM: Win32 - MobVM - RFC version (Tracking 3.2.3)=0A= Oct 30 2002=0A= Compiler: gcc 2.95.3-6 (mingw special)=0DImage: Squeak3.2 [latest = update: #4956]=0D=0DUndefinedObject(Object)>>doesNotUnderstand:=0D = Receiver: nil=0D Arguments and temporary variables: =0D aMessage: a = Message with selector: #methodsFor:stamp: and arguments: = #('*Analys...etc...=0D Receiver's instance variables: = =0Dnil=0DUndefinedObject>>DoIt=0D Receiver: nil=0D Arguments and = temporary variables: =0D=0D Receiver's instance variables: = =0Dnil=0DCompiler>>evaluate:in:to:notifying:ifFail:=0D Receiver: a = Compiler=0D Arguments and temporary variables: =0D textOrStream: = 'PackageInfo methodsFor: ''*Analysis-Extensions'' stamp: ''dvf = 10...etc...=0D aContext: nil=0D receiver: nil=0D aRequestor: = nil=0D failBlock: [] in Compiler = class>>evaluate:for:notifying:logged:=0D methodNode: DoIt=0D ^ = PackageInfo methodsFor: '*Analysis-Extensions' stamp: 'dvf ...etc...=0D = method: a CompiledMethod (3267)=0D value: nil=0D Receiver's instance = variables: =0D sourceStream: a ReadStream=0D requestor: nil=0D = class: UndefinedObject=0D context: nil=0D=0DCompiler = class>>evaluate:for:notifying:logged:=0D Receiver: Compiler=0D Arguments = and temporary variables: =0D textOrString: 'PackageInfo methodsFor: = ''*Analysis-Extensions'' stamp: ''dvf 10...etc...=0D anObject: nil=0D = aController: nil=0D logFlag: false=0D val: nil=0D Receiver's = instance variables: =0D superclass: Object=0D methodDict: a = MethodDictionary(#compile:in:notifying:ifFail:->a CompiledMethod = ...etc...=0D format: 138=0D instanceVariables: #('sourceStream' = 'requestor' 'class' 'context')=0D organization: ('error handling' = interactive notify: notify:at:)=0D('public access...etc...=0D = subclasses: nil=0D name: #Compiler=0D classPool: a Dictionary()=0D = sharedPools: nil=0D environment: nil=0D category: nil=0D=0D--- The = rest of the stack ---=0DCompiler class>>evaluate:for:logged:=0DCompiler = class>>evaluate:logged:=0D[] in = StandardFileStream(PositionableStream)>>fileInAnnouncing:=0DBlockContext>=
on:do:=0D[] in =
StandardFileStream(PositionableStream)>>fileInAnnouncing:=0DProgressIniti= ationException>>defaultAction=0DProgressInitiationException(Exception)>>s= ignal=0DProgressInitiationException>>display:at:from:to:during:=0DProgres= sInitiationException = class>>display:at:from:to:during:=0DString>>displayProgressAt:from:to:dur= ing:=0DStandardFileStream(PositionableStream)>>fileInAnnouncing:=0D[] in = ChangeSorter = class>>newChangesFromStream:named:=0DBlockContext>>ensure:=0DChangeSorter= = class>>newChangesFromStream:named:=0DFileList>>fileIntoNewChangeSet=0DPlu= ggableButtonMorph>>performAction=0D[] in = PluggableButtonMorph>>mouseUp:=0DArray(SequenceableCollection)>>do:=0DPlu= ggableButtonMorph>>mouseUp:=0DPluggableButtonMorph(Morph)>>handleMouseUp:= =0DMouseButtonEvent>>sentTo:=0DPluggableButtonMorph(Morph)>>handleEvent:=0D= PluggableButtonMorph(Morph)>>handleFocusEvent:=0D[] in = HandMorph>>sendFocusEvent:to:clear:=0DPasteUpMorph>>becomeActiveDuring:=0D= HandMorph>>sendFocusEvent:to:clear:=0DHandMorph>>sendEvent:focus:clear:=0D= HandMorph>>sendMouseEvent:=0DHandMorph>>handleEvent:=0DHandMorph>>process= Events=0D[] in = WorldState>>doOneCycleNowFor:=0DArray(SequenceableCollection)>>do:=0DWorl= dState>>handsDo:=0DWorldState>>doOneCycleNowFor:=0DWorldState>>doOneCycle= For:=0DPasteUpMorph>>doOneCycle=0D[] in Project = class>>spawnNewProcess=0D[] in BlockContext>>newProcess=0D=
--Boundary_(ID_rbOVtc8iS018uZwXiEqaGA)--
Daniel,
Yes, the description now mentions that DVS is a requirement.
My bad :-)
I could install SpaghettiTracer and run the demos.
1/- I got 'IdentitySet ,? " :
For 'FFI' samples, at :
'mma badStrongComponentsIn: mma classStrongComponents '
And eToy at :
MessageSet openMessageList: mma cycleExampleForLargestPackageStrongComponent name: 'Methods/inheritance references that create one bad cycle (might be more)'
Please find the log file attached.
2/- Unknown selector 'pathBetween:and:in::' for CodeAnalyzer.
Thanks for the tracer, Daniel.
I will spend more time learning it.
Hopefully we will also have LasagnaCutter (not from me ;-).
Cheers,
PhiHo.
----- Original Message ----- From: danielv@netvision.net.il To: squeak-dev@lists.squeakfoundation.org Sent: Saturday, November 02, 2002 3:45 AM Subject: Re: [ANN] Spaghetti Tracer (0.4)
Yes, the description now mentions that DVS is a requirement.
This is because the analysis operates on the DVS concept of a package - by default, a group of system categories that share a prefix + the method categories outside it begin with '*',thePrefix.
Just load DVS and try again, please.
Daniel Vainsencher
PhiHo Hoang phiho.hoang@rogers.com wrote:
This is a multi-part message in MIME format.
--Boundary_(ID_rbOVtc8iS018uZwXiEqaGA) Content-type: text/plain; charset=iso-8859-1 Content-transfer-encoding: 7BIT
Daniel,
I got: 'MessageNotUnderstood: methodsFor:stamp:' Please find attached the log file. Cheers, PhiHo.
----- Original Message ----- From: danielv@netvision.net.il To: "squeak" squeak-dev@lists.squeakfoundation.org Sent: Friday, November 01, 2002 2:16 PM Subject: [ANN] Spaghetti Tracer (0.4)
Now on SqueakMap.
This version has a new analysis for multiple modules. This means you
can
now ask questions like "is Sunit hierarchially structured?" (yes) "is Balloon3D?" (well, not quite) "No? why not?" (you'll get a list of references that create a cyclic dependency between classes that are
not
in the same system category).
Load it and do -
mma _ MultiModuleAnalyzer onPackageNamedStarting: 'Balloon3D' mma isNonCyclic. mma packageStrongComponents. mma badStrongComponentsIn: mma packageStrongComponents. MessageSet openMessageList: mma cycleExampleForLargestPackageStrongComponent name: 'Methods that
create
one bad cycle'.
More tutorial material is available on the SM package description,
which
I've cleaned up and updated.
Especially if you maintain a package that spans more than one
category,
trying it out and let me know if it helps you find problems or find bogus problems, so forth.
Daniel Vainsencher
--Boundary_(ID_rbOVtc8iS018uZwXiEqaGA) Content-type: application/octet-stream; name=SpaghettiTracer.log Content-transfer-encoding: quoted-printable Content-disposition: attachment; filename=SpaghettiTracer.log
MessageNotUnderstood: methodsFor:stamp:=0D2 November 2002 3:06:15 = am=0D=0DVM: Win32 - MobVM - RFC version (Tracking 3.2.3)=0A= Oct 30 2002=0A= Compiler: gcc 2.95.3-6 (mingw special)=0DImage: Squeak3.2 [latest = update: #4956]=0D=0DUndefinedObject(Object)>>doesNotUnderstand:=0D = Receiver: nil=0D Arguments and temporary variables: =0D aMessage: a = Message with selector: #methodsFor:stamp: and arguments: = #('*Analys...etc...=0D Receiver's instance variables: = =0Dnil=0DUndefinedObject>>DoIt=0D Receiver: nil=0D Arguments and = temporary variables: =0D=0D Receiver's instance variables: = =0Dnil=0DCompiler>>evaluate:in:to:notifying:ifFail:=0D Receiver: a = Compiler=0D Arguments and temporary variables: =0D textOrStream: = 'PackageInfo methodsFor: ''*Analysis-Extensions'' stamp: ''dvf = 10...etc...=0D aContext: nil=0D receiver: nil=0D aRequestor: = nil=0D failBlock: [] in Compiler = class>>evaluate:for:notifying:logged:=0D methodNode: DoIt=0D ^ = PackageInfo methodsFor: '*Analysis-Extensions' stamp: 'dvf ...etc...=0D
=
method: a CompiledMethod (3267)=0D value: nil=0D Receiver's instance = variables: =0D sourceStream: a ReadStream=0D requestor: nil=0D = class: UndefinedObject=0D context: nil=0D=0DCompiler = class>>evaluate:for:notifying:logged:=0D Receiver: Compiler=0D Arguments
=
and temporary variables: =0D textOrString: 'PackageInfo methodsFor: = ''*Analysis-Extensions'' stamp: ''dvf 10...etc...=0D anObject: nil=0D = aController: nil=0D logFlag: false=0D val: nil=0D Receiver's = instance variables: =0D superclass: Object=0D methodDict: a = MethodDictionary(#compile:in:notifying:ifFail:->a CompiledMethod = ...etc...=0D format: 138=0D instanceVariables: #('sourceStream' = 'requestor' 'class' 'context')=0D organization: ('error handling' = interactive notify: notify:at:)=0D('public access...etc...=0D = subclasses: nil=0D name: #Compiler=0D classPool: a Dictionary()=0D = sharedPools: nil=0D environment: nil=0D category: nil=0D=0D--- The = rest of the stack ---=0DCompiler class>>evaluate:for:logged:=0DCompiler
=
class>>evaluate:logged:=0D[] in =
StandardFileStream(PositionableStream)>>fileInAnnouncing:=0DBlockContext>=
on:do:=0D[] in =
StandardFileStream(PositionableStream)>>fileInAnnouncing:=0DProgressIniti=
ationException>>defaultAction=0DProgressInitiationException(Exception)>>s=
ignal=0DProgressInitiationException>>display:at:from:to:during:=0DProgres=
sInitiationException =
class>>display:at:from:to:during:=0DString>>displayProgressAt:from:to:dur=
ing:=0DStandardFileStream(PositionableStream)>>fileInAnnouncing:=0D[] in
=
ChangeSorter =
class>>newChangesFromStream:named:=0DBlockContext>>ensure:=0DChangeSorter=
=
class>>newChangesFromStream:named:=0DFileList>>fileIntoNewChangeSet=0DPlu=
ggableButtonMorph>>performAction=0D[] in =
PluggableButtonMorph>>mouseUp:=0DArray(SequenceableCollection)>>do:=0DPlu=
ggableButtonMorph>>mouseUp:=0DPluggableButtonMorph(Morph)>>handleMouseUp:=
=0DMouseButtonEvent>>sentTo:=0DPluggableButtonMorph(Morph)>>handleEvent:=0D=
PluggableButtonMorph(Morph)>>handleFocusEvent:=0D[] in =
HandMorph>>sendFocusEvent:to:clear:=0DPasteUpMorph>>becomeActiveDuring:=0D=
HandMorph>>sendFocusEvent:to:clear:=0DHandMorph>>sendEvent:focus:clear:=0D=
HandMorph>>sendMouseEvent:=0DHandMorph>>handleEvent:=0DHandMorph>>process=
Events=0D[] in =
WorldState>>doOneCycleNowFor:=0DArray(SequenceableCollection)>>do:=0DWorl=
dState>>handsDo:=0DWorldState>>doOneCycleNowFor:=0DWorldState>>doOneCycle=
For:=0DPasteUpMorph>>doOneCycle=0D[] in Project = class>>spawnNewProcess=0D[] in BlockContext>>newProcess=0D=
--Boundary_(ID_rbOVtc8iS018uZwXiEqaGA)--
squeak-dev@lists.squeakfoundation.org