About model level metrics

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

About model level metrics

Stéphane Ducasse
Hi 

for certain metrics we need to compute the total amount of lines of code for the complete project.

FAMIXClass >> calculateARLCOMUnderstand
"Class LCOM LOC
C1  12 1000
C2     2  50
For C1 1000/1050 * 12
For C2 50/1050 * 2
"

self halt.
^ self TR_LoC / self mooseModel TR_totalNumberOfLinesOfCode * self TR_LCOM

Now I have a question because totalNumberOfLinesOfCode does exist on Model but on TypeGroup

I wrote it like that on FAMIXTypeGroup 

TR_totalNumberOfLinesOfCode
<MSEProperty: #TR_totalNumberOfLinesOfCode type: #Number>
<derived>
<MSEComment: 'Total number of lines of code from Understand'>
^ self
lookUpPropertyNamed: #TR_totalNumberOfLinesOfCode
computedAs: [ (self sumNumbers: [ :each | each TR_LoC ]) asFloat ]


How can I access for example totalNumberOfLinesOfCode at the model level?

Stef





--------------------------------------------
Stéphane Ducasse
03 59 35 87 52
Assistant: Julie Jonas 
FAX 03 59 57 78 50
TEL 03 59 35 86 16
S. Ducasse - Inria
40, avenue Halley, 
Parc Scientifique de la Haute Borne, Bât.A, Park Plaza
Villeneuve d'Ascq 59650
France


_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev
Reply | Threaded
Open this post in threaded view
|

Re: About model level metrics

Tudor Girba-2
Hi,

The way I see it you need to compute a metric in a class that depends on the context of all classes in the system.

I would implement it like this:

FAMIXClass >> calculateARLCOMUnderstand
"Class LCOM LOC
C1  12 1000
C2     2  50

For C1 1000/1050 * 12
For C2 50/1050 * 2
"

self halt.
^ self TR_LoC / self mooseModel allModelClasses TR_totalNumberOfLinesOfCode * self TR_LCOM

Cheers,
Doru


On Sep 12, 2017, at 11:58 AM, Stéphane Ducasse <[hidden email]> wrote:

Hi 

for certain metrics we need to compute the total amount of lines of code for the complete project.

FAMIXClass >> calculateARLCOMUnderstand
"Class LCOM LOC
C1  12 1000
C2     2  50

For C1 1000/1050 * 12
For C2 50/1050 * 2
"

self halt.
^ self TR_LoC / self mooseModel TR_totalNumberOfLinesOfCode * self TR_LCOM

Now I have a question because totalNumberOfLinesOfCode does exist on Model but on TypeGroup

I wrote it like that on FAMIXTypeGroup 

TR_totalNumberOfLinesOfCode
<MSEProperty: #TR_totalNumberOfLinesOfCode type: #Number>
<derived>
<MSEComment: 'Total number of lines of code from Understand'>
^ self
lookUpPropertyNamed: #TR_totalNumberOfLinesOfCode
computedAs: [ (self sumNumbers: [ :each | each TR_LoC ]) asFloat ]


How can I access for example totalNumberOfLinesOfCode at the model level?

Stef





--------------------------------------------
Stéphane Ducasse
http://stephane.ducasse.free.fr
http://www.synectique.eu / http://www.pharo.org 
03 59 35 87 52
Assistant: Julie Jonas 
FAX 03 59 57 78 50
TEL 03 59 35 86 16
S. Ducasse - Inria
40, avenue Halley, 
Parc Scientifique de la Haute Borne, Bât.A, Park Plaza
Villeneuve d'Ascq 59650
France

_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev

--
www.tudorgirba.com
www.feenk.com

"Things happen when they happen,
not when you talk about them happening."


_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev
Reply | Threaded
Open this post in threaded view
|

Re: About model level metrics

Usman Bhatti
In reply to this post by Stéphane Ducasse
self allModelClasses TR_totalNumberOfLinesOfCode ? (self = model)

On Tue, Sep 12, 2017 at 11:58 AM, Stéphane Ducasse <[hidden email]> wrote:
Hi 

for certain metrics we need to compute the total amount of lines of code for the complete project.

FAMIXClass >> calculateARLCOMUnderstand
"Class LCOM LOC
C1  12 1000
C2     2  50
For C1 1000/1050 * 12
For C2 50/1050 * 2
"

self halt.
^ self TR_LoC / self mooseModel TR_totalNumberOfLinesOfCode * self TR_LCOM

Now I have a question because totalNumberOfLinesOfCode does exist on Model but on TypeGroup

I wrote it like that on FAMIXTypeGroup 

TR_totalNumberOfLinesOfCode
<MSEProperty: #TR_totalNumberOfLinesOfCode type: #Number>
<derived>
<MSEComment: 'Total number of lines of code from Understand'>
^ self
lookUpPropertyNamed: #TR_totalNumberOfLinesOfCode
computedAs: [ (self sumNumbers: [ :each | each TR_LoC ]) asFloat ]


How can I access for example totalNumberOfLinesOfCode at the model level?

Stef





--------------------------------------------
Stéphane Ducasse
03 59 35 87 52
Assistant: Julie Jonas 
FAX 03 59 57 78 50
TEL 03 59 35 86 16
S. Ducasse - Inria
40, avenue Halley, 
Parc Scientifique de la Haute Borne, Bât.A, Park Plaza
Villeneuve d'Ascq 59650
France


_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev



_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev
Reply | Threaded
Open this post in threaded view
|

Re: About model level metrics

Stéphane Ducasse
In reply to this post by Stéphane Ducasse
Tx you guys for the answers!!
I cannot reply directly

Now we found a crazy in Pharo. Believe or not 

And I’m curious if you can reproduce it

We wrote this method in FamixClass

FAMIXClass >> TR_LCOM
<MSEProperty: #TR_LCOM type: #Number>
<MSEComment: 'lack of cohesion in methods from Understand'>
<derived>
^ self propertyNamed: #TR_LCOM

And since it is about Understand metrics

FAMIXClass >> Und_LCOM
<MSEProperty: #Und_LCOM type: #Number>
<MSEComment: 'lack of cohesion in methods from Understand'>
<derived>
^ self propertyNamed: #Und_LCOM

And this looks forever….. when we use Und_ :)


Crazy no.

Can you reproduce it?




On 12 Sep 2017, at 11:58, Stéphane Ducasse <[hidden email]> wrote:

Hi 

for certain metrics we need to compute the total amount of lines of code for the complete project.

FAMIXClass >> calculateARLCOMUnderstand
"Class LCOM LOC
C1  12 1000
C2     2  50
For C1 1000/1050 * 12
For C2 50/1050 * 2
"

self halt.
^ self TR_LoC / self mooseModel TR_totalNumberOfLinesOfCode * self TR_LCOM

Now I have a question because totalNumberOfLinesOfCode does exist on Model but on TypeGroup

I wrote it like that on FAMIXTypeGroup 

TR_totalNumberOfLinesOfCode
<MSEProperty: #TR_totalNumberOfLinesOfCode type: #Number>
<derived>
<MSEComment: 'Total number of lines of code from Understand'>
^ self
lookUpPropertyNamed: #TR_totalNumberOfLinesOfCode
computedAs: [ (self sumNumbers: [ :each | each TR_LoC ]) asFloat ]


How can I access for example totalNumberOfLinesOfCode at the model level?

Stef





--------------------------------------------
Stéphane Ducasse
03 59 35 87 52
Assistant: Julie Jonas 
FAX 03 59 57 78 50
TEL 03 59 35 86 16
S. Ducasse - Inria
40, avenue Halley, 
Parc Scientifique de la Haute Borne, Bât.A, Park Plaza
Villeneuve d'Ascq 59650
France


--------------------------------------------
Stéphane Ducasse
03 59 35 87 52
Assistant: Julie Jonas 
FAX 03 59 57 78 50
TEL 03 59 35 86 16
S. Ducasse - Inria
40, avenue Halley, 
Parc Scientifique de la Haute Borne, Bât.A, Park Plaza
Villeneuve d'Ascq 59650
France


_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev
Reply | Threaded
Open this post in threaded view
|

Re: About model level metrics

Usman Bhatti
On Tue, Sep 12, 2017 at 12:17 PM, Stéphane Ducasse <[hidden email]> wrote:
Tx you guys for the answers!!
I cannot reply directly

Now we found a crazy in Pharo. Believe or not 

And I’m curious if you can reproduce it

We wrote this method in FamixClass

FAMIXClass >> TR_LCOM
<MSEProperty: #TR_LCOM type: #Number>
<MSEComment: 'lack of cohesion in methods from Understand'>
<derived>
^ self propertyNamed: #TR_LCOM

And since it is about Understand metrics

FAMIXClass >> Und_LCOM
<MSEProperty: #Und_LCOM type: #Number>
<MSEComment: 'lack of cohesion in methods from Understand'>
<derived>
^ self propertyNamed: #Und_LCOM

And this looks forever….. when we use Und_ :)

So when you prefix your selector with Und_, it takes forever to get executed?

I tried it on Pharo 6.1 64 bits (Ubuntu) i.e. created a class and a selector with Und_ prefix.
And I could not reproduce the behavior/problem.

I didn't try it in moose though because I couldn't make Pharo 32-bit work on Linux 64-bit.
 


Crazy no.

Can you reproduce it?




On 12 Sep 2017, at 11:58, Stéphane Ducasse <[hidden email]> wrote:

Hi 

for certain metrics we need to compute the total amount of lines of code for the complete project.

FAMIXClass >> calculateARLCOMUnderstand
"Class LCOM LOC
C1  12 1000
C2     2  50
For C1 1000/1050 * 12
For C2 50/1050 * 2
"

self halt.
^ self TR_LoC / self mooseModel TR_totalNumberOfLinesOfCode * self TR_LCOM

Now I have a question because totalNumberOfLinesOfCode does exist on Model but on TypeGroup

I wrote it like that on FAMIXTypeGroup 

TR_totalNumberOfLinesOfCode
<MSEProperty: #TR_totalNumberOfLinesOfCode type: #Number>
<derived>
<MSEComment: 'Total number of lines of code from Understand'>
^ self
lookUpPropertyNamed: #TR_totalNumberOfLinesOfCode
computedAs: [ (self sumNumbers: [ :each | each TR_LoC ]) asFloat ]


How can I access for example totalNumberOfLinesOfCode at the model level?

Stef





--------------------------------------------
Stéphane Ducasse
03 59 35 87 52
Assistant: Julie Jonas 
FAX 03 59 57 78 50
TEL 03 59 35 86 16
S. Ducasse - Inria
40, avenue Halley, 
Parc Scientifique de la Haute Borne, Bât.A, Park Plaza
Villeneuve d'Ascq 59650
France


--------------------------------------------
Stéphane Ducasse
03 59 35 87 52
Assistant: Julie Jonas 
FAX 03 59 57 78 50
TEL 03 59 35 86 16
S. Ducasse - Inria
40, avenue Halley, 
Parc Scientifique de la Haute Borne, Bât.A, Park Plaza
Villeneuve d'Ascq 59650
France


_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev



_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev
Reply | Threaded
Open this post in threaded view
|

Re: About model level metrics

Stéphane Ducasse


And this looks forever….. when we use Und_ :)

So when you prefix your selector with Und_, it takes forever to get executed?

I tried it on Pharo 6.1 64 bits (Ubuntu) i.e. created a class and a selector with Und_ prefix.
And I could not reproduce the behavior/problem.

Me too. this is super super strange.
probably a compilation problem. 


I didn't try it in moose though because I couldn't make Pharo 32-bit work on Linux 64-bit.
 


Crazy no.

Can you reproduce it?




On 12 Sep 2017, at 11:58, Stéphane Ducasse <[hidden email]> wrote:

Hi 

for certain metrics we need to compute the total amount of lines of code for the complete project.

FAMIXClass >> calculateARLCOMUnderstand
"Class LCOM LOC
C1  12 1000
C2     2  50
For C1 1000/1050 * 12
For C2 50/1050 * 2
"

self halt.
^ self TR_LoC / self mooseModel TR_totalNumberOfLinesOfCode * self TR_LCOM

Now I have a question because totalNumberOfLinesOfCode does exist on Model but on TypeGroup

I wrote it like that on FAMIXTypeGroup 

TR_totalNumberOfLinesOfCode
<MSEProperty: #TR_totalNumberOfLinesOfCode type: #Number>
<derived>
<MSEComment: 'Total number of lines of code from Understand'>
^ self
lookUpPropertyNamed: #TR_totalNumberOfLinesOfCode
computedAs: [ (self sumNumbers: [ :each | each TR_LoC ]) asFloat ]


How can I access for example totalNumberOfLinesOfCode at the model level?

Stef





--------------------------------------------
Stéphane Ducasse
03 59 35 87 52
Assistant: Julie Jonas 
FAX 03 59 57 78 50
TEL 03 59 35 86 16
S. Ducasse - Inria
40, avenue Halley, 
Parc Scientifique de la Haute Borne, Bât.A, Park Plaza
Villeneuve d'Ascq 59650
France


--------------------------------------------
Stéphane Ducasse
03 59 35 87 52
Assistant: Julie Jonas 
FAX 03 59 57 78 50
TEL 03 59 35 86 16
S. Ducasse - Inria
40, avenue Halley, 
Parc Scientifique de la Haute Borne, Bât.A, Park Plaza
Villeneuve d'Ascq 59650
France


_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev


_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev

--------------------------------------------
Stéphane Ducasse
03 59 35 87 52
Assistant: Julie Jonas 
FAX 03 59 57 78 50
TEL 03 59 35 86 16
S. Ducasse - Inria
40, avenue Halley, 
Parc Scientifique de la Haute Borne, Bât.A, Park Plaza
Villeneuve d'Ascq 59650
France


_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.list.inf.unibe.ch/listinfo/moose-dev