Hi Alex,
The reason for this implementation is that in FAMIX 2.1 we did not have a good abstraction for sourceAnchor. So, for Smalltalk it is implemented by looking the method up in the image, and for other languages we rely on the external parser to provide this information.
But indeed, now that we do have a nicer abstraction, we could delegate the computation of number of lines of code.
However, for other low level metrics, like number of statements we only can compute that for Smalltalk. So that is why all these metrics are guarded by an isSmalltalk condition. What's more we only compute these metrics lazily so if an external parser provides it we just go with those values.
Just a note: source should be called sourceText to not confuse it with other kinds of sources (like the source of a relationship).
Cheers, Doru
On 2 May 2009, at 16:01, Alexandre Bergel wrote:
Yes, I saw this. A Smalltalk model must not assume that a compile method can be deduced from a FAMIXMethod.
Alexandre
On 2 May 2009, at 15:58, Stéphane Ducasse wrote:
probably does not exist on VW. Also the logic was the same for Number of statement.
On May 2, 2009, at 3:26 PM, Alexandre Bergel wrote:
String>>lineCount "Answer the number of lines represented by the receiver, where every cr adds one line. 5/10/96 sw" ...
Alexandre
On 2 May 2009, at 14:37, Stéphane Ducasse wrote:
what is lineCount?
Stef
On May 2, 2009, at 12:35 PM, Alexandre Bergel wrote:
Dear All,
Computing the number of lines of code is realized through:
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= FAMIXBehavioralEntity>>numberOfLinesOfCode
<MSEProperty: #LOC type: #Number> <property: #LOC longName: 'Lines of code' description: 'The number of lines of code in a method'> ^self lookUpPropertyNamed: #LOC computedAs: [self mooseModel isSmalltalk ifTrue: [| parser | parser := VisualWorksParseTreeMetricCalculator new. parser processMethod: self usingImporter: nil inModel: nil. parser numberOfLinesOfCode] ifFalse: [-1]] -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
How to compute the number of lines of code with a C function? How comes that this method is so closely related to Smalltalk ? I am tempted to replace this method with something like:
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= FAMIXBehavioralEntity>>numberOfLinesOfCode
<MSEProperty: #LOC type: #Number> <property: #LOC longName: 'Lines of code' description: 'The number of lines of code in a method'> ^self lookUpPropertyNamed: #LOC computedAs: [self source lineCount] -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Where source will be defined as:
FAMIXBehavioralEntity>>source ^ self sourceAnchor source -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Any comments before I proceed?
Alexandre
-- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
-- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
-- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
-- www.tudorgirba.com
"Be rather willing to give than demanding to get."