Hi,
I am happy to announce that I now obtained a reasonable first beta stage of a standalone jdt2famix Java importer. This is implemented in Java, it works from the command line and has a similar structure to VerveineJ (the previous solution relied on JNIPort, but that did not scale well due to 32bits and needs rethinking). It is based on FameJava and JDT, and it is available under EPL2. The model is a new Famix version generated out of the Pharo meta-descriptions. To this end, I extended a bit the tool support around Fame and I will follow up with some details one that.
Here is the repository including some basic info: https://github.com/girba/jdt2famix
The importer was created through fine-grained tests, there are some 100 of them right now, and the coverage of the importer is more than 93%.
However, there are still things to do: - finish the coverage of the imported entities (see below). - improve the error handling. As Java has a ton of edge cases, it would be great if you would use it to parse your systems and report possible errors. We would then manufacture test cases out of those. - check the semantics of the produced data (possibly by comparing with VerveineJ). - find a better way to package the application. - integrate in Moose with one click. Ideally, even downloading the application should be doable directly from Moose. The goal here is to make jdt2famix part of the Moose 6 release.
As a deadline, I am targeting August 1 for a beta version, and August 10 for a Moose 6.0 release.
Please let me know what you think, and most importantly please give it a try and provide feedback.
Here is a detailed list of what works and what is left to do: ✓Namespace ✓Type ✓Type without binding ✓Inheritance without binding ✓Interface ✓Parameterizable Class ✓ParameterizedType ✓Method ✓Constructor ✓Visibility (public, private, protected, package) ✓Parameter ✓Method signature ✓Local variable ✓Attribute ✓Anonymous Class ✓Anonymous Class with Parameterized Type ✓Invocation ✓Super invocation ✓Constructor Invocation ✓Super constructor invocation ✓Class instantiation ✓Class initializer ✓Invocation receiver ✓Field read access in invocation receiver ✓Field read access in invocation parameter ✓Field read access in class instantiation ✓Field read access in assignment ✓Field read access in super invocation parameter ✓Field write access in assignment ✓Local write access in assignment ✓Local read access in invocation receiver ✓Local read access in invocation parameter ✓Local read access in super invocation parameter ✓Local read access in super constructor parameter ✓Read access through return ✓Read accesses in: do, while, if, for, switch, enhanced for, conditional (?:) ✓Read access in synchronized ✓Attribute initializer ✓Read access in attribute initializer ✓Read access to qualified enum value ✓Read access to qualified attribute ✓Parentheses ✓Enum ✓EnumValue ✓Array types [] ✓AnnotationType ✓AnnotationType attributes ✓AnnotationInstance for types ☐AnnotationInstance for attributes ☐AnnotationInstance for methods ☐AnnotationInstance for parameters ☐Generic Type in Method scope ☐Class reference ☐Inner Class ☐Wildcard types <?> ☐ThrownException ☐CaughtException ☐DeclaredException ☐SourceAnchor ☐Array Access ☐Comments ☐Implicit variables ☐Lambda variables
Cheers, Doru
-- www.tudorgirba.com www.feenk.com
"One cannot do more than one can do."
Great news, Doru! Thank you. I'll gladly give it a try soon. CheersRicky
On Tue, Jul 19, 2016 at 3:41 PM +0200, "Tudor Girba" tudor@tudorgirba.com wrote:
Hi,
I am happy to announce that I now obtained a reasonable first beta stage of a standalone jdt2famix Java importer. This is implemented in Java, it works from the command line and has a similar structure to VerveineJ (the previous solution relied on JNIPort, but that did not scale well due to 32bits and needs rethinking). It is based on FameJava and JDT, and it is available under EPL2. The model is a new Famix version generated out of the Pharo meta-descriptions. To this end, I extended a bit the tool support around Fame and I will follow up with some details one that.
Here is the repository including some basic info: https://github.com/girba/jdt2famix
The importer was created through fine-grained tests, there are some 100 of them right now, and the coverage of the importer is more than 93%.
However, there are still things to do: - finish the coverage of the imported entities (see below). - improve the error handling. As Java has a ton of edge cases, it would be great if you would use it to parse your systems and report possible errors. We would then manufacture test cases out of those. - check the semantics of the produced data (possibly by comparing with VerveineJ). - find a better way to package the application. - integrate in Moose with one click. Ideally, even downloading the application should be doable directly from Moose. The goal here is to make jdt2famix part of the Moose 6 release.
As a deadline, I am targeting August 1 for a beta version, and August 10 for a Moose 6.0 release.
Please let me know what you think, and most importantly please give it a try and provide feedback.
Here is a detailed list of what works and what is left to do: ✓Namespace ✓Type ✓Type without binding ✓Inheritance without binding ✓Interface ✓Parameterizable Class ✓ParameterizedType ✓Method ✓Constructor ✓Visibility (public, private, protected, package) ✓Parameter ✓Method signature ✓Local variable ✓Attribute ✓Anonymous Class ✓Anonymous Class with Parameterized Type ✓Invocation ✓Super invocation ✓Constructor Invocation ✓Super constructor invocation ✓Class instantiation ✓Class initializer ✓Invocation receiver ✓Field read access in invocation receiver ✓Field read access in invocation parameter ✓Field read access in class instantiation ✓Field read access in assignment ✓Field read access in super invocation parameter ✓Field write access in assignment ✓Local write access in assignment ✓Local read access in invocation receiver ✓Local read access in invocation parameter ✓Local read access in super invocation parameter ✓Local read access in super constructor parameter ✓Read access through return ✓Read accesses in: do, while, if, for, switch, enhanced for, conditional (?:) ✓Read access in synchronized ✓Attribute initializer ✓Read access in attribute initializer ✓Read access to qualified enum value ✓Read access to qualified attribute ✓Parentheses ✓Enum ✓EnumValue ✓Array types [] ✓AnnotationType ✓AnnotationType attributes ✓AnnotationInstance for types ☐AnnotationInstance for attributes ☐AnnotationInstance for methods ☐AnnotationInstance for parameters ☐Generic Type in Method scope ☐Class reference ☐Inner Class ☐Wildcard types ☐ThrownException ☐CaughtException ☐DeclaredException ☐SourceAnchor ☐Array Access ☐Comments ☐Implicit variables ☐Lambda variables
Cheers, Doru
-- www.tudorgirba.com www.feenk.com
"One cannot do more than one can do."
_______________________________________________ Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
Hi Doru,
This is fantastic.
I tried, but I got some error. Here is what I did: -=-=-=-=-=-=-=-= ~/Dropbox/Document> git clone git@github.com:girba/jdt2famix.git Cloning into 'jdt2famix'... remote: Counting objects: 2044, done. remote: Compressing objects: 100% (20/20), done. remote: Total 2044 (delta 6), reused 0 (delta 0), pack-reused 2024 Receiving objects: 100% (2044/2044), 1.45 MiB | 54.00 KiB/s, done. Resolving deltas: 100% (772/772), done. Checking connectivity... done. ~/Dropbox/Document> cd jdt2famix/ ~/Dropbox/Document/jdt2famix> ./release.sh ./release.sh: line 11: mvn: command not found cp: ./target/jdt2famix*.jar: No such file or directory ./release.sh: line 15: mvn: command not found ~/Dropbox/Document/jdt2famix> -=-=-=-=-=-=-=-=
What are the prerequisites? I see you use the “mvn”? Is it Meaven? How to install it?
Alexandre
On Jul 19, 2016, at 3:41 PM, Tudor Girba tudor@tudorgirba.com wrote:
Hi,
I am happy to announce that I now obtained a reasonable first beta stage of a standalone jdt2famix Java importer. This is implemented in Java, it works from the command line and has a similar structure to VerveineJ (the previous solution relied on JNIPort, but that did not scale well due to 32bits and needs rethinking). It is based on FameJava and JDT, and it is available under EPL2. The model is a new Famix version generated out of the Pharo meta-descriptions. To this end, I extended a bit the tool support around Fame and I will follow up with some details one that.
Here is the repository including some basic info: https://github.com/girba/jdt2famix
The importer was created through fine-grained tests, there are some 100 of them right now, and the coverage of the importer is more than 93%.
However, there are still things to do:
- finish the coverage of the imported entities (see below).
- improve the error handling. As Java has a ton of edge cases, it would be great if you would use it to parse your systems and report possible errors. We would then manufacture test cases out of those.
- check the semantics of the produced data (possibly by comparing with VerveineJ).
- find a better way to package the application.
- integrate in Moose with one click. Ideally, even downloading the application should be doable directly from Moose. The goal here is to make jdt2famix part of the Moose 6 release.
As a deadline, I am targeting August 1 for a beta version, and August 10 for a Moose 6.0 release.
Please let me know what you think, and most importantly please give it a try and provide feedback.
Here is a detailed list of what works and what is left to do: ✓Namespace ✓Type ✓Type without binding ✓Inheritance without binding ✓Interface ✓Parameterizable Class ✓ParameterizedType ✓Method ✓Constructor ✓Visibility (public, private, protected, package) ✓Parameter ✓Method signature ✓Local variable ✓Attribute ✓Anonymous Class ✓Anonymous Class with Parameterized Type ✓Invocation ✓Super invocation ✓Constructor Invocation ✓Super constructor invocation ✓Class instantiation ✓Class initializer ✓Invocation receiver ✓Field read access in invocation receiver ✓Field read access in invocation parameter ✓Field read access in class instantiation ✓Field read access in assignment ✓Field read access in super invocation parameter ✓Field write access in assignment ✓Local write access in assignment ✓Local read access in invocation receiver ✓Local read access in invocation parameter ✓Local read access in super invocation parameter ✓Local read access in super constructor parameter ✓Read access through return ✓Read accesses in: do, while, if, for, switch, enhanced for, conditional (?:) ✓Read access in synchronized ✓Attribute initializer ✓Read access in attribute initializer ✓Read access to qualified enum value ✓Read access to qualified attribute ✓Parentheses ✓Enum ✓EnumValue ✓Array types [] ✓AnnotationType ✓AnnotationType attributes ✓AnnotationInstance for types ☐AnnotationInstance for attributes ☐AnnotationInstance for methods ☐AnnotationInstance for parameters ☐Generic Type in Method scope ☐Class reference ☐Inner Class ☐Wildcard types <?> ☐ThrownException ☐CaughtException ☐DeclaredException ☐SourceAnchor ☐Array Access ☐Comments ☐Implicit variables ☐Lambda variables
Cheers, Doru
-- www.tudorgirba.com www.feenk.com
"One cannot do more than one can do."
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
Ah, indeed. You need Maven: https://maven.apache.org/download.cgi
I updated the instructions as well.
Let me know if it works.
Cheers, Doru
On Jul 19, 2016, at 9:44 AM, Alexandre Bergel alexandre.bergel@me.com wrote:
Hi Doru,
This is fantastic.
I tried, but I got some error. Here is what I did:
~/Dropbox/Document> git clone git@github.com:girba/jdt2famix.git Cloning into 'jdt2famix'... remote: Counting objects: 2044, done. remote: Compressing objects: 100% (20/20), done. remote: Total 2044 (delta 6), reused 0 (delta 0), pack-reused 2024 Receiving objects: 100% (2044/2044), 1.45 MiB | 54.00 KiB/s, done. Resolving deltas: 100% (772/772), done. Checking connectivity... done. ~/Dropbox/Document> cd jdt2famix/ ~/Dropbox/Document/jdt2famix> ./release.sh ./release.sh: line 11: mvn: command not found cp: ./target/jdt2famix*.jar: No such file or directory ./release.sh: line 15: mvn: command not found ~/Dropbox/Document/jdt2famix> -=-=-=-=-=-=-=-=
What are the prerequisites? I see you use the “mvn”? Is it Meaven? How to install it?
Alexandre
On Jul 19, 2016, at 3:41 PM, Tudor Girba tudor@tudorgirba.com wrote:
Hi,
I am happy to announce that I now obtained a reasonable first beta stage of a standalone jdt2famix Java importer. This is implemented in Java, it works from the command line and has a similar structure to VerveineJ (the previous solution relied on JNIPort, but that did not scale well due to 32bits and needs rethinking). It is based on FameJava and JDT, and it is available under EPL2. The model is a new Famix version generated out of the Pharo meta-descriptions. To this end, I extended a bit the tool support around Fame and I will follow up with some details one that.
Here is the repository including some basic info: https://github.com/girba/jdt2famix
The importer was created through fine-grained tests, there are some 100 of them right now, and the coverage of the importer is more than 93%.
However, there are still things to do:
- finish the coverage of the imported entities (see below).
- improve the error handling. As Java has a ton of edge cases, it would be great if you would use it to parse your systems and report possible errors. We would then manufacture test cases out of those.
- check the semantics of the produced data (possibly by comparing with VerveineJ).
- find a better way to package the application.
- integrate in Moose with one click. Ideally, even downloading the application should be doable directly from Moose. The goal here is to make jdt2famix part of the Moose 6 release.
As a deadline, I am targeting August 1 for a beta version, and August 10 for a Moose 6.0 release.
Please let me know what you think, and most importantly please give it a try and provide feedback.
Here is a detailed list of what works and what is left to do: ✓Namespace ✓Type ✓Type without binding ✓Inheritance without binding ✓Interface ✓Parameterizable Class ✓ParameterizedType ✓Method ✓Constructor ✓Visibility (public, private, protected, package) ✓Parameter ✓Method signature ✓Local variable ✓Attribute ✓Anonymous Class ✓Anonymous Class with Parameterized Type ✓Invocation ✓Super invocation ✓Constructor Invocation ✓Super constructor invocation ✓Class instantiation ✓Class initializer ✓Invocation receiver ✓Field read access in invocation receiver ✓Field read access in invocation parameter ✓Field read access in class instantiation ✓Field read access in assignment ✓Field read access in super invocation parameter ✓Field write access in assignment ✓Local write access in assignment ✓Local read access in invocation receiver ✓Local read access in invocation parameter ✓Local read access in super invocation parameter ✓Local read access in super constructor parameter ✓Read access through return ✓Read accesses in: do, while, if, for, switch, enhanced for, conditional (?:) ✓Read access in synchronized ✓Attribute initializer ✓Read access in attribute initializer ✓Read access to qualified enum value ✓Read access to qualified attribute ✓Parentheses ✓Enum ✓EnumValue ✓Array types [] ✓AnnotationType ✓AnnotationType attributes ✓AnnotationInstance for types ☐AnnotationInstance for attributes ☐AnnotationInstance for methods ☐AnnotationInstance for parameters ☐Generic Type in Method scope ☐Class reference ☐Inner Class ☐Wildcard types <?> ☐ThrownException ☐CaughtException ☐DeclaredException ☐SourceAnchor ☐Array Access ☐Comments ☐Implicit variables ☐Lambda variables
Cheers, Doru
-- www.tudorgirba.com www.feenk.com
"One cannot do more than one can do."
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
-- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
-- www.tudorgirba.com www.feenk.com
"There are no old things, there are only old ways of looking at them."
Hi Doru
I tried to parse ArgoUML (what else, right?) and got the following exception:
Exception in thread "main" java.lang.NullPointerException at com.feenk.jdt2famix.injava.InJavaImporter.ensureTypeFromTypeBinding(InJavaImporter.java:181) at com.feenk.jdt2famix.injava.InJavaImporter.ensureMethodFromMethodBinding(InJavaImporter.java:358) at com.feenk.jdt2famix.injava.InJavaImporter.createInvocationFromMethodBinding(InJavaImporter.java:600) at com.feenk.jdt2famix.injava.AstVisitor.visit(AstVisitor.java:325) at org.eclipse.jdt.core.dom.ClassInstanceCreation.accept0(ClassInstanceCreation.java:302) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:2759) at org.eclipse.jdt.core.dom.VariableDeclarationFragment.accept0(VariableDeclarationFragment.java:263) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782) at org.eclipse.jdt.core.dom.VariableDeclarationStatement.accept0(VariableDeclarationStatement.java:267) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782) at org.eclipse.jdt.core.dom.Block.accept0(Block.java:137) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:2759) at org.eclipse.jdt.core.dom.MethodDeclaration.accept0(MethodDeclaration.java:635) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782) at org.eclipse.jdt.core.dom.TypeDeclaration.accept0(TypeDeclaration.java:470) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782) at org.eclipse.jdt.core.dom.CompilationUnit.accept0(CompilationUnit.java:212) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at com.feenk.jdt2famix.injava.AstRequestor.acceptAST(AstRequestor.java:17) at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:1029) at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:636) at org.eclipse.jdt.core.dom.ASTParser.createASTs(ASTParser.java:990) at com.feenk.jdt2famix.Importer.run(Importer.java:28) at com.feenk.jdt2famix.injava.Main.main(Main.java:25)
I have jdk1.8.0_91 and apache-maven-3.3.9 on my Mac, running on El Capitan.
Cheers Ricky
On 19 Jul 2016, at 21:20, Tudor Girba tudor@tudorgirba.com wrote:
Ah, indeed. You need Maven: https://maven.apache.org/download.cgi
I updated the instructions as well.
Let me know if it works.
Cheers, Doru
On Jul 19, 2016, at 9:44 AM, Alexandre Bergel alexandre.bergel@me.com wrote:
Hi Doru,
This is fantastic.
I tried, but I got some error. Here is what I did:
~/Dropbox/Document> git clone git@github.com:girba/jdt2famix.git Cloning into 'jdt2famix'... remote: Counting objects: 2044, done. remote: Compressing objects: 100% (20/20), done. remote: Total 2044 (delta 6), reused 0 (delta 0), pack-reused 2024 Receiving objects: 100% (2044/2044), 1.45 MiB | 54.00 KiB/s, done. Resolving deltas: 100% (772/772), done. Checking connectivity... done. ~/Dropbox/Document> cd jdt2famix/ ~/Dropbox/Document/jdt2famix> ./release.sh ./release.sh: line 11: mvn: command not found cp: ./target/jdt2famix*.jar: No such file or directory ./release.sh: line 15: mvn: command not found ~/Dropbox/Document/jdt2famix> -=-=-=-=-=-=-=-=
What are the prerequisites? I see you use the “mvn”? Is it Meaven? How to install it?
Alexandre
On Jul 19, 2016, at 3:41 PM, Tudor Girba tudor@tudorgirba.com wrote:
Hi,
I am happy to announce that I now obtained a reasonable first beta stage of a standalone jdt2famix Java importer. This is implemented in Java, it works from the command line and has a similar structure to VerveineJ (the previous solution relied on JNIPort, but that did not scale well due to 32bits and needs rethinking). It is based on FameJava and JDT, and it is available under EPL2. The model is a new Famix version generated out of the Pharo meta-descriptions. To this end, I extended a bit the tool support around Fame and I will follow up with some details one that.
Here is the repository including some basic info: https://github.com/girba/jdt2famix
The importer was created through fine-grained tests, there are some 100 of them right now, and the coverage of the importer is more than 93%.
However, there are still things to do:
- finish the coverage of the imported entities (see below).
- improve the error handling. As Java has a ton of edge cases, it would be great if you would use it to parse your systems and report possible errors. We would then manufacture test cases out of those.
- check the semantics of the produced data (possibly by comparing with VerveineJ).
- find a better way to package the application.
- integrate in Moose with one click. Ideally, even downloading the application should be doable directly from Moose. The goal here is to make jdt2famix part of the Moose 6 release.
As a deadline, I am targeting August 1 for a beta version, and August 10 for a Moose 6.0 release.
Please let me know what you think, and most importantly please give it a try and provide feedback.
Here is a detailed list of what works and what is left to do: ✓Namespace ✓Type ✓Type without binding ✓Inheritance without binding ✓Interface ✓Parameterizable Class ✓ParameterizedType ✓Method ✓Constructor ✓Visibility (public, private, protected, package) ✓Parameter ✓Method signature ✓Local variable ✓Attribute ✓Anonymous Class ✓Anonymous Class with Parameterized Type ✓Invocation ✓Super invocation ✓Constructor Invocation ✓Super constructor invocation ✓Class instantiation ✓Class initializer ✓Invocation receiver ✓Field read access in invocation receiver ✓Field read access in invocation parameter ✓Field read access in class instantiation ✓Field read access in assignment ✓Field read access in super invocation parameter ✓Field write access in assignment ✓Local write access in assignment ✓Local read access in invocation receiver ✓Local read access in invocation parameter ✓Local read access in super invocation parameter ✓Local read access in super constructor parameter ✓Read access through return ✓Read accesses in: do, while, if, for, switch, enhanced for, conditional (?:) ✓Read access in synchronized ✓Attribute initializer ✓Read access in attribute initializer ✓Read access to qualified enum value ✓Read access to qualified attribute ✓Parentheses ✓Enum ✓EnumValue ✓Array types [] ✓AnnotationType ✓AnnotationType attributes ✓AnnotationInstance for types ☐AnnotationInstance for attributes ☐AnnotationInstance for methods ☐AnnotationInstance for parameters ☐Generic Type in Method scope ☐Class reference ☐Inner Class ☐Wildcard types <?> ☐ThrownException ☐CaughtException ☐DeclaredException ☐SourceAnchor ☐Array Access ☐Comments ☐Implicit variables ☐Lambda variables
Cheers, Doru
-- www.tudorgirba.com www.feenk.com
"One cannot do more than one can do."
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
-- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
-- www.tudorgirba.com www.feenk.com
"There are no old things, there are only old ways of looking at them."
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
Hi Ricky,
Great. Thanks. That is what I am looking for.
I also parsed a version of ArgoUML, and it worked. So, it must be an edge case that is sensitive to the exact code you chose.
Could you tell me how to get the exact sources that you parsed? Also, did you get libraries as well?
Cheers, Doru
On Jul 20, 2016, at 12:32 AM, Richard Wettel wettel@gmail.com wrote:
Hi Doru
I tried to parse ArgoUML (what else, right?) and got the following exception:
Exception in thread "main" java.lang.NullPointerException at com.feenk.jdt2famix.injava.InJavaImporter.ensureTypeFromTypeBinding(InJavaImporter.java:181) at com.feenk.jdt2famix.injava.InJavaImporter.ensureMethodFromMethodBinding(InJavaImporter.java:358) at com.feenk.jdt2famix.injava.InJavaImporter.createInvocationFromMethodBinding(InJavaImporter.java:600) at com.feenk.jdt2famix.injava.AstVisitor.visit(AstVisitor.java:325) at org.eclipse.jdt.core.dom.ClassInstanceCreation.accept0(ClassInstanceCreation.java:302) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:2759) at org.eclipse.jdt.core.dom.VariableDeclarationFragment.accept0(VariableDeclarationFragment.java:263) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782) at org.eclipse.jdt.core.dom.VariableDeclarationStatement.accept0(VariableDeclarationStatement.java:267) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782) at org.eclipse.jdt.core.dom.Block.accept0(Block.java:137) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:2759) at org.eclipse.jdt.core.dom.MethodDeclaration.accept0(MethodDeclaration.java:635) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782) at org.eclipse.jdt.core.dom.TypeDeclaration.accept0(TypeDeclaration.java:470) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782) at org.eclipse.jdt.core.dom.CompilationUnit.accept0(CompilationUnit.java:212) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at com.feenk.jdt2famix.injava.AstRequestor.acceptAST(AstRequestor.java:17) at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:1029) at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:636) at org.eclipse.jdt.core.dom.ASTParser.createASTs(ASTParser.java:990) at com.feenk.jdt2famix.Importer.run(Importer.java:28) at com.feenk.jdt2famix.injava.Main.main(Main.java:25)
I have jdk1.8.0_91 and apache-maven-3.3.9 on my Mac, running on El Capitan.
Cheers Ricky
On 19 Jul 2016, at 21:20, Tudor Girba tudor@tudorgirba.com wrote:
Ah, indeed. You need Maven: https://maven.apache.org/download.cgi
I updated the instructions as well.
Let me know if it works.
Cheers, Doru
On Jul 19, 2016, at 9:44 AM, Alexandre Bergel alexandre.bergel@me.com wrote:
Hi Doru,
This is fantastic.
I tried, but I got some error. Here is what I did:
~/Dropbox/Document> git clone git@github.com:girba/jdt2famix.git Cloning into 'jdt2famix'... remote: Counting objects: 2044, done. remote: Compressing objects: 100% (20/20), done. remote: Total 2044 (delta 6), reused 0 (delta 0), pack-reused 2024 Receiving objects: 100% (2044/2044), 1.45 MiB | 54.00 KiB/s, done. Resolving deltas: 100% (772/772), done. Checking connectivity... done. ~/Dropbox/Document> cd jdt2famix/ ~/Dropbox/Document/jdt2famix> ./release.sh ./release.sh: line 11: mvn: command not found cp: ./target/jdt2famix*.jar: No such file or directory ./release.sh: line 15: mvn: command not found ~/Dropbox/Document/jdt2famix> -=-=-=-=-=-=-=-=
What are the prerequisites? I see you use the “mvn”? Is it Meaven? How to install it?
Alexandre
On Jul 19, 2016, at 3:41 PM, Tudor Girba tudor@tudorgirba.com wrote:
Hi,
I am happy to announce that I now obtained a reasonable first beta stage of a standalone jdt2famix Java importer. This is implemented in Java, it works from the command line and has a similar structure to VerveineJ (the previous solution relied on JNIPort, but that did not scale well due to 32bits and needs rethinking). It is based on FameJava and JDT, and it is available under EPL2. The model is a new Famix version generated out of the Pharo meta-descriptions. To this end, I extended a bit the tool support around Fame and I will follow up with some details one that.
Here is the repository including some basic info: https://github.com/girba/jdt2famix
The importer was created through fine-grained tests, there are some 100 of them right now, and the coverage of the importer is more than 93%.
However, there are still things to do:
- finish the coverage of the imported entities (see below).
- improve the error handling. As Java has a ton of edge cases, it would be great if you would use it to parse your systems and report possible errors. We would then manufacture test cases out of those.
- check the semantics of the produced data (possibly by comparing with VerveineJ).
- find a better way to package the application.
- integrate in Moose with one click. Ideally, even downloading the application should be doable directly from Moose. The goal here is to make jdt2famix part of the Moose 6 release.
As a deadline, I am targeting August 1 for a beta version, and August 10 for a Moose 6.0 release.
Please let me know what you think, and most importantly please give it a try and provide feedback.
Here is a detailed list of what works and what is left to do: ✓Namespace ✓Type ✓Type without binding ✓Inheritance without binding ✓Interface ✓Parameterizable Class ✓ParameterizedType ✓Method ✓Constructor ✓Visibility (public, private, protected, package) ✓Parameter ✓Method signature ✓Local variable ✓Attribute ✓Anonymous Class ✓Anonymous Class with Parameterized Type ✓Invocation ✓Super invocation ✓Constructor Invocation ✓Super constructor invocation ✓Class instantiation ✓Class initializer ✓Invocation receiver ✓Field read access in invocation receiver ✓Field read access in invocation parameter ✓Field read access in class instantiation ✓Field read access in assignment ✓Field read access in super invocation parameter ✓Field write access in assignment ✓Local write access in assignment ✓Local read access in invocation receiver ✓Local read access in invocation parameter ✓Local read access in super invocation parameter ✓Local read access in super constructor parameter ✓Read access through return ✓Read accesses in: do, while, if, for, switch, enhanced for, conditional (?:) ✓Read access in synchronized ✓Attribute initializer ✓Read access in attribute initializer ✓Read access to qualified enum value ✓Read access to qualified attribute ✓Parentheses ✓Enum ✓EnumValue ✓Array types [] ✓AnnotationType ✓AnnotationType attributes ✓AnnotationInstance for types ☐AnnotationInstance for attributes ☐AnnotationInstance for methods ☐AnnotationInstance for parameters ☐Generic Type in Method scope ☐Class reference ☐Inner Class ☐Wildcard types <?> ☐ThrownException ☐CaughtException ☐DeclaredException ☐SourceAnchor ☐Array Access ☐Comments ☐Implicit variables ☐Lambda variables
Cheers, Doru
-- www.tudorgirba.com www.feenk.com
"One cannot do more than one can do."
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
-- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
-- www.tudorgirba.com www.feenk.com
"There are no old things, there are only old ways of looking at them."
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
-- www.tudorgirba.com www.feenk.com
"In a world where everything is moving ever faster, one might have better chances to win by moving slower."
Hi again,
By looking at the stack, I think I know where the problem comes from: it seems it is possible to have a method binding for which the declaring class is null. I thought this is not possible, so now I would like to understand the case when this happens because I do not know how to reproduce that.
Java is really not an easy language, and the JDT AST is also not regular enough. I only put guard conditions when I have a case that was broken and this forces me to have a better coverage for the future.
Of course, in the end, we will have to catch all exceptions on a file to file basis :)
Cheers, Doru
On Jul 20, 2016, at 4:40 AM, Tudor Girba tudor@tudorgirba.com wrote:
Hi Ricky,
Great. Thanks. That is what I am looking for.
I also parsed a version of ArgoUML, and it worked. So, it must be an edge case that is sensitive to the exact code you chose.
Could you tell me how to get the exact sources that you parsed? Also, did you get libraries as well?
Cheers, Doru
On Jul 20, 2016, at 12:32 AM, Richard Wettel wettel@gmail.com wrote:
Hi Doru
I tried to parse ArgoUML (what else, right?) and got the following exception:
Exception in thread "main" java.lang.NullPointerException at com.feenk.jdt2famix.injava.InJavaImporter.ensureTypeFromTypeBinding(InJavaImporter.java:181) at com.feenk.jdt2famix.injava.InJavaImporter.ensureMethodFromMethodBinding(InJavaImporter.java:358) at com.feenk.jdt2famix.injava.InJavaImporter.createInvocationFromMethodBinding(InJavaImporter.java:600) at com.feenk.jdt2famix.injava.AstVisitor.visit(AstVisitor.java:325) at org.eclipse.jdt.core.dom.ClassInstanceCreation.accept0(ClassInstanceCreation.java:302) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:2759) at org.eclipse.jdt.core.dom.VariableDeclarationFragment.accept0(VariableDeclarationFragment.java:263) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782) at org.eclipse.jdt.core.dom.VariableDeclarationStatement.accept0(VariableDeclarationStatement.java:267) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782) at org.eclipse.jdt.core.dom.Block.accept0(Block.java:137) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:2759) at org.eclipse.jdt.core.dom.MethodDeclaration.accept0(MethodDeclaration.java:635) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782) at org.eclipse.jdt.core.dom.TypeDeclaration.accept0(TypeDeclaration.java:470) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782) at org.eclipse.jdt.core.dom.CompilationUnit.accept0(CompilationUnit.java:212) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at com.feenk.jdt2famix.injava.AstRequestor.acceptAST(AstRequestor.java:17) at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:1029) at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:636) at org.eclipse.jdt.core.dom.ASTParser.createASTs(ASTParser.java:990) at com.feenk.jdt2famix.Importer.run(Importer.java:28) at com.feenk.jdt2famix.injava.Main.main(Main.java:25)
I have jdk1.8.0_91 and apache-maven-3.3.9 on my Mac, running on El Capitan.
Cheers Ricky
On 19 Jul 2016, at 21:20, Tudor Girba tudor@tudorgirba.com wrote:
Ah, indeed. You need Maven: https://maven.apache.org/download.cgi
I updated the instructions as well.
Let me know if it works.
Cheers, Doru
On Jul 19, 2016, at 9:44 AM, Alexandre Bergel alexandre.bergel@me.com wrote:
Hi Doru,
This is fantastic.
I tried, but I got some error. Here is what I did:
~/Dropbox/Document> git clone git@github.com:girba/jdt2famix.git Cloning into 'jdt2famix'... remote: Counting objects: 2044, done. remote: Compressing objects: 100% (20/20), done. remote: Total 2044 (delta 6), reused 0 (delta 0), pack-reused 2024 Receiving objects: 100% (2044/2044), 1.45 MiB | 54.00 KiB/s, done. Resolving deltas: 100% (772/772), done. Checking connectivity... done. ~/Dropbox/Document> cd jdt2famix/ ~/Dropbox/Document/jdt2famix> ./release.sh ./release.sh: line 11: mvn: command not found cp: ./target/jdt2famix*.jar: No such file or directory ./release.sh: line 15: mvn: command not found ~/Dropbox/Document/jdt2famix> -=-=-=-=-=-=-=-=
What are the prerequisites? I see you use the “mvn”? Is it Meaven? How to install it?
Alexandre
On Jul 19, 2016, at 3:41 PM, Tudor Girba tudor@tudorgirba.com wrote:
Hi,
I am happy to announce that I now obtained a reasonable first beta stage of a standalone jdt2famix Java importer. This is implemented in Java, it works from the command line and has a similar structure to VerveineJ (the previous solution relied on JNIPort, but that did not scale well due to 32bits and needs rethinking). It is based on FameJava and JDT, and it is available under EPL2. The model is a new Famix version generated out of the Pharo meta-descriptions. To this end, I extended a bit the tool support around Fame and I will follow up with some details one that.
Here is the repository including some basic info: https://github.com/girba/jdt2famix
The importer was created through fine-grained tests, there are some 100 of them right now, and the coverage of the importer is more than 93%.
However, there are still things to do:
- finish the coverage of the imported entities (see below).
- improve the error handling. As Java has a ton of edge cases, it would be great if you would use it to parse your systems and report possible errors. We would then manufacture test cases out of those.
- check the semantics of the produced data (possibly by comparing with VerveineJ).
- find a better way to package the application.
- integrate in Moose with one click. Ideally, even downloading the application should be doable directly from Moose. The goal here is to make jdt2famix part of the Moose 6 release.
As a deadline, I am targeting August 1 for a beta version, and August 10 for a Moose 6.0 release.
Please let me know what you think, and most importantly please give it a try and provide feedback.
Here is a detailed list of what works and what is left to do: ✓Namespace ✓Type ✓Type without binding ✓Inheritance without binding ✓Interface ✓Parameterizable Class ✓ParameterizedType ✓Method ✓Constructor ✓Visibility (public, private, protected, package) ✓Parameter ✓Method signature ✓Local variable ✓Attribute ✓Anonymous Class ✓Anonymous Class with Parameterized Type ✓Invocation ✓Super invocation ✓Constructor Invocation ✓Super constructor invocation ✓Class instantiation ✓Class initializer ✓Invocation receiver ✓Field read access in invocation receiver ✓Field read access in invocation parameter ✓Field read access in class instantiation ✓Field read access in assignment ✓Field read access in super invocation parameter ✓Field write access in assignment ✓Local write access in assignment ✓Local read access in invocation receiver ✓Local read access in invocation parameter ✓Local read access in super invocation parameter ✓Local read access in super constructor parameter ✓Read access through return ✓Read accesses in: do, while, if, for, switch, enhanced for, conditional (?:) ✓Read access in synchronized ✓Attribute initializer ✓Read access in attribute initializer ✓Read access to qualified enum value ✓Read access to qualified attribute ✓Parentheses ✓Enum ✓EnumValue ✓Array types [] ✓AnnotationType ✓AnnotationType attributes ✓AnnotationInstance for types ☐AnnotationInstance for attributes ☐AnnotationInstance for methods ☐AnnotationInstance for parameters ☐Generic Type in Method scope ☐Class reference ☐Inner Class ☐Wildcard types <?> ☐ThrownException ☐CaughtException ☐DeclaredException ☐SourceAnchor ☐Array Access ☐Comments ☐Implicit variables ☐Lambda variables
Cheers, Doru
-- www.tudorgirba.com www.feenk.com
"One cannot do more than one can do."
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
-- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
-- www.tudorgirba.com www.feenk.com
"There are no old things, there are only old ways of looking at them."
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
-- www.tudorgirba.com www.feenk.com
"In a world where everything is moving ever faster, one might have better chances to win by moving slower."
-- www.tudorgirba.com www.feenk.com
"Things happen when they happen, not when you talk about them happening."
Yes. The VerveineJ experience shows that it is complicated to extract information from the AST.
Keep doing!
Alexandre
On Jul 20, 2016, at 1:01 PM, Tudor Girba tudor@tudorgirba.com wrote:
Hi again,
By looking at the stack, I think I know where the problem comes from: it seems it is possible to have a method binding for which the declaring class is null. I thought this is not possible, so now I would like to understand the case when this happens because I do not know how to reproduce that.
Java is really not an easy language, and the JDT AST is also not regular enough. I only put guard conditions when I have a case that was broken and this forces me to have a better coverage for the future.
Of course, in the end, we will have to catch all exceptions on a file to file basis :)
Cheers, Doru
On Jul 20, 2016, at 4:40 AM, Tudor Girba tudor@tudorgirba.com wrote:
Hi Ricky,
Great. Thanks. That is what I am looking for.
I also parsed a version of ArgoUML, and it worked. So, it must be an edge case that is sensitive to the exact code you chose.
Could you tell me how to get the exact sources that you parsed? Also, did you get libraries as well?
Cheers, Doru
On Jul 20, 2016, at 12:32 AM, Richard Wettel wettel@gmail.com wrote:
Hi Doru
I tried to parse ArgoUML (what else, right?) and got the following exception:
Exception in thread "main" java.lang.NullPointerException at com.feenk.jdt2famix.injava.InJavaImporter.ensureTypeFromTypeBinding(InJavaImporter.java:181) at com.feenk.jdt2famix.injava.InJavaImporter.ensureMethodFromMethodBinding(InJavaImporter.java:358) at com.feenk.jdt2famix.injava.InJavaImporter.createInvocationFromMethodBinding(InJavaImporter.java:600) at com.feenk.jdt2famix.injava.AstVisitor.visit(AstVisitor.java:325) at org.eclipse.jdt.core.dom.ClassInstanceCreation.accept0(ClassInstanceCreation.java:302) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:2759) at org.eclipse.jdt.core.dom.VariableDeclarationFragment.accept0(VariableDeclarationFragment.java:263) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782) at org.eclipse.jdt.core.dom.VariableDeclarationStatement.accept0(VariableDeclarationStatement.java:267) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782) at org.eclipse.jdt.core.dom.Block.accept0(Block.java:137) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:2759) at org.eclipse.jdt.core.dom.MethodDeclaration.accept0(MethodDeclaration.java:635) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782) at org.eclipse.jdt.core.dom.TypeDeclaration.accept0(TypeDeclaration.java:470) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782) at org.eclipse.jdt.core.dom.CompilationUnit.accept0(CompilationUnit.java:212) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at com.feenk.jdt2famix.injava.AstRequestor.acceptAST(AstRequestor.java:17) at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:1029) at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:636) at org.eclipse.jdt.core.dom.ASTParser.createASTs(ASTParser.java:990) at com.feenk.jdt2famix.Importer.run(Importer.java:28) at com.feenk.jdt2famix.injava.Main.main(Main.java:25)
I have jdk1.8.0_91 and apache-maven-3.3.9 on my Mac, running on El Capitan.
Cheers Ricky
On 19 Jul 2016, at 21:20, Tudor Girba tudor@tudorgirba.com wrote:
Ah, indeed. You need Maven: https://maven.apache.org/download.cgi
I updated the instructions as well.
Let me know if it works.
Cheers, Doru
On Jul 19, 2016, at 9:44 AM, Alexandre Bergel alexandre.bergel@me.com wrote:
Hi Doru,
This is fantastic.
I tried, but I got some error. Here is what I did:
~/Dropbox/Document> git clone git@github.com:girba/jdt2famix.git Cloning into 'jdt2famix'... remote: Counting objects: 2044, done. remote: Compressing objects: 100% (20/20), done. remote: Total 2044 (delta 6), reused 0 (delta 0), pack-reused 2024 Receiving objects: 100% (2044/2044), 1.45 MiB | 54.00 KiB/s, done. Resolving deltas: 100% (772/772), done. Checking connectivity... done. ~/Dropbox/Document> cd jdt2famix/ ~/Dropbox/Document/jdt2famix> ./release.sh ./release.sh: line 11: mvn: command not found cp: ./target/jdt2famix*.jar: No such file or directory ./release.sh: line 15: mvn: command not found ~/Dropbox/Document/jdt2famix> -=-=-=-=-=-=-=-=
What are the prerequisites? I see you use the “mvn”? Is it Meaven? How to install it?
Alexandre
On Jul 19, 2016, at 3:41 PM, Tudor Girba tudor@tudorgirba.com wrote:
Hi,
I am happy to announce that I now obtained a reasonable first beta stage of a standalone jdt2famix Java importer. This is implemented in Java, it works from the command line and has a similar structure to VerveineJ (the previous solution relied on JNIPort, but that did not scale well due to 32bits and needs rethinking). It is based on FameJava and JDT, and it is available under EPL2. The model is a new Famix version generated out of the Pharo meta-descriptions. To this end, I extended a bit the tool support around Fame and I will follow up with some details one that.
Here is the repository including some basic info: https://github.com/girba/jdt2famix
The importer was created through fine-grained tests, there are some 100 of them right now, and the coverage of the importer is more than 93%.
However, there are still things to do:
- finish the coverage of the imported entities (see below).
- improve the error handling. As Java has a ton of edge cases, it would be great if you would use it to parse your systems and report possible errors. We would then manufacture test cases out of those.
- check the semantics of the produced data (possibly by comparing with VerveineJ).
- find a better way to package the application.
- integrate in Moose with one click. Ideally, even downloading the application should be doable directly from Moose. The goal here is to make jdt2famix part of the Moose 6 release.
As a deadline, I am targeting August 1 for a beta version, and August 10 for a Moose 6.0 release.
Please let me know what you think, and most importantly please give it a try and provide feedback.
Here is a detailed list of what works and what is left to do: ✓Namespace ✓Type ✓Type without binding ✓Inheritance without binding ✓Interface ✓Parameterizable Class ✓ParameterizedType ✓Method ✓Constructor ✓Visibility (public, private, protected, package) ✓Parameter ✓Method signature ✓Local variable ✓Attribute ✓Anonymous Class ✓Anonymous Class with Parameterized Type ✓Invocation ✓Super invocation ✓Constructor Invocation ✓Super constructor invocation ✓Class instantiation ✓Class initializer ✓Invocation receiver ✓Field read access in invocation receiver ✓Field read access in invocation parameter ✓Field read access in class instantiation ✓Field read access in assignment ✓Field read access in super invocation parameter ✓Field write access in assignment ✓Local write access in assignment ✓Local read access in invocation receiver ✓Local read access in invocation parameter ✓Local read access in super invocation parameter ✓Local read access in super constructor parameter ✓Read access through return ✓Read accesses in: do, while, if, for, switch, enhanced for, conditional (?:) ✓Read access in synchronized ✓Attribute initializer ✓Read access in attribute initializer ✓Read access to qualified enum value ✓Read access to qualified attribute ✓Parentheses ✓Enum ✓EnumValue ✓Array types [] ✓AnnotationType ✓AnnotationType attributes ✓AnnotationInstance for types ☐AnnotationInstance for attributes ☐AnnotationInstance for methods ☐AnnotationInstance for parameters ☐Generic Type in Method scope ☐Class reference ☐Inner Class ☐Wildcard types <?> ☐ThrownException ☐CaughtException ☐DeclaredException ☐SourceAnchor ☐Array Access ☐Comments ☐Implicit variables ☐Lambda variables
Cheers, Doru
-- www.tudorgirba.com www.feenk.com
"One cannot do more than one can do."
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
-- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
-- www.tudorgirba.com www.feenk.com
"There are no old things, there are only old ways of looking at them."
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
-- www.tudorgirba.com www.feenk.com
"In a world where everything is moving ever faster, one might have better chances to win by moving slower."
-- www.tudorgirba.com www.feenk.com
"Things happen when they happen, not when you talk about them happening."
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
Hi Doru
Here are the sources I parsed: https://dl.dropboxusercontent.com/u/49837227/ArgoUML.zip https://dl.dropboxusercontent.com/u/49837227/ArgoUML.zip
At the time of the error I run the script from within the src folder. I tried afterwards in the parent folder, where both src and lib are, and it worked. It was also fast.
Cheers Ricky
On 20 Jul 2016, at 12:40, Tudor Girba tudor@tudorgirba.com wrote:
Hi Ricky,
Great. Thanks. That is what I am looking for.
I also parsed a version of ArgoUML, and it worked. So, it must be an edge case that is sensitive to the exact code you chose.
Could you tell me how to get the exact sources that you parsed? Also, did you get libraries as well?
Cheers, Doru
On Jul 20, 2016, at 12:32 AM, Richard Wettel wettel@gmail.com wrote:
Hi Doru
I tried to parse ArgoUML (what else, right?) and got the following exception:
Exception in thread "main" java.lang.NullPointerException at com.feenk.jdt2famix.injava.InJavaImporter.ensureTypeFromTypeBinding(InJavaImporter.java:181) at com.feenk.jdt2famix.injava.InJavaImporter.ensureMethodFromMethodBinding(InJavaImporter.java:358) at com.feenk.jdt2famix.injava.InJavaImporter.createInvocationFromMethodBinding(InJavaImporter.java:600) at com.feenk.jdt2famix.injava.AstVisitor.visit(AstVisitor.java:325) at org.eclipse.jdt.core.dom.ClassInstanceCreation.accept0(ClassInstanceCreation.java:302) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:2759) at org.eclipse.jdt.core.dom.VariableDeclarationFragment.accept0(VariableDeclarationFragment.java:263) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782) at org.eclipse.jdt.core.dom.VariableDeclarationStatement.accept0(VariableDeclarationStatement.java:267) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782) at org.eclipse.jdt.core.dom.Block.accept0(Block.java:137) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:2759) at org.eclipse.jdt.core.dom.MethodDeclaration.accept0(MethodDeclaration.java:635) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782) at org.eclipse.jdt.core.dom.TypeDeclaration.accept0(TypeDeclaration.java:470) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782) at org.eclipse.jdt.core.dom.CompilationUnit.accept0(CompilationUnit.java:212) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at com.feenk.jdt2famix.injava.AstRequestor.acceptAST(AstRequestor.java:17) at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:1029) at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:636) at org.eclipse.jdt.core.dom.ASTParser.createASTs(ASTParser.java:990) at com.feenk.jdt2famix.Importer.run(Importer.java:28) at com.feenk.jdt2famix.injava.Main.main(Main.java:25)
I have jdk1.8.0_91 and apache-maven-3.3.9 on my Mac, running on El Capitan.
Cheers Ricky
On 19 Jul 2016, at 21:20, Tudor Girba tudor@tudorgirba.com wrote:
Ah, indeed. You need Maven: https://maven.apache.org/download.cgi
I updated the instructions as well.
Let me know if it works.
Cheers, Doru
On Jul 19, 2016, at 9:44 AM, Alexandre Bergel alexandre.bergel@me.com wrote:
Hi Doru,
This is fantastic.
I tried, but I got some error. Here is what I did:
~/Dropbox/Document> git clone git@github.com:girba/jdt2famix.git Cloning into 'jdt2famix'... remote: Counting objects: 2044, done. remote: Compressing objects: 100% (20/20), done. remote: Total 2044 (delta 6), reused 0 (delta 0), pack-reused 2024 Receiving objects: 100% (2044/2044), 1.45 MiB | 54.00 KiB/s, done. Resolving deltas: 100% (772/772), done. Checking connectivity... done. ~/Dropbox/Document> cd jdt2famix/ ~/Dropbox/Document/jdt2famix> ./release.sh ./release.sh: line 11: mvn: command not found cp: ./target/jdt2famix*.jar: No such file or directory ./release.sh: line 15: mvn: command not found ~/Dropbox/Document/jdt2famix> -=-=-=-=-=-=-=-=
What are the prerequisites? I see you use the “mvn”? Is it Meaven? How to install it?
Alexandre
On Jul 19, 2016, at 3:41 PM, Tudor Girba tudor@tudorgirba.com wrote:
Hi,
I am happy to announce that I now obtained a reasonable first beta stage of a standalone jdt2famix Java importer. This is implemented in Java, it works from the command line and has a similar structure to VerveineJ (the previous solution relied on JNIPort, but that did not scale well due to 32bits and needs rethinking). It is based on FameJava and JDT, and it is available under EPL2. The model is a new Famix version generated out of the Pharo meta-descriptions. To this end, I extended a bit the tool support around Fame and I will follow up with some details one that.
Here is the repository including some basic info: https://github.com/girba/jdt2famix
The importer was created through fine-grained tests, there are some 100 of them right now, and the coverage of the importer is more than 93%.
However, there are still things to do:
- finish the coverage of the imported entities (see below).
- improve the error handling. As Java has a ton of edge cases, it would be great if you would use it to parse your systems and report possible errors. We would then manufacture test cases out of those.
- check the semantics of the produced data (possibly by comparing with VerveineJ).
- find a better way to package the application.
- integrate in Moose with one click. Ideally, even downloading the application should be doable directly from Moose. The goal here is to make jdt2famix part of the Moose 6 release.
As a deadline, I am targeting August 1 for a beta version, and August 10 for a Moose 6.0 release.
Please let me know what you think, and most importantly please give it a try and provide feedback.
Here is a detailed list of what works and what is left to do: ✓Namespace ✓Type ✓Type without binding ✓Inheritance without binding ✓Interface ✓Parameterizable Class ✓ParameterizedType ✓Method ✓Constructor ✓Visibility (public, private, protected, package) ✓Parameter ✓Method signature ✓Local variable ✓Attribute ✓Anonymous Class ✓Anonymous Class with Parameterized Type ✓Invocation ✓Super invocation ✓Constructor Invocation ✓Super constructor invocation ✓Class instantiation ✓Class initializer ✓Invocation receiver ✓Field read access in invocation receiver ✓Field read access in invocation parameter ✓Field read access in class instantiation ✓Field read access in assignment ✓Field read access in super invocation parameter ✓Field write access in assignment ✓Local write access in assignment ✓Local read access in invocation receiver ✓Local read access in invocation parameter ✓Local read access in super invocation parameter ✓Local read access in super constructor parameter ✓Read access through return ✓Read accesses in: do, while, if, for, switch, enhanced for, conditional (?:) ✓Read access in synchronized ✓Attribute initializer ✓Read access in attribute initializer ✓Read access to qualified enum value ✓Read access to qualified attribute ✓Parentheses ✓Enum ✓EnumValue ✓Array types [] ✓AnnotationType ✓AnnotationType attributes ✓AnnotationInstance for types ☐AnnotationInstance for attributes ☐AnnotationInstance for methods ☐AnnotationInstance for parameters ☐Generic Type in Method scope ☐Class reference ☐Inner Class ☐Wildcard types <?> ☐ThrownException ☐CaughtException ☐DeclaredException ☐SourceAnchor ☐Array Access ☐Comments ☐Implicit variables ☐Lambda variables
Cheers, Doru
-- www.tudorgirba.com www.feenk.com
"One cannot do more than one can do."
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
-- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
-- www.tudorgirba.com www.feenk.com
"There are no old things, there are only old ways of looking at them."
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
-- www.tudorgirba.com www.feenk.com
"In a world where everything is moving ever faster, one might have better chances to win by moving slower."
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
Great. I could reproduce this.
Thanks!
Doru
On Jul 20, 2016, at 6:53 AM, Richard Wettel wettel@gmail.com wrote:
Hi Doru
Here are the sources I parsed: https://dl.dropboxusercontent.com/u/49837227/ArgoUML.zip
At the time of the error I run the script from within the src folder. I tried afterwards in the parent folder, where both src and lib are, and it worked. It was also fast.
Cheers Ricky
On 20 Jul 2016, at 12:40, Tudor Girba tudor@tudorgirba.com wrote:
Hi Ricky,
Great. Thanks. That is what I am looking for.
I also parsed a version of ArgoUML, and it worked. So, it must be an edge case that is sensitive to the exact code you chose.
Could you tell me how to get the exact sources that you parsed? Also, did you get libraries as well?
Cheers, Doru
On Jul 20, 2016, at 12:32 AM, Richard Wettel wettel@gmail.com wrote:
Hi Doru
I tried to parse ArgoUML (what else, right?) and got the following exception:
Exception in thread "main" java.lang.NullPointerException at com.feenk.jdt2famix.injava.InJavaImporter.ensureTypeFromTypeBinding(InJavaImporter.java:181) at com.feenk.jdt2famix.injava.InJavaImporter.ensureMethodFromMethodBinding(InJavaImporter.java:358) at com.feenk.jdt2famix.injava.InJavaImporter.createInvocationFromMethodBinding(InJavaImporter.java:600) at com.feenk.jdt2famix.injava.AstVisitor.visit(AstVisitor.java:325) at org.eclipse.jdt.core.dom.ClassInstanceCreation.accept0(ClassInstanceCreation.java:302) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:2759) at org.eclipse.jdt.core.dom.VariableDeclarationFragment.accept0(VariableDeclarationFragment.java:263) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782) at org.eclipse.jdt.core.dom.VariableDeclarationStatement.accept0(VariableDeclarationStatement.java:267) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782) at org.eclipse.jdt.core.dom.Block.accept0(Block.java:137) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:2759) at org.eclipse.jdt.core.dom.MethodDeclaration.accept0(MethodDeclaration.java:635) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782) at org.eclipse.jdt.core.dom.TypeDeclaration.accept0(TypeDeclaration.java:470) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782) at org.eclipse.jdt.core.dom.CompilationUnit.accept0(CompilationUnit.java:212) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711) at com.feenk.jdt2famix.injava.AstRequestor.acceptAST(AstRequestor.java:17) at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:1029) at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:636) at org.eclipse.jdt.core.dom.ASTParser.createASTs(ASTParser.java:990) at com.feenk.jdt2famix.Importer.run(Importer.java:28) at com.feenk.jdt2famix.injava.Main.main(Main.java:25)
I have jdk1.8.0_91 and apache-maven-3.3.9 on my Mac, running on El Capitan.
Cheers Ricky
On 19 Jul 2016, at 21:20, Tudor Girba tudor@tudorgirba.com wrote:
Ah, indeed. You need Maven: https://maven.apache.org/download.cgi
I updated the instructions as well.
Let me know if it works.
Cheers, Doru
On Jul 19, 2016, at 9:44 AM, Alexandre Bergel alexandre.bergel@me.com wrote:
Hi Doru,
This is fantastic.
I tried, but I got some error. Here is what I did:
~/Dropbox/Document> git clone git@github.com:girba/jdt2famix.git Cloning into 'jdt2famix'... remote: Counting objects: 2044, done. remote: Compressing objects: 100% (20/20), done. remote: Total 2044 (delta 6), reused 0 (delta 0), pack-reused 2024 Receiving objects: 100% (2044/2044), 1.45 MiB | 54.00 KiB/s, done. Resolving deltas: 100% (772/772), done. Checking connectivity... done. ~/Dropbox/Document> cd jdt2famix/ ~/Dropbox/Document/jdt2famix> ./release.sh ./release.sh: line 11: mvn: command not found cp: ./target/jdt2famix*.jar: No such file or directory ./release.sh: line 15: mvn: command not found ~/Dropbox/Document/jdt2famix> -=-=-=-=-=-=-=-=
What are the prerequisites? I see you use the “mvn”? Is it Meaven? How to install it?
Alexandre
On Jul 19, 2016, at 3:41 PM, Tudor Girba tudor@tudorgirba.com wrote:
Hi,
I am happy to announce that I now obtained a reasonable first beta stage of a standalone jdt2famix Java importer. This is implemented in Java, it works from the command line and has a similar structure to VerveineJ (the previous solution relied on JNIPort, but that did not scale well due to 32bits and needs rethinking). It is based on FameJava and JDT, and it is available under EPL2. The model is a new Famix version generated out of the Pharo meta-descriptions. To this end, I extended a bit the tool support around Fame and I will follow up with some details one that.
Here is the repository including some basic info: https://github.com/girba/jdt2famix
The importer was created through fine-grained tests, there are some 100 of them right now, and the coverage of the importer is more than 93%.
However, there are still things to do:
- finish the coverage of the imported entities (see below).
- improve the error handling. As Java has a ton of edge cases, it would be great if you would use it to parse your systems and report possible errors. We would then manufacture test cases out of those.
- check the semantics of the produced data (possibly by comparing with VerveineJ).
- find a better way to package the application.
- integrate in Moose with one click. Ideally, even downloading the application should be doable directly from Moose. The goal here is to make jdt2famix part of the Moose 6 release.
As a deadline, I am targeting August 1 for a beta version, and August 10 for a Moose 6.0 release.
Please let me know what you think, and most importantly please give it a try and provide feedback.
Here is a detailed list of what works and what is left to do: ✓Namespace ✓Type ✓Type without binding ✓Inheritance without binding ✓Interface ✓Parameterizable Class ✓ParameterizedType ✓Method ✓Constructor ✓Visibility (public, private, protected, package) ✓Parameter ✓Method signature ✓Local variable ✓Attribute ✓Anonymous Class ✓Anonymous Class with Parameterized Type ✓Invocation ✓Super invocation ✓Constructor Invocation ✓Super constructor invocation ✓Class instantiation ✓Class initializer ✓Invocation receiver ✓Field read access in invocation receiver ✓Field read access in invocation parameter ✓Field read access in class instantiation ✓Field read access in assignment ✓Field read access in super invocation parameter ✓Field write access in assignment ✓Local write access in assignment ✓Local read access in invocation receiver ✓Local read access in invocation parameter ✓Local read access in super invocation parameter ✓Local read access in super constructor parameter ✓Read access through return ✓Read accesses in: do, while, if, for, switch, enhanced for, conditional (?:) ✓Read access in synchronized ✓Attribute initializer ✓Read access in attribute initializer ✓Read access to qualified enum value ✓Read access to qualified attribute ✓Parentheses ✓Enum ✓EnumValue ✓Array types [] ✓AnnotationType ✓AnnotationType attributes ✓AnnotationInstance for types ☐AnnotationInstance for attributes ☐AnnotationInstance for methods ☐AnnotationInstance for parameters ☐Generic Type in Method scope ☐Class reference ☐Inner Class ☐Wildcard types <?> ☐ThrownException ☐CaughtException ☐DeclaredException ☐SourceAnchor ☐Array Access ☐Comments ☐Implicit variables ☐Lambda variables
Cheers, Doru
-- www.tudorgirba.com www.feenk.com
"One cannot do more than one can do."
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
-- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
-- www.tudorgirba.com www.feenk.com
"There are no old things, there are only old ways of looking at them."
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
-- www.tudorgirba.com www.feenk.com
"In a world where everything is moving ever faster, one might have better chances to win by moving slower."
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
-- www.tudorgirba.com www.feenk.com
"In a world where everything is moving ever faster, one might have better chances to win by moving slower."
Also you can do
brew install maven
If you are using homebrew
Uko
Sent from my iPhone
On 19 Jul 2016, at 17:44, Alexandre Bergel alexandre.bergel@me.com wrote:
Hi Doru,
This is fantastic.
I tried, but I got some error. Here is what I did:
~/Dropbox/Document> git clone git@github.com:girba/jdt2famix.git Cloning into 'jdt2famix'... remote: Counting objects: 2044, done. remote: Compressing objects: 100% (20/20), done. remote: Total 2044 (delta 6), reused 0 (delta 0), pack-reused 2024 Receiving objects: 100% (2044/2044), 1.45 MiB | 54.00 KiB/s, done. Resolving deltas: 100% (772/772), done. Checking connectivity... done. ~/Dropbox/Document> cd jdt2famix/ ~/Dropbox/Document/jdt2famix> ./release.sh ./release.sh: line 11: mvn: command not found cp: ./target/jdt2famix*.jar: No such file or directory ./release.sh: line 15: mvn: command not found ~/Dropbox/Document/jdt2famix> -=-=-=-=-=-=-=-=
What are the prerequisites? I see you use the “mvn”? Is it Meaven? How to install it?
Alexandre
On Jul 19, 2016, at 3:41 PM, Tudor Girba tudor@tudorgirba.com wrote:
Hi,
I am happy to announce that I now obtained a reasonable first beta stage of a standalone jdt2famix Java importer. This is implemented in Java, it works from the command line and has a similar structure to VerveineJ (the previous solution relied on JNIPort, but that did not scale well due to 32bits and needs rethinking). It is based on FameJava and JDT, and it is available under EPL2. The model is a new Famix version generated out of the Pharo meta-descriptions. To this end, I extended a bit the tool support around Fame and I will follow up with some details one that.
Here is the repository including some basic info: https://github.com/girba/jdt2famix
The importer was created through fine-grained tests, there are some 100 of them right now, and the coverage of the importer is more than 93%.
However, there are still things to do:
- finish the coverage of the imported entities (see below).
- improve the error handling. As Java has a ton of edge cases, it would be great if you would use it to parse your systems and report possible errors. We would then manufacture test cases out of those.
- check the semantics of the produced data (possibly by comparing with VerveineJ).
- find a better way to package the application.
- integrate in Moose with one click. Ideally, even downloading the application should be doable directly from Moose. The goal here is to make jdt2famix part of the Moose 6 release.
As a deadline, I am targeting August 1 for a beta version, and August 10 for a Moose 6.0 release.
Please let me know what you think, and most importantly please give it a try and provide feedback.
Here is a detailed list of what works and what is left to do: ✓Namespace ✓Type ✓Type without binding ✓Inheritance without binding ✓Interface ✓Parameterizable Class ✓ParameterizedType ✓Method ✓Constructor ✓Visibility (public, private, protected, package) ✓Parameter ✓Method signature ✓Local variable ✓Attribute ✓Anonymous Class ✓Anonymous Class with Parameterized Type ✓Invocation ✓Super invocation ✓Constructor Invocation ✓Super constructor invocation ✓Class instantiation ✓Class initializer ✓Invocation receiver ✓Field read access in invocation receiver ✓Field read access in invocation parameter ✓Field read access in class instantiation ✓Field read access in assignment ✓Field read access in super invocation parameter ✓Field write access in assignment ✓Local write access in assignment ✓Local read access in invocation receiver ✓Local read access in invocation parameter ✓Local read access in super invocation parameter ✓Local read access in super constructor parameter ✓Read access through return ✓Read accesses in: do, while, if, for, switch, enhanced for, conditional (?:) ✓Read access in synchronized ✓Attribute initializer ✓Read access in attribute initializer ✓Read access to qualified enum value ✓Read access to qualified attribute ✓Parentheses ✓Enum ✓EnumValue ✓Array types [] ✓AnnotationType ✓AnnotationType attributes ✓AnnotationInstance for types ☐AnnotationInstance for attributes ☐AnnotationInstance for methods ☐AnnotationInstance for parameters ☐Generic Type in Method scope ☐Class reference ☐Inner Class ☐Wildcard types <?> ☐ThrownException ☐CaughtException ☐DeclaredException ☐SourceAnchor ☐Array Access ☐Comments ☐Implicit variables ☐Lambda variables
Cheers, Doru
-- www.tudorgirba.com www.feenk.com
"One cannot do more than one can do."
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
-- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
Works Great! @ Doru: maybe you can add the brew command to install maven on the website
I was able to produce the MSE files
This is fantastic!
Alexandre
On Jul 20, 2016, at 8:37 AM, Yuriy Tymchuk yuriy.tymchuk@me.com wrote:
Also you can do
brew install maven
If you are using homebrew
Uko
Sent from my iPhone
On 19 Jul 2016, at 17:44, Alexandre Bergel alexandre.bergel@me.com wrote:
Hi Doru,
This is fantastic.
I tried, but I got some error. Here is what I did:
~/Dropbox/Document> git clone git@github.com:girba/jdt2famix.git Cloning into 'jdt2famix'... remote: Counting objects: 2044, done. remote: Compressing objects: 100% (20/20), done. remote: Total 2044 (delta 6), reused 0 (delta 0), pack-reused 2024 Receiving objects: 100% (2044/2044), 1.45 MiB | 54.00 KiB/s, done. Resolving deltas: 100% (772/772), done. Checking connectivity... done. ~/Dropbox/Document> cd jdt2famix/ ~/Dropbox/Document/jdt2famix> ./release.sh ./release.sh: line 11: mvn: command not found cp: ./target/jdt2famix*.jar: No such file or directory ./release.sh: line 15: mvn: command not found ~/Dropbox/Document/jdt2famix> -=-=-=-=-=-=-=-=
What are the prerequisites? I see you use the “mvn”? Is it Meaven? How to install it?
Alexandre
On Jul 19, 2016, at 3:41 PM, Tudor Girba tudor@tudorgirba.com wrote:
Hi,
I am happy to announce that I now obtained a reasonable first beta stage of a standalone jdt2famix Java importer. This is implemented in Java, it works from the command line and has a similar structure to VerveineJ (the previous solution relied on JNIPort, but that did not scale well due to 32bits and needs rethinking). It is based on FameJava and JDT, and it is available under EPL2. The model is a new Famix version generated out of the Pharo meta-descriptions. To this end, I extended a bit the tool support around Fame and I will follow up with some details one that.
Here is the repository including some basic info: https://github.com/girba/jdt2famix
The importer was created through fine-grained tests, there are some 100 of them right now, and the coverage of the importer is more than 93%.
However, there are still things to do:
- finish the coverage of the imported entities (see below).
- improve the error handling. As Java has a ton of edge cases, it would be great if you would use it to parse your systems and report possible errors. We would then manufacture test cases out of those.
- check the semantics of the produced data (possibly by comparing with VerveineJ).
- find a better way to package the application.
- integrate in Moose with one click. Ideally, even downloading the application should be doable directly from Moose. The goal here is to make jdt2famix part of the Moose 6 release.
As a deadline, I am targeting August 1 for a beta version, and August 10 for a Moose 6.0 release.
Please let me know what you think, and most importantly please give it a try and provide feedback.
Here is a detailed list of what works and what is left to do: ✓Namespace ✓Type ✓Type without binding ✓Inheritance without binding ✓Interface ✓Parameterizable Class ✓ParameterizedType ✓Method ✓Constructor ✓Visibility (public, private, protected, package) ✓Parameter ✓Method signature ✓Local variable ✓Attribute ✓Anonymous Class ✓Anonymous Class with Parameterized Type ✓Invocation ✓Super invocation ✓Constructor Invocation ✓Super constructor invocation ✓Class instantiation ✓Class initializer ✓Invocation receiver ✓Field read access in invocation receiver ✓Field read access in invocation parameter ✓Field read access in class instantiation ✓Field read access in assignment ✓Field read access in super invocation parameter ✓Field write access in assignment ✓Local write access in assignment ✓Local read access in invocation receiver ✓Local read access in invocation parameter ✓Local read access in super invocation parameter ✓Local read access in super constructor parameter ✓Read access through return ✓Read accesses in: do, while, if, for, switch, enhanced for, conditional (?:) ✓Read access in synchronized ✓Attribute initializer ✓Read access in attribute initializer ✓Read access to qualified enum value ✓Read access to qualified attribute ✓Parentheses ✓Enum ✓EnumValue ✓Array types [] ✓AnnotationType ✓AnnotationType attributes ✓AnnotationInstance for types ☐AnnotationInstance for attributes ☐AnnotationInstance for methods ☐AnnotationInstance for parameters ☐Generic Type in Method scope ☐Class reference ☐Inner Class ☐Wildcard types <?> ☐ThrownException ☐CaughtException ☐DeclaredException ☐SourceAnchor ☐Array Access ☐Comments ☐Implicit variables ☐Lambda variables
Cheers, Doru
-- www.tudorgirba.com www.feenk.com
"One cannot do more than one can do."
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
-- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
Hi,
Thanks.
Now, we need to also look at the quality of the produced models. So, if you notice that something is not quite right (maybe there is missing or too much information), please let me know.
Cheers, Doru
On Jul 20, 2016, at 2:13 AM, Alexandre Bergel alexandre.bergel@me.com wrote:
Works Great! @ Doru: maybe you can add the brew command to install maven on the website
I was able to produce the MSE files
This is fantastic!
Alexandre
On Jul 20, 2016, at 8:37 AM, Yuriy Tymchuk yuriy.tymchuk@me.com wrote:
Also you can do
brew install maven
If you are using homebrew
Uko
Sent from my iPhone
On 19 Jul 2016, at 17:44, Alexandre Bergel alexandre.bergel@me.com wrote:
Hi Doru,
This is fantastic.
I tried, but I got some error. Here is what I did:
~/Dropbox/Document> git clone git@github.com:girba/jdt2famix.git Cloning into 'jdt2famix'... remote: Counting objects: 2044, done. remote: Compressing objects: 100% (20/20), done. remote: Total 2044 (delta 6), reused 0 (delta 0), pack-reused 2024 Receiving objects: 100% (2044/2044), 1.45 MiB | 54.00 KiB/s, done. Resolving deltas: 100% (772/772), done. Checking connectivity... done. ~/Dropbox/Document> cd jdt2famix/ ~/Dropbox/Document/jdt2famix> ./release.sh ./release.sh: line 11: mvn: command not found cp: ./target/jdt2famix*.jar: No such file or directory ./release.sh: line 15: mvn: command not found ~/Dropbox/Document/jdt2famix> -=-=-=-=-=-=-=-=
What are the prerequisites? I see you use the “mvn”? Is it Meaven? How to install it?
Alexandre
On Jul 19, 2016, at 3:41 PM, Tudor Girba tudor@tudorgirba.com wrote:
Hi,
I am happy to announce that I now obtained a reasonable first beta stage of a standalone jdt2famix Java importer. This is implemented in Java, it works from the command line and has a similar structure to VerveineJ (the previous solution relied on JNIPort, but that did not scale well due to 32bits and needs rethinking). It is based on FameJava and JDT, and it is available under EPL2. The model is a new Famix version generated out of the Pharo meta-descriptions. To this end, I extended a bit the tool support around Fame and I will follow up with some details one that.
Here is the repository including some basic info: https://github.com/girba/jdt2famix
The importer was created through fine-grained tests, there are some 100 of them right now, and the coverage of the importer is more than 93%.
However, there are still things to do:
- finish the coverage of the imported entities (see below).
- improve the error handling. As Java has a ton of edge cases, it would be great if you would use it to parse your systems and report possible errors. We would then manufacture test cases out of those.
- check the semantics of the produced data (possibly by comparing with VerveineJ).
- find a better way to package the application.
- integrate in Moose with one click. Ideally, even downloading the application should be doable directly from Moose. The goal here is to make jdt2famix part of the Moose 6 release.
As a deadline, I am targeting August 1 for a beta version, and August 10 for a Moose 6.0 release.
Please let me know what you think, and most importantly please give it a try and provide feedback.
Here is a detailed list of what works and what is left to do: ✓Namespace ✓Type ✓Type without binding ✓Inheritance without binding ✓Interface ✓Parameterizable Class ✓ParameterizedType ✓Method ✓Constructor ✓Visibility (public, private, protected, package) ✓Parameter ✓Method signature ✓Local variable ✓Attribute ✓Anonymous Class ✓Anonymous Class with Parameterized Type ✓Invocation ✓Super invocation ✓Constructor Invocation ✓Super constructor invocation ✓Class instantiation ✓Class initializer ✓Invocation receiver ✓Field read access in invocation receiver ✓Field read access in invocation parameter ✓Field read access in class instantiation ✓Field read access in assignment ✓Field read access in super invocation parameter ✓Field write access in assignment ✓Local write access in assignment ✓Local read access in invocation receiver ✓Local read access in invocation parameter ✓Local read access in super invocation parameter ✓Local read access in super constructor parameter ✓Read access through return ✓Read accesses in: do, while, if, for, switch, enhanced for, conditional (?:) ✓Read access in synchronized ✓Attribute initializer ✓Read access in attribute initializer ✓Read access to qualified enum value ✓Read access to qualified attribute ✓Parentheses ✓Enum ✓EnumValue ✓Array types [] ✓AnnotationType ✓AnnotationType attributes ✓AnnotationInstance for types ☐AnnotationInstance for attributes ☐AnnotationInstance for methods ☐AnnotationInstance for parameters ☐Generic Type in Method scope ☐Class reference ☐Inner Class ☐Wildcard types <?> ☐ThrownException ☐CaughtException ☐DeclaredException ☐SourceAnchor ☐Array Access ☐Comments ☐Implicit variables ☐Lambda variables
Cheers, Doru
-- www.tudorgirba.com www.feenk.com
"One cannot do more than one can do."
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
-- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
-- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
-- www.tudorgirba.com www.feenk.com
"Reasonable is what we are accustomed with."
very nice
I will look at it when I come back from vacation
nicolas
On 19/07/2016 15:41, Tudor Girba wrote:
Hi,
I am happy to announce that I now obtained a reasonable first beta stage of a standalone jdt2famix Java importer. This is implemented in Java, it works from the command line and has a similar structure to VerveineJ (the previous solution relied on JNIPort, but that did not scale well due to 32bits and needs rethinking). It is based on FameJava and JDT, and it is available under EPL2. The model is a new Famix version generated out of the Pharo meta-descriptions. To this end, I extended a bit the tool support around Fame and I will follow up with some details one that.
Here is the repository including some basic info: https://github.com/girba/jdt2famix
The importer was created through fine-grained tests, there are some 100 of them right now, and the coverage of the importer is more than 93%.
However, there are still things to do:
- finish the coverage of the imported entities (see below).
- improve the error handling. As Java has a ton of edge cases, it would be great if you would use it to parse your systems and report possible errors. We would then manufacture test cases out of those.
- check the semantics of the produced data (possibly by comparing with VerveineJ).
- find a better way to package the application.
- integrate in Moose with one click. Ideally, even downloading the application should be doable directly from Moose. The goal here is to make jdt2famix part of the Moose 6 release.
As a deadline, I am targeting August 1 for a beta version, and August 10 for a Moose 6.0 release.
Please let me know what you think, and most importantly please give it a try and provide feedback.
Here is a detailed list of what works and what is left to do: ✓Namespace ✓Type ✓Type without binding ✓Inheritance without binding ✓Interface ✓Parameterizable Class ✓ParameterizedType ✓Method ✓Constructor ✓Visibility (public, private, protected, package) ✓Parameter ✓Method signature ✓Local variable ✓Attribute ✓Anonymous Class ✓Anonymous Class with Parameterized Type ✓Invocation ✓Super invocation ✓Constructor Invocation ✓Super constructor invocation ✓Class instantiation ✓Class initializer ✓Invocation receiver ✓Field read access in invocation receiver ✓Field read access in invocation parameter ✓Field read access in class instantiation ✓Field read access in assignment ✓Field read access in super invocation parameter ✓Field write access in assignment ✓Local write access in assignment ✓Local read access in invocation receiver ✓Local read access in invocation parameter ✓Local read access in super invocation parameter ✓Local read access in super constructor parameter ✓Read access through return ✓Read accesses in: do, while, if, for, switch, enhanced for, conditional (?:) ✓Read access in synchronized ✓Attribute initializer ✓Read access in attribute initializer ✓Read access to qualified enum value ✓Read access to qualified attribute ✓Parentheses ✓Enum ✓EnumValue ✓Array types [] ✓AnnotationType ✓AnnotationType attributes ✓AnnotationInstance for types ☐AnnotationInstance for attributes ☐AnnotationInstance for methods ☐AnnotationInstance for parameters ☐Generic Type in Method scope ☐Class reference ☐Inner Class ☐Wildcard types <?> ☐ThrownException ☐CaughtException ☐DeclaredException ☐SourceAnchor ☐Array Access ☐Comments ☐Implicit variables ☐Lambda variables
Cheers, Doru
-- www.tudorgirba.com www.feenk.com
"One cannot do more than one can do."
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
Well done.
This is a failure of our system that blocked us to release VerveineJ as open-source: I asked continuously
for about 2 years and I will never get trapped like that in the future.
We will contribute to jdt2famix and kill verveineJ. I will encourage Nicolas to do it.
Stef
Le 19/7/16 à 15:41, Tudor Girba a écrit :
Hi,
I am happy to announce that I now obtained a reasonable first beta stage of a standalone jdt2famix Java importer. This is implemented in Java, it works from the command line and has a similar structure to VerveineJ (the previous solution relied on JNIPort, but that did not scale well due to 32bits and needs rethinking). It is based on FameJava and JDT, and it is available under EPL2. The model is a new Famix version generated out of the Pharo meta-descriptions. To this end, I extended a bit the tool support around Fame and I will follow up with some details one that.
Here is the repository including some basic info: https://github.com/girba/jdt2famix
The importer was created through fine-grained tests, there are some 100 of them right now, and the coverage of the importer is more than 93%.
However, there are still things to do:
- finish the coverage of the imported entities (see below).
- improve the error handling. As Java has a ton of edge cases, it would be great if you would use it to parse your systems and report possible errors. We would then manufacture test cases out of those.
- check the semantics of the produced data (possibly by comparing with VerveineJ).
- find a better way to package the application.
- integrate in Moose with one click. Ideally, even downloading the application should be doable directly from Moose. The goal here is to make jdt2famix part of the Moose 6 release.
As a deadline, I am targeting August 1 for a beta version, and August 10 for a Moose 6.0 release.
Please let me know what you think, and most importantly please give it a try and provide feedback.
Here is a detailed list of what works and what is left to do: ✓Namespace ✓Type ✓Type without binding ✓Inheritance without binding ✓Interface ✓Parameterizable Class ✓ParameterizedType ✓Method ✓Constructor ✓Visibility (public, private, protected, package) ✓Parameter ✓Method signature ✓Local variable ✓Attribute ✓Anonymous Class ✓Anonymous Class with Parameterized Type ✓Invocation ✓Super invocation ✓Constructor Invocation ✓Super constructor invocation ✓Class instantiation ✓Class initializer ✓Invocation receiver ✓Field read access in invocation receiver ✓Field read access in invocation parameter ✓Field read access in class instantiation ✓Field read access in assignment ✓Field read access in super invocation parameter ✓Field write access in assignment ✓Local write access in assignment ✓Local read access in invocation receiver ✓Local read access in invocation parameter ✓Local read access in super invocation parameter ✓Local read access in super constructor parameter ✓Read access through return ✓Read accesses in: do, while, if, for, switch, enhanced for, conditional (?:) ✓Read access in synchronized ✓Attribute initializer ✓Read access in attribute initializer ✓Read access to qualified enum value ✓Read access to qualified attribute ✓Parentheses ✓Enum ✓EnumValue ✓Array types [] ✓AnnotationType ✓AnnotationType attributes ✓AnnotationInstance for types ☐AnnotationInstance for attributes ☐AnnotationInstance for methods ☐AnnotationInstance for parameters ☐Generic Type in Method scope ☐Class reference ☐Inner Class ☐Wildcard types <?> ☐ThrownException ☐CaughtException ☐DeclaredException ☐SourceAnchor ☐Array Access ☐Comments ☐Implicit variables ☐Lambda variables
Cheers, Doru
-- www.tudorgirba.com www.feenk.com
"One cannot do more than one can do."
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
Thanks!
Doru
On Jul 24, 2016, at 10:44 PM, stepharo stepharo@free.fr wrote:
Well done.
This is a failure of our system that blocked us to release VerveineJ as open-source: I asked continuously
for about 2 years and I will never get trapped like that in the future.
We will contribute to jdt2famix and kill verveineJ. I will encourage Nicolas to do it.
Stef
Le 19/7/16 à 15:41, Tudor Girba a écrit :
Hi,
I am happy to announce that I now obtained a reasonable first beta stage of a standalone jdt2famix Java importer. This is implemented in Java, it works from the command line and has a similar structure to VerveineJ (the previous solution relied on JNIPort, but that did not scale well due to 32bits and needs rethinking). It is based on FameJava and JDT, and it is available under EPL2. The model is a new Famix version generated out of the Pharo meta-descriptions. To this end, I extended a bit the tool support around Fame and I will follow up with some details one that.
Here is the repository including some basic info: https://github.com/girba/jdt2famix
The importer was created through fine-grained tests, there are some 100 of them right now, and the coverage of the importer is more than 93%.
However, there are still things to do:
- finish the coverage of the imported entities (see below).
- improve the error handling. As Java has a ton of edge cases, it would be great if you would use it to parse your systems and report possible errors. We would then manufacture test cases out of those.
- check the semantics of the produced data (possibly by comparing with VerveineJ).
- find a better way to package the application.
- integrate in Moose with one click. Ideally, even downloading the application should be doable directly from Moose. The goal here is to make jdt2famix part of the Moose 6 release.
As a deadline, I am targeting August 1 for a beta version, and August 10 for a Moose 6.0 release.
Please let me know what you think, and most importantly please give it a try and provide feedback.
Here is a detailed list of what works and what is left to do: ✓Namespace ✓Type ✓Type without binding ✓Inheritance without binding ✓Interface ✓Parameterizable Class ✓ParameterizedType ✓Method ✓Constructor ✓Visibility (public, private, protected, package) ✓Parameter ✓Method signature ✓Local variable ✓Attribute ✓Anonymous Class ✓Anonymous Class with Parameterized Type ✓Invocation ✓Super invocation ✓Constructor Invocation ✓Super constructor invocation ✓Class instantiation ✓Class initializer ✓Invocation receiver ✓Field read access in invocation receiver ✓Field read access in invocation parameter ✓Field read access in class instantiation ✓Field read access in assignment ✓Field read access in super invocation parameter ✓Field write access in assignment ✓Local write access in assignment ✓Local read access in invocation receiver ✓Local read access in invocation parameter ✓Local read access in super invocation parameter ✓Local read access in super constructor parameter ✓Read access through return ✓Read accesses in: do, while, if, for, switch, enhanced for, conditional (?:) ✓Read access in synchronized ✓Attribute initializer ✓Read access in attribute initializer ✓Read access to qualified enum value ✓Read access to qualified attribute ✓Parentheses ✓Enum ✓EnumValue ✓Array types [] ✓AnnotationType ✓AnnotationType attributes ✓AnnotationInstance for types ☐AnnotationInstance for attributes ☐AnnotationInstance for methods ☐AnnotationInstance for parameters ☐Generic Type in Method scope ☐Class reference ☐Inner Class ☐Wildcard types <?> ☐ThrownException ☐CaughtException ☐DeclaredException ☐SourceAnchor ☐Array Access ☐Comments ☐Implicit variables ☐Lambda variables
Cheers, Doru
-- www.tudorgirba.com www.feenk.com
"One cannot do more than one can do."
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
-- www.tudorgirba.com www.feenk.com
"It's not what we do that matters most, it's how we do it."
We are potentially 45 000 Euros on this trap. I imagine that I learned a real lesson.
Stef
Well done.
This is a failure of our system that blocked us to release VerveineJ as open-source: I asked continuously
for about 2 years and I will never get trapped like that in the future.
We will contribute to jdt2famix and kill verveineJ. I will encourage Nicolas to do it.
Stef
Le 19/7/16 à 15:41, Tudor Girba a écrit :
Hi,
I am happy to announce that I now obtained a reasonable first beta stage of a standalone jdt2famix Java importer. This is implemented in Java, it works from the command line and has a similar structure to VerveineJ (the previous solution relied on JNIPort, but that did not scale well due to 32bits and needs rethinking). It is based on FameJava and JDT, and it is available under EPL2. The model is a new Famix version generated out of the Pharo meta-descriptions. To this end, I extended a bit the tool support around Fame and I will follow up with some details one that.
Here is the repository including some basic info: https://github.com/girba/jdt2famix
The importer was created through fine-grained tests, there are some 100 of them right now, and the coverage of the importer is more than 93%.
However, there are still things to do:
- finish the coverage of the imported entities (see below).
- improve the error handling. As Java has a ton of edge cases, it
would be great if you would use it to parse your systems and report possible errors. We would then manufacture test cases out of those.
- check the semantics of the produced data (possibly by comparing
with VerveineJ).
- find a better way to package the application.
- integrate in Moose with one click. Ideally, even downloading the
application should be doable directly from Moose. The goal here is to make jdt2famix part of the Moose 6 release.
As a deadline, I am targeting August 1 for a beta version, and August 10 for a Moose 6.0 release.
Please let me know what you think, and most importantly please give it a try and provide feedback.
Here is a detailed list of what works and what is left to do: ✓Namespace ✓Type ✓Type without binding ✓Inheritance without binding ✓Interface ✓Parameterizable Class ✓ParameterizedType ✓Method ✓Constructor ✓Visibility (public, private, protected, package) ✓Parameter ✓Method signature ✓Local variable ✓Attribute ✓Anonymous Class ✓Anonymous Class with Parameterized Type ✓Invocation ✓Super invocation ✓Constructor Invocation ✓Super constructor invocation ✓Class instantiation ✓Class initializer ✓Invocation receiver ✓Field read access in invocation receiver ✓Field read access in invocation parameter ✓Field read access in class instantiation ✓Field read access in assignment ✓Field read access in super invocation parameter ✓Field write access in assignment ✓Local write access in assignment ✓Local read access in invocation receiver ✓Local read access in invocation parameter ✓Local read access in super invocation parameter ✓Local read access in super constructor parameter ✓Read access through return ✓Read accesses in: do, while, if, for, switch, enhanced for, conditional (?:) ✓Read access in synchronized ✓Attribute initializer ✓Read access in attribute initializer ✓Read access to qualified enum value ✓Read access to qualified attribute ✓Parentheses ✓Enum ✓EnumValue ✓Array types [] ✓AnnotationType ✓AnnotationType attributes ✓AnnotationInstance for types ☐AnnotationInstance for attributes ☐AnnotationInstance for methods ☐AnnotationInstance for parameters ☐Generic Type in Method scope ☐Class reference ☐Inner Class ☐Wildcard types <?> ☐ThrownException ☐CaughtException ☐DeclaredException ☐SourceAnchor ☐Array Access ☐Comments ☐Implicit variables ☐Lambda variables
Cheers, Doru
-- www.tudorgirba.com www.feenk.com
"One cannot do more than one can do."
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev
Moose-dev mailing list Moose-dev@list.inf.unibe.ch https://www.list.inf.unibe.ch/listinfo/moose-dev