[ann] jdt2famix standalone - alpha version

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

Re: [ann] jdt2famix standalone - alpha version

Tudor Girba-2
Hi,

I created test cases out of the ArgoUML and Guava systems.

There is still a problem with spring-core, but I did not figure it out yet.

Nevertheless, it would be great if you could try again and perhaps extend the analysis to other systems.

@Meinert: one thing that would be cool even if we do not have the all github would be to prepare a set of scripts like you offered for the Guava case. The thing is that for Guava, I tried to get the Maven dependencies and it did not work (at least not on the head of development). This means that I could not see what happens in the best case scenario when we have all libraries and we can resolve the dependencies.

What do you think?

Cheers,
Doru


> On Jul 20, 2016, at 2:57 PM, Tudor Girba <[hidden email]> wrote:
>
> Thanks! I will look at these.
>
> Cheers,
> Doru
>
>
>> On Jul 20, 2016, at 2:50 PM, Meinert Schwartau <[hidden email]> wrote:
>>
>> Wie analysing guava I had similar problems:
>>
>> git clone https://github.com/google/guava.git
>>
>> cd guava
>>
>>
>> mvn dependency:copy-dependencies -DoutputDirectory=dependencies -DoverWriteSnapshots=true -DoverWriteReleases=false``
>>
>> ../jdt2famix/release/jdt2famix.sh
>>
>> Then I got the following exception:
>>
>> jdt2famix - parsing started - /Users/meinert/Develop/moose_parser/guava
>>
>> jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/annotations/Beta.java
>>
>> jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/annotations/GwtCompatible.java
>>
>> jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/annotations/GwtIncompatible.java
>>
>> jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/annotations/package-info.java
>>
>> jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/annotations/VisibleForTesting.java
>>
>> jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/base/Absent.java
>>
>> jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/base/AbstractIterator.java
>>
>> jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/base/Ascii.java
>>
>> jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/base/CaseFormat.java
>>
>> Exception in thread "main" java.lang.ClassCastException: com.feenk.jdt2famix.model.famix.Enum cannot be cast to com.feenk.jdt2famix.model.famix.Method
>>
>> at com.feenk.jdt2famix.injava.InJavaImporter.createInvocationFromMethodBinding(InJavaImporter.java:598)
>>
>> at com.feenk.jdt2famix.injava.AstVisitor.visit(AstVisitor.java:293)
>>
>> at org.eclipse.jdt.core.dom.MethodInvocation.accept0(MethodInvocation.java:231)
>>
>> 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.EnumConstantDeclaration.accept0(EnumConstantDeclaration.java:260)
>>
>> 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.EnumDeclaration.accept0(EnumDeclaration.java:281)
>>
>> 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)
>>
>> Best regards
>>
>> Meinert
>>
>>
>> 2016-07-20 22:33 GMT+02:00 Meinert Schwartau <[hidden email]>:
>> As a first test I tried to import the spring framework from github (https://github.com/spring-projects/spring-framework) and got some exceptions e.g when I tried to import spring-core:
>>
>> jdt2famix - importing - /Users/meinert/Develop/moose_parser/spring-framework/spring-core/src/main/java/org/springframework/util/SocketUtils.java
>>
>> Exception in thread "main" java.lang.ClassCastException: org.eclipse.jdt.core.dom.EnumConstantDeclaration cannot be cast to org.eclipse.jdt.core.dom.ClassInstanceCreation
>>
>> at com.feenk.jdt2famix.injava.InJavaImporter.ensureTypeFromAnonymousDeclaration(InJavaImporter.java:303)
>>
>> at com.feenk.jdt2famix.injava.AstVisitor.visit(AstVisitor.java:119)
>>
>> at org.eclipse.jdt.core.dom.AnonymousClassDeclaration.accept0(AnonymousClassDeclaration.java:141)
>>
>> at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711)
>>
>>
>>
>>
>> ---------- Weitergeleitete Nachricht ----------
>> From: Tudor Girba <[hidden email]>
>> To: Moose-related development <[hidden email]>
>> Cc:
>> Date: Tue, 19 Jul 2016 07:41:05 -0600
>> Subject: [Moose-dev] [ann] jdt2famix standalone - alpha version
>>
>>
>> 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.
>>
>>
>>
>> I'll definitely give it a try. Because the number of people who'll try this out will be limited, to be sure that there aren't any bugs in this parser I suggest that we let it parse all java github projects. Then we could group the resulting errors (if there exists any ;-)) per error type, write tests for these edge cases and then fix them. If all of the java git hub projects can per parsed without errors then we could be really sure this parser can is at least to parse the edge cases without exceptions. For sure, we don't know if the result makes sense but at least it produces a result.
>>
>> Getting the download url for all java github projects is very easy:
>>
>>     https://api.github.com/search/repositories?q=language:Java
>>
>> Further optional parameters for this url for paging: {&page,per_page,sort,order}. Documentation for this request: https://developer.github.com/v3/search/#search-repositories
>>
>> How do you think about it?
>>
>> Best regards
>> Meinert
>>
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> Moose-dev mailing list
>> [hidden email]
>> https://www.list.inf.unibe.ch/listinfo/moose-dev
>
> --
> www.tudorgirba.com
> www.feenk.com
>
> "We are all great at making mistakes."
>
>
>
>
>
>
>
>

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

"One cannot do more than one can do."




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

Re: [ann] jdt2famix standalone - alpha version

Meinert Schwartau
Hi

Tudor, actually I'm on vacation the next two weeks. So I can help only after that unfortunately. Maybe as a first step we should just create a Project were everybody could add his failing scripts as pull request. 

Best regards 
Meinert

Am 22.07.2016 um 14:35 schrieb Tudor Girba <[hidden email]>:

Hi,

I created test cases out of the ArgoUML and Guava systems.

There is still a problem with spring-core, but I did not figure it out yet.

Nevertheless, it would be great if you could try again and perhaps extend the analysis to other systems.

@Meinert: one thing that would be cool even if we do not have the all github would be to prepare a set of scripts like you offered for the Guava case. The thing is that for Guava, I tried to get the Maven dependencies and it did not work (at least not on the head of development). This means that I could not see what happens in the best case scenario when we have all libraries and we can resolve the dependencies.

What do you think?

Cheers,
Doru


On Jul 20, 2016, at 2:57 PM, Tudor Girba <[hidden email]> wrote:

Thanks! I will look at these.

Cheers,
Doru


On Jul 20, 2016, at 2:50 PM, Meinert Schwartau <[hidden email]> wrote:

Wie analysing guava I had similar problems:

git clone https://github.com/google/guava.git

cd guava


mvn dependency:copy-dependencies -DoutputDirectory=dependencies -DoverWriteSnapshots=true -DoverWriteReleases=false``

../jdt2famix/release/jdt2famix.sh 

Then I got the following exception:

jdt2famix - parsing started - /Users/meinert/Develop/moose_parser/guava

jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/annotations/Beta.java

jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/annotations/GwtCompatible.java

jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/annotations/GwtIncompatible.java

jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/annotations/package-info.java

jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/annotations/VisibleForTesting.java

jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/base/Absent.java

jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/base/AbstractIterator.java

jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/base/Ascii.java

jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/base/CaseFormat.java

Exception in thread "main" java.lang.ClassCastException: com.feenk.jdt2famix.model.famix.Enum cannot be cast to com.feenk.jdt2famix.model.famix.Method

at com.feenk.jdt2famix.injava.InJavaImporter.createInvocationFromMethodBinding(InJavaImporter.java:598)

at com.feenk.jdt2famix.injava.AstVisitor.visit(AstVisitor.java:293)

at org.eclipse.jdt.core.dom.MethodInvocation.accept0(MethodInvocation.java:231)

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.EnumConstantDeclaration.accept0(EnumConstantDeclaration.java:260)

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.EnumDeclaration.accept0(EnumDeclaration.java:281)

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)

Best regards

Meinert


2016-07-20 22:33 GMT+02:00 Meinert Schwartau <[hidden email]>:
As a first test I tried to import the spring framework from github (https://github.com/spring-projects/spring-framework) and got some exceptions e.g when I tried to import spring-core:

jdt2famix - importing - /Users/meinert/Develop/moose_parser/spring-framework/spring-core/src/main/java/org/springframework/util/SocketUtils.java

Exception in thread "main" java.lang.ClassCastException: org.eclipse.jdt.core.dom.EnumConstantDeclaration cannot be cast to org.eclipse.jdt.core.dom.ClassInstanceCreation

at com.feenk.jdt2famix.injava.InJavaImporter.ensureTypeFromAnonymousDeclaration(InJavaImporter.java:303)

at com.feenk.jdt2famix.injava.AstVisitor.visit(AstVisitor.java:119)

at org.eclipse.jdt.core.dom.AnonymousClassDeclaration.accept0(AnonymousClassDeclaration.java:141)

at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711)




---------- Weitergeleitete Nachricht ----------
From: Tudor Girba <[hidden email]>
To: Moose-related development <[hidden email]>
Cc: 
Date: Tue, 19 Jul 2016 07:41:05 -0600
Subject: [Moose-dev] [ann] jdt2famix standalone - alpha version


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.



I'll definitely give it a try. Because the number of people who'll try this out will be limited, to be sure that there aren't any bugs in this parser I suggest that we let it parse all java github projects. Then we could group the resulting errors (if there exists any ;-)) per error type, write tests for these edge cases and then fix them. If all of the java git hub projects can per parsed without errors then we could be really sure this parser can is at least to parse the edge cases without exceptions. For sure, we don't know if the result makes sense but at least it produces a result.

Getting the download url for all java github projects is very easy:

  https://api.github.com/search/repositories?q=language:Java

Further optional parameters for this url for paging: {&page,per_page,sort,order}. Documentation for this request: https://developer.github.com/v3/search/#search-repositories

How do you think about it?

Best regards
Meinert







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

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

"We are all great at making mistakes."

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

"One cannot do more than one can do."





Am 22.07.2016 um 14:35 schrieb Tudor Girba <[hidden email]>:

Hi,

I created test cases out of the ArgoUML and Guava systems.

There is still a problem with spring-core, but I did not figure it out yet.

Nevertheless, it would be great if you could try again and perhaps extend the analysis to other systems.

@Meinert: one thing that would be cool even if we do not have the all github would be to prepare a set of scripts like you offered for the Guava case. The thing is that for Guava, I tried to get the Maven dependencies and it did not work (at least not on the head of development). This means that I could not see what happens in the best case scenario when we have all libraries and we can resolve the dependencies.

What do you think?

Cheers,
Doru


On Jul 20, 2016, at 2:57 PM, Tudor Girba <[hidden email]> wrote:

Thanks! I will look at these.

Cheers,
Doru


On Jul 20, 2016, at 2:50 PM, Meinert Schwartau <[hidden email]> wrote:

Wie analysing guava I had similar problems:

git clone https://github.com/google/guava.git

cd guava


mvn dependency:copy-dependencies -DoutputDirectory=dependencies -DoverWriteSnapshots=true -DoverWriteReleases=false``

../jdt2famix/release/jdt2famix.sh

Then I got the following exception:

jdt2famix - parsing started - /Users/meinert/Develop/moose_parser/guava

jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/annotations/Beta.java

jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/annotations/GwtCompatible.java

jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/annotations/GwtIncompatible.java

jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/annotations/package-info.java

jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/annotations/VisibleForTesting.java

jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/base/Absent.java

jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/base/AbstractIterator.java

jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/base/Ascii.java

jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/base/CaseFormat.java

Exception in thread "main" java.lang.ClassCastException: com.feenk.jdt2famix.model.famix.Enum cannot be cast to com.feenk.jdt2famix.model.famix.Method

at com.feenk.jdt2famix.injava.InJavaImporter.createInvocationFromMethodBinding(InJavaImporter.java:598)

at com.feenk.jdt2famix.injava.AstVisitor.visit(AstVisitor.java:293)

at org.eclipse.jdt.core.dom.MethodInvocation.accept0(MethodInvocation.java:231)

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.EnumConstantDeclaration.accept0(EnumConstantDeclaration.java:260)

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.EnumDeclaration.accept0(EnumDeclaration.java:281)

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)

Best regards

Meinert


2016-07-20 22:33 GMT+02:00 Meinert Schwartau <[hidden email]>:
As a first test I tried to import the spring framework from github (https://github.com/spring-projects/spring-framework) and got some exceptions e.g when I tried to import spring-core:

jdt2famix - importing - /Users/meinert/Develop/moose_parser/spring-framework/spring-core/src/main/java/org/springframework/util/SocketUtils.java

Exception in thread "main" java.lang.ClassCastException: org.eclipse.jdt.core.dom.EnumConstantDeclaration cannot be cast to org.eclipse.jdt.core.dom.ClassInstanceCreation

at com.feenk.jdt2famix.injava.InJavaImporter.ensureTypeFromAnonymousDeclaration(InJavaImporter.java:303)

at com.feenk.jdt2famix.injava.AstVisitor.visit(AstVisitor.java:119)

at org.eclipse.jdt.core.dom.AnonymousClassDeclaration.accept0(AnonymousClassDeclaration.java:141)

at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711)




---------- Weitergeleitete Nachricht ----------
From: Tudor Girba <[hidden email]>
To: Moose-related development <[hidden email]>
Cc:
Date: Tue, 19 Jul 2016 07:41:05 -0600
Subject: [Moose-dev] [ann] jdt2famix standalone - alpha version


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.



I'll definitely give it a try. Because the number of people who'll try this out will be limited, to be sure that there aren't any bugs in this parser I suggest that we let it parse all java github projects. Then we could group the resulting errors (if there exists any ;-)) per error type, write tests for these edge cases and then fix them. If all of the java git hub projects can per parsed without errors then we could be really sure this parser can is at least to parse the edge cases without exceptions. For sure, we don't know if the result makes sense but at least it produces a result.

Getting the download url for all java github projects is very easy:

   https://api.github.com/search/repositories?q=language:Java

Further optional parameters for this url for paging: {&page,per_page,sort,order}. Documentation for this request: https://developer.github.com/v3/search/#search-repositories

How do you think about it?

Best regards
Meinert







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

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

"We are all great at making mistakes."









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

"One cannot do more than one can do."






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

Re: [ann] jdt2famix standalone - alpha version

abergel
In reply to this post by Tudor Girba-2
This is great Doru!
Keep doing! This is very important.

Alexandre


> On Jul 20, 2016, at 4:57 PM, Tudor Girba <[hidden email]> wrote:
>
> Thanks! I will look at these.
>
> Cheers,
> Doru
>
>
>> On Jul 20, 2016, at 2:50 PM, Meinert Schwartau <[hidden email]> wrote:
>>
>> Wie analysing guava I had similar problems:
>>
>> git clone https://github.com/google/guava.git
>>
>> cd guava
>>
>>
>> mvn dependency:copy-dependencies -DoutputDirectory=dependencies -DoverWriteSnapshots=true -DoverWriteReleases=false``
>>
>> ../jdt2famix/release/jdt2famix.sh
>>
>> Then I got the following exception:
>>
>> jdt2famix - parsing started - /Users/meinert/Develop/moose_parser/guava
>>
>> jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/annotations/Beta.java
>>
>> jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/annotations/GwtCompatible.java
>>
>> jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/annotations/GwtIncompatible.java
>>
>> jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/annotations/package-info.java
>>
>> jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/annotations/VisibleForTesting.java
>>
>> jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/base/Absent.java
>>
>> jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/base/AbstractIterator.java
>>
>> jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/base/Ascii.java
>>
>> jdt2famix - importing - /Users/meinert/Develop/moose_parser/guava/guava/src/com/google/common/base/CaseFormat.java
>>
>> Exception in thread "main" java.lang.ClassCastException: com.feenk.jdt2famix.model.famix.Enum cannot be cast to com.feenk.jdt2famix.model.famix.Method
>>
>> at com.feenk.jdt2famix.injava.InJavaImporter.createInvocationFromMethodBinding(InJavaImporter.java:598)
>>
>> at com.feenk.jdt2famix.injava.AstVisitor.visit(AstVisitor.java:293)
>>
>> at org.eclipse.jdt.core.dom.MethodInvocation.accept0(MethodInvocation.java:231)
>>
>> 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.EnumConstantDeclaration.accept0(EnumConstantDeclaration.java:260)
>>
>> 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.EnumDeclaration.accept0(EnumDeclaration.java:281)
>>
>> 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)
>>
>> Best regards
>>
>> Meinert
>>
>>
>> 2016-07-20 22:33 GMT+02:00 Meinert Schwartau <[hidden email]>:
>> As a first test I tried to import the spring framework from github (https://github.com/spring-projects/spring-framework) and got some exceptions e.g when I tried to import spring-core:
>>
>> jdt2famix - importing - /Users/meinert/Develop/moose_parser/spring-framework/spring-core/src/main/java/org/springframework/util/SocketUtils.java
>>
>> Exception in thread "main" java.lang.ClassCastException: org.eclipse.jdt.core.dom.EnumConstantDeclaration cannot be cast to org.eclipse.jdt.core.dom.ClassInstanceCreation
>>
>> at com.feenk.jdt2famix.injava.InJavaImporter.ensureTypeFromAnonymousDeclaration(InJavaImporter.java:303)
>>
>> at com.feenk.jdt2famix.injava.AstVisitor.visit(AstVisitor.java:119)
>>
>> at org.eclipse.jdt.core.dom.AnonymousClassDeclaration.accept0(AnonymousClassDeclaration.java:141)
>>
>> at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711)
>>
>>
>>
>>
>> ---------- Weitergeleitete Nachricht ----------
>> From: Tudor Girba <[hidden email]>
>> To: Moose-related development <[hidden email]>
>> Cc:
>> Date: Tue, 19 Jul 2016 07:41:05 -0600
>> Subject: [Moose-dev] [ann] jdt2famix standalone - alpha version
>>
>>
>> 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.
>>
>>
>>
>> I'll definitely give it a try. Because the number of people who'll try this out will be limited, to be sure that there aren't any bugs in this parser I suggest that we let it parse all java github projects. Then we could group the resulting errors (if there exists any ;-)) per error type, write tests for these edge cases and then fix them. If all of the java git hub projects can per parsed without errors then we could be really sure this parser can is at least to parse the edge cases without exceptions. For sure, we don't know if the result makes sense but at least it produces a result.
>>
>> Getting the download url for all java github projects is very easy:
>>
>>     https://api.github.com/search/repositories?q=language:Java
>>
>> Further optional parameters for this url for paging: {&page,per_page,sort,order}. Documentation for this request: https://developer.github.com/v3/search/#search-repositories
>>
>> How do you think about it?
>>
>> Best regards
>> Meinert
>>
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> Moose-dev mailing list
>> [hidden email]
>> https://www.list.inf.unibe.ch/listinfo/moose-dev
>
> --
> www.tudorgirba.com
> www.feenk.com
>
> "We are all great at making mistakes."
>
>
>
>
>
>
>
>
> _______________________________________________
> Moose-dev mailing list
> [hidden email]
> https://www.list.inf.unibe.ch/listinfo/moose-dev

--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.



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

Re: [ann] jdt2famix standalone - alpha version

stepharo
In reply to this post by Tudor Girba-2
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
> [hidden email]
> https://www.list.inf.unibe.ch/listinfo/moose-dev

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

Re: [ann] jdt2famix standalone - alpha version

Tudor Girba-2
Thanks!

Doru


> On Jul 24, 2016, at 10:44 PM, stepharo <[hidden email]> 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
>> [hidden email]
>> https://www.list.inf.unibe.ch/listinfo/moose-dev
>
> _______________________________________________
> Moose-dev mailing list
> [hidden email]
> https://www.list.inf.unibe.ch/listinfo/moose-dev

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

"It's not what we do that matters most, it's how we do it."

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

Re: [ann] jdt2famix standalone - alpha version

stepharo
In reply to this post by stepharo
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
>> [hidden email]
>> https://www.list.inf.unibe.ch/listinfo/moose-dev
>
> _______________________________________________
> Moose-dev mailing list
> [hidden email]
> https://www.list.inf.unibe.ch/listinfo/moose-dev

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