Estou desenvolvendo um plugin para o SonarQube que contém um método que retorna todos os métodos do projeto, mas ele traz apenas algumas informações do método, tipo nome e quantidade de linhas do corpo do método.
Queria saber como retornar o nome da classe em que está este método?
public static void calculateAndSaveNumberMethodsFromFile(String path)throws IOException, ClassNotFoundException {
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setKind(ASTParser.K_COMPILATION_UNIT);
String codigo = Utils.getStringFromFile(path);
codigo = RegexUtils.removeComments(codigo);
parser.setSource(codigo.toCharArray());
final CompilationUnit cu = (CompilationUnit) parser.createAST(null);
cu.accept(new ASTVisitor() {
public boolean visit(MethodDeclaration node) {
SimpleName methodName = node.getName();//method name
Block methodBody = node.getBody(); //body of method
int numLines = 0; //number of lines of a Method
if (methodBody == null) {
LOG.info("-->Empty method!");
numLines = 0;
} else {
numLines = (methodBody.toString().split("\n").length - 2); //line number
}
LOG.info("Method '" + methodName + "' at line:" + cu.getLineNumber(methodName.getStartPosition()) + " Number lines: " + numLines);
Metodo metodo = new Metodo("OK".toString(), 123);
SingletonClass.addValue(metodo);
return false;
}
});
}
Obrigado!!!