Как определить тестовый класс с помощью AST Parser? - PullRequest
0 голосов
/ 26 октября 2019

Я хочу создать инструмент для обнаружения тестовых запахов. Для этого мне нужно найти тестовые классы или тестовую функцию.

Я анализирую весь проект и проверяю все функции.

       new DirExplorer((level, path, file)->
       path.endsWith(".java"), (level, path, file) -> {

        ASTParser parser = ASTParser.newParser(AST.JLS3);

        String str = readUsingBufferedReaderCharArray(file);
        parser.setSource(str.toCharArray());
        parser.setKind(ASTParser.K_COMPILATION_UNIT);

        final CompilationUnit cu = (CompilationUnit) parser.createAST(null);

        cu.accept(new ASTVisitor() {

            @Override
            public boolean visit(MethodInvocation node) {

                    final String REGEX = "assert";
                    final String INPUT = node.getName().toString();


                     Pattern p = Pattern.compile(REGEX);
                     Matcher m = p.matcher(INPUT);  

                    if(m.find()){
                    node.accept(new ASTVisitor() {

                        @Override
                        public boolean visit(MethodInvocation node1) {
                            // TODO Auto-generated method stub

                            if (node1.getName().toString().equals("toString")) {

                                int l = cu.getLineNumber(node1.getStartPosition());

                                sb.append("Found in line number: " + l + " ----->  in "+ file.getName()+"\n");

                                b = true;
                            }

                            return super.visit(node1);
                        }
                    });
                }

                return super.visit(node);
            }






        });

        if (b == false)
            sb.append("Not Found in " + file.getName()+"\n");
        jt.setText(sb.toString() + "\n");

    }).explore(rootFile);
}

Этот код проверяет все функции и все классы в проекте. Но мне нужны только тестовые классы

...