Hi Nicolas,
Thanks a lot.
I looked quickly into this. There is at least a simple problem: you are calling queryAllOutgoingDependencies, but this method does not exist anymore. I guess we should replace this with queryAllOutgoingAssociations.
Is this due to a wrongly published refactoring?
Cheers, Doru
On 30 Jan 2012, at 23:58, Nicolas Anquetil wrote:
Hi,
I already spent 4 hours on this and am not anywhere near the solution :-( I think I got myself on a wrong track and cannot get out of it.
So I will ask your help see if you can do better.
From what I understood, the problem is not related to the metrics, but comes from accesses to global variables. When one does a atClassScope on a queryResult containing an access to a global variable, this one returns nil to the message claassScope (this is normal), and for some reason that I cannot understand the nil gets inserted in the storage of the queryResult in some cases (not always) in the form of a SetElement containing it.
After lot of debugging, I finally got a method (LANInterface>>originate() ) that accesses (among other things) SmalltalkGlobalVariable.
My problem is that from here the behaviour seems heratic to me :-(
- 'theMethod queryOutgoingAccesses atClassScope' works,so it does filter out
the nil coming from the 'SmalltalkGlobalVariable classScope'
- 'theMethod queryOutgoingReferences atClassScope' also works (there is no
global variable involved there anyway)
- 'theMethod queryStaticOutgoingAssociations atClassScope', does not work, it
contains a SetElement that contains a nil :-(
What baffles me is that the definition of FAMIXMethod>>queryStaticOutgoingAssociations is: ^ self queryOutgoingAccesses addAll: self queryOutgoingReferences; "addAll: self queryOutgoingInheritances; -- inheritance does not make sense here" yourself.
I even simplified it a bit to be more sure: staticAssociations = all access + all inheritance.
So taken together they exhibit the problem, but taking access alone access does not exhibit it. If I manually remove all references from the queryStaticOutgoingAssociations' result, then it works again, which is logical because this is the same as asking 'queryOutgoingAccesses' which already works
Note: to remove elements from the resutls, I use an inspector on the MooseQueryResult: 'storage := storage reject: [:a|a class == FAMIXReference]'
Even stranger to me, if I manually remove only one of the references (eg: 'storage := storage reject: [:a|a to name = 'String']'), then the result starts to be correct again.
The test used to built the particular model I am wroking on is MooseModelOverviewPyramidExtensionsTest>>testoverviewPyramidMetrics
So here I am. Maybe you can provide some fresh view on it?
On Monday 30 January 2012 15:09:12 Tudor Girba wrote:
Thanks a lot. I ran the tests again and only 6 still have errors: http://ci.moosetechnology.org/job/moose-latest-dev/804/testReport/
Let us know how it works.
Cheers, Doru
On Mon, Jan 30, 2012 at 11:01 AM, Nicolas Anquetil
nicolas.anquetil@inria.fr wrote:
I looked at it.
Problem is that I forgot to migrate some metrics from SoftEngMetrics to famix- extension-metrics. So it was correct in my image but not in the standard one.
This is corrected.
I am still having problems with a test in FAMIXPropertiesTest
It creates a strange situation where a MooseObjectQuery contains a SetElement containing a SetElement containing nil. So the problem might come from some unrelated place.
First the test class FAMIXPropertiesTest gave me troubles because there are two of them (one in Moose-Tests-SmalltalkImporter-KGB and one in Moose-Tests- SmalltalkImporter-core).
Second, I am teaching today, so I don't have lot of time to devote to this at this moment.
So I will leave that for further study tonight or tomorrow.
nicolas
On Sunday 29 January 2012 22:32:54 Tudor Girba wrote:
I forgot the link: http://ci.moosetechnology.org/job/moose-latest-dev/803/testReport/
Cheers, Doru
On 29 Jan 2012, at 22:13, Tudor Girba wrote:
Hi Nicolas,
Your latest changes produced some errors in tests.
The troubled seems to be triggered by you removing some methods from FAMIXClassGroup, like abstractness.
Could you take a look?
Cheers, Doru
-- www.tudorgirba.com
"What is more important: To be happy, or to make happy?"
-- www.tudorgirba.com
"What we can governs what we wish."
-- Nicolas Anquetil -- RMod team INRIA Lille Nord Europe
-- Nicolas Anquetil -- RMod team INRIA Lille Nord Europe
-- www.tudorgirba.com
"To utilize feedback, you first have to acquire it."