/** * Returns a scanner from configuration and visitors. * * @param config apex configuration. * @param visitors list of visitors. * @return a scanner. */ public static AstScanner<Grammar> create(ApexConfiguration config, SquidAstVisitor<Grammar>... visitors) { final SourceProject sourceProject = new SourceProject(PROJECT_NAME); final SquidAstVisitorContextImpl<Grammar> context = new SquidAstVisitorContextImpl<>(sourceProject); final Parser<Grammar> parser = ApexParser.create(config); AstScanner.Builder<Grammar> builder = AstScanner.<Grammar>builder(context).setBaseParser(parser); builder.withMetrics(ApexMetric.values()); builder.setFilesMetric(ApexMetric.FILES); setCommentAnalyser(builder); setClassesAnalyser(builder); setMethodAnalyser(builder); setMetrics(config, builder); for (SquidAstVisitor<Grammar> visitor : visitors) { builder.withSquidAstVisitor(visitor); } return builder.build(); }
public static AstScanner<Grammar> create(PythonConfiguration conf, SquidAstVisitor<Grammar>... visitors) { final SquidAstVisitorContextImpl<Grammar> context = new SquidAstVisitorContextImpl<Grammar>(new SourceProject("Python Project")); final Parser<Grammar> parser = PythonParser.create(conf); AstScanner.Builder<Grammar> builder = AstScanner.<Grammar>builder(context).setBaseParser(parser); builder.withMetrics(PythonMetric.values()); builder.setFilesMetric(PythonMetric.FILES); setCommentAnalyser(builder); setClassesAnalyser(builder); setMethodAnalyser(builder); setMetrics(conf, builder); /* External visitors (typically Check ones) */ for (SquidAstVisitor<Grammar> visitor : visitors) { if (visitor instanceof CharsetAwareVisitor) { ((CharsetAwareVisitor) visitor).setCharset(conf.getCharset()); } builder.withSquidAstVisitor(visitor); } return builder.build(); }
final Parser<ObjectiveCGrammar> parser = ObjectiveCParser.create(conf); AstScanner.Builder<ObjectiveCGrammar> builder = AstScanner.<ObjectiveCGrammar> builder(context).setBaseParser(parser);
final Parser<ObjectiveCGrammar> parser = ObjectiveCParser.create(conf); AstScanner.Builder<ObjectiveCGrammar> builder = AstScanner.<ObjectiveCGrammar>builder(context).setBaseParser(parser);
final Parser<SwiftGrammar> parser = SwiftParser.create(conf); AstScanner.Builder<SwiftGrammar> builder = AstScanner.builder(context).setBaseParser(parser);
final Parser<LexerlessGrammar> parser = new ParserAdapter<LexerlessGrammar>(conf.charset(), CssGrammar.createGrammar()); AstScanner.Builder<LexerlessGrammar> builder = AstScanner.<LexerlessGrammar>builder(context).setBaseParser(parser);
final Parser<LexerlessGrammar> parser = new ParserAdapter<LexerlessGrammar>(charset, ErlangGrammarImpl.createGrammar()); AstScanner.Builder<LexerlessGrammar> builder = AstScanner.<LexerlessGrammar>builder(context) .setBaseParser(parser);