Created
June 6, 2017 08:42
-
-
Save ftomassetti/f8a3fc024beaf8c1cb6598ecdd35dfad to your computer and use it in GitHub Desktop.
JSS240
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package Visitor; | |
import com.github.javaparser.ast.expr.LambdaExpr; | |
import com.github.javaparser.ast.visitor.VoidVisitorAdapter; | |
import com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade; | |
import com.github.javaparser.symbolsolver.model.typesystem.Type; | |
/** | |
* Created by ameya on 6/3/17. | |
*/ | |
public class FileVisitor extends VoidVisitorAdapter { | |
@Override | |
public void visit(LambdaExpr n, Object arg) { | |
System.out.println(n.getMetaModel().getTypeName()); | |
System.out.println("lambda"); | |
JavaParserFacade parser = (JavaParserFacade) arg; | |
boolean resolved = true; | |
try { | |
Type type = parser.getType(n, true); | |
System.out.println("solved : " + type.describe()); | |
} catch (Exception e) { | |
resolved = false; | |
System.out.println("unsolved : " + e.getMessage() ); | |
} | |
super.visit(n,arg); | |
} | |
} | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Visitor.FileVisitor; | |
import com.github.javaparser.JavaParser; | |
import com.github.javaparser.ast.CompilationUnit; | |
import com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade; | |
import com.github.javaparser.symbolsolver.model.declarations.MethodDeclaration; | |
import com.github.javaparser.symbolsolver.model.declarations.ReferenceTypeDeclaration; | |
import com.github.javaparser.symbolsolver.resolution.typesolvers.CombinedTypeSolver; | |
import com.github.javaparser.symbolsolver.resolution.typesolvers.JarTypeSolver; | |
import com.github.javaparser.symbolsolver.resolution.typesolvers.JavaParserTypeSolver; | |
import com.github.javaparser.symbolsolver.resolution.typesolvers.ReflectionTypeSolver; | |
import org.apache.commons.io.FileUtils; | |
import org.apache.commons.io.filefilter.DirectoryFileFilter; | |
import org.apache.commons.io.filefilter.RegexFileFilter; | |
import java.io.File; | |
import java.io.FileInputStream; | |
import java.io.FileNotFoundException; | |
import java.io.IOException; | |
import java.nio.file.Files; | |
import java.nio.file.Paths; | |
import java.util.List; | |
/** | |
* Created by ameya on 6/3/17. | |
*/ | |
public class Parser { | |
public static void main (String args[]) throws Exception { | |
String dirName = "/Users/ameya/GitRepos/CoreNLP/"; | |
File direc = new File(dirName); | |
List<File> files = (List<File>) FileUtils.listFiles( | |
direc, | |
new RegexFileFilter("([^\\s]+(?=\\.(java))\\.\\2)"), | |
DirectoryFileFilter.DIRECTORY | |
); | |
CombinedTypeSolver combinedTypeSolver = new CombinedTypeSolver(); | |
combinedTypeSolver.add(new JavaParserTypeSolver(new File("/Users/ameya/GitRepos/CoreNLP/src/"))); | |
combinedTypeSolver.add(new JavaParserTypeSolver(new File("/Users/ameya/GitRepos/CoreNLP/bin/"))); | |
combinedTypeSolver.add(new JarTypeSolver("/Users/ameya/GitRepos/CoreNLP/bin/stanford-corenlp-3.7.0.jar")); | |
combinedTypeSolver.add(new ReflectionTypeSolver()); | |
ReferenceTypeDeclaration ref = combinedTypeSolver.solveType("java.util.function.Function"); | |
System.out.println(ref.getQualifiedName()); | |
MethodDeclaration meth = null; | |
for(MethodDeclaration dec : ref.getDeclaredMethods()){ | |
if(dec.getQualifiedName().contains("apply")){ | |
meth = dec; | |
} | |
} | |
for (File path : files) { | |
FileInputStream in = null; | |
boolean isFileFound = true; | |
try { | |
in = new FileInputStream(path); | |
} catch (FileNotFoundException e1) { | |
isFileFound = false; | |
System.out.println("File " + path + "Not found"); | |
} | |
if (isFileFound) { | |
byte[] encoded = Files.readAllBytes(Paths.get(path.getAbsolutePath())); | |
String s =new String(encoded); | |
CompilationUnit cu = new CompilationUnit(); | |
try { | |
System.out.println(path.getAbsolutePath()); | |
cu = JavaParser.parse(in); | |
} catch (Exception e) { | |
System.out.println("Exception while parsing the file : " + e.getMessage()); | |
} finally { | |
try { | |
in.close(); | |
} catch (IOException e) { | |
System.out.println("Unable to close compilation unit");// TODO Auto-generated catch block | |
e.printStackTrace(); | |
} | |
} | |
try{ | |
new FileVisitor().visit(cu, JavaParserFacade.get(combinedTypeSolver)); | |
}catch(Exception e){ | |
System.out.println(e); | |
} | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment