Skip to content

Instantly share code, notes, and snippets.

@ftomassetti
Created June 6, 2017 08:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ftomassetti/f8a3fc024beaf8c1cb6598ecdd35dfad to your computer and use it in GitHub Desktop.
Save ftomassetti/f8a3fc024beaf8c1cb6598ecdd35dfad to your computer and use it in GitHub Desktop.
JSS240
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);
}
}
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