Учитывая метод, я хотел бы идентифицировать неиспользуемые переменные. Формат, который я просматриваю в настоящее время, гарантирует, что утверждение assert является самой последней строкой каждого метода.Идентифицировать переменные, используемые в отчете/строке
Я использую JavaParser для анализа каждого метода, списка операторов и списка всех переменных, используемых в этом методе.
Как я могу получить все переменные, используемые в последнем утверждении?
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();
}
}
что я интересно: почему вы хотите, чтобы заново изобретать колесо? Есть инструменты, которые делают такую проверку для вас. Черт, вы можете даже настроить javac, чтобы дать вам предупреждение о неиспользуемых переменных. Итак, зачем создавать собственное решение, которое всегда будет сопряжено с риском быть неполным? – GhostCat