Binding between Famix and FAST
The last stable version is
Metacello new
githubUser: 'moosetechnology' project: 'Carrefour' commitish: 'v5' path: 'src';
baseline: 'Carrefour';
load
Carrefour links entities in a FAST model to entities in a Famix model. It is composed of 2 parts:
- Carrefour meta-model
- Binder with two main steps involved:
- Generate the FAST model of a Famix entity (eg. a FamixMethod) with
#getFASTModel
- Bind the nodes in the FAST model to entities in the Famix model with
bindFASTModel:
- Generate the FAST model of a Famix entity (eg. a FamixMethod) with
Represents relations between Famix entities and FAST entities.
The relations are typically between:
- FamixMethod and FASTBehaviouralEntity
- FamixStructuralEntity and FASTVariableDeclarator, FASTExpression, or FASTAssignement
- FamixInvocation and FASTFunctionCall or FASTMessageSend Note: class names are only indicative, they do not really exist in any Famix or FAST meta-model
Done by a language dependent parser.
Each concerned FamixEntity should know how to do it by implementing #getFASTModel
.
For example in Java, this method is implemented by FamixJavaMethod
and all the main "structured types" (FamixJavaClass
, FamixJavaEnum
, FamixJavaException
).
Done by visiting the FAST model (an AST) and looking for corresponding Famix entities to each FAST entity.
It is implemented in bindFASTModel:
To update the tests, you will need to rerun VerveineJ on the testing resources. This command should produce the .mse file.
cd testing
& 'D:\Path\To\VerveineJ\verveinej.bat' -format json -o testing.json -anchor assoc -autocp './src' './src'