Given a method I would like to identify unused variables. The format that I am currently looking at guarantees that there's an assert statement as the very last line of every method.
I am using JavaParser to parse each method, list the statements and also list all the variables used within that method.
How can I retrieve all the variables used in the last statement?
private static class MethodVisitor extends VoidVisitorAdapter<Object> {
@Override
public void visit(MethodDeclaration n, Object arg) {
System.out.println("Method: " + n.getName());
BlockStmt body = n.getBody();
List<Statement> statements = body.getStmts();
new VariableVisitor().visit(n, null);
Statement lastStmt = statements.get(statements.size() - 1);
for (Statement st : statements) {
System.out.println("Statement: " + st.toString());
}
System.out.println("\n\n");
}
}
private static class VariableVisitor extends VoidVisitorAdapter<Object> {
@Override
public void visit(VariableDeclarationExpr n, Object arg) {
List<VariableDeclarator> myVars = n.getVars();
for (VariableDeclarator vars : myVars) {
System.out.println("Variable Name: " + vars.getId().getName());
}
System.out.println();
}
}