public static String printFile(String file, String bytecodePath) { final Parser p = JavaParser.createParser(Charsets.UTF_8); CompilationUnitTree cut = (CompilationUnitTree) p.parse(new File(file)); List<File> bytecodeFiles = Lists.newArrayList(); if (!bytecodePath.isEmpty()) { bytecodeFiles.add(new File(bytecodePath)); } SemanticModel semanticModel = SemanticModel.createFor(cut, bytecodeFiles); return PrinterVisitor.print(cut, semanticModel); } }
@Override public Tree parse(File file) { return createParentLink((JavaTree) super.parse(file)); }
public static ActionParser<Tree> createParser() { return new JavaParser(JavaLexer.createGrammarBuilder(), JavaGrammar.class, new TreeFactory(), new JavaNodeBuilder(), JavaLexer.COMPILATION_UNIT); }
public static ActionParser<Tree> createParser(Charset charset) { return new JavaParser( charset, JavaLexer.createGrammarBuilder(), JavaGrammar.class, new TreeFactory(), new JavaNodeBuilder(), JavaLexer.COMPILATION_UNIT); }
@VisibleForTesting public static void scanSingleFileForTests(File file, VisitorsBridge visitorsBridge, JavaVersion javaVersion) { if (!file.isFile()) { throw new IllegalArgumentException("File '" + file + "' not found."); } JavaAstScanner astScanner = new JavaAstScanner(JavaParser.createParser(), null); visitorsBridge.setJavaVersion(javaVersion); astScanner.setVisitorBridge(visitorsBridge); astScanner.scan(Collections.singleton(file)); }
@Override public Tree parse(String source) { return createParentLink((JavaTree) super.parse(source)); }
public static ActionParser<Tree> createParser() { return new JavaParser(JavaLexer.createGrammarBuilder(), JavaGrammar.class, new TreeFactory(), new JavaNodeBuilder(), JavaLexer.COMPILATION_UNIT); }
@VisibleForTesting public static void scanSingleFileForTests(File file, VisitorsBridge visitorsBridge, JavaVersion javaVersion) { if (!file.isFile()) { throw new IllegalArgumentException("File '" + file + "' not found."); } JavaAstScanner astScanner = new JavaAstScanner(JavaParser.createParser(), null); visitorsBridge.setJavaVersion(javaVersion); astScanner.setVisitorBridge(visitorsBridge); astScanner.scan(Collections.singleton(file)); }
@Override public Tree parse(String source) { return createParentLink((JavaTree) super.parse(source)); }
ActionParser<Tree> parser = JavaParser.createParser(); astScanner = new JavaAstScanner(parser, sonarComponents); astScanner.setVisitorBridge(createVisitorBridge(codeVisitors, classpath, javaVersion, sonarComponents, SymbolicExecutionMode.getMode(visitors, xFileEnabled)));
@Override public Tree parse(String source) { return createParentLink((JavaTree) super.parse(source)); }
ActionParser<Tree> parser = JavaParser.createParser(); astScanner = new JavaAstScanner(parser, sonarComponents); astScanner.setVisitorBridge(createVisitorBridge(codeVisitors, classpath, javaVersion, sonarComponents, SymbolicExecutionMode.getMode(visitors, xFileEnabled)));
@Override public Tree parse(File file) { return createParentLink((JavaTree) super.parse(file)); }
private Set<AnalyzerMessage> scanFiles(List<String> filesToScan, JavaFileScanner check, boolean withSemantic) { List<File> classPath = JavaCheckVerifier.getClassPath(JavaCheckVerifier.DEFAULT_TEST_JARS_DIRECTORY); VisitorsBridgeForTests visitorsBridge; if (withSemantic) { visitorsBridge = new VisitorsBridgeForTests(Arrays.asList(check, new JavaCheckVerifier.ExpectedIssueCollector(this)), classPath, null); } else { visitorsBridge = new VisitorsBridgeForTests(Arrays.asList(check, new JavaCheckVerifier.ExpectedIssueCollector(this)), null); } visitorsBridge.setJavaVersion(new JavaVersionImpl()); JavaAstScanner astScanner = new JavaAstScanner(JavaParser.createParser(), null); astScanner.setVisitorBridge(visitorsBridge); astScanner.scan(filesToScan.stream().map(File::new).collect(Collectors.toList())); VisitorsBridgeForTests.TestJavaFileScannerContext testJavaFileScannerContext = visitorsBridge.lastCreatedTestContext(); return testJavaFileScannerContext.getIssues(); }
@Override public Tree parse(File file) { return createParentLink((JavaTree) super.parse(file)); }
private static JavaAstScanner create(JavaConfiguration conf, @Nullable VisitorsBridge visitorsBridge) { JavaAstScanner astScanner = new JavaAstScanner(JavaParser.createParser(conf.getCharset())); if (visitorsBridge != null) { visitorsBridge.setCharset(conf.getCharset()); visitorsBridge.setJavaVersion(conf.javaVersion()); astScanner.setVisitorBridge(visitorsBridge); } return astScanner; }
private static Tree createParentLink(JavaTree parent) { if (!parent.isLeaf()) { for (Tree nextTree : parent.children()) { JavaTree next = (JavaTree) nextTree; if (next != null) { next.setParent(parent); createParentLink(next); } } } return parent; } }
astScanner = new JavaAstScanner(JavaParser.createParser(conf.getCharset())); boolean enableSymbolicExecution = hasASymbolicExecutionCheck(visitors); astScanner.setVisitorBridge(createVisitorBridge(codeVisitors, classpath, conf, sonarComponents, enableSymbolicExecution));
public static AstScanner create(JavaConfiguration conf, SquidAstVisitor<LexerlessGrammar>... visitors) { final Parser parser = JavaParser.createParser(conf.getCharset()); AstScanner builder = new AstScanner(parser); /* Files */ builder.withSquidAstVisitor(new FileVisitor()); /* Comments */ builder.setCommentAnalyser(new CommentLinesVisitor.JavaCommentAnalyser()); builder.withSquidAstVisitor(CommentsVisitor.<LexerlessGrammar>builder() .withNoSonar(true) .withIgnoreHeaderComment(true) .build()); /* External visitors (typically Check ones) */ for (SquidAstVisitor<LexerlessGrammar> visitor : visitors) { if (visitor instanceof CharsetAwareVisitor) { ((CharsetAwareVisitor) visitor).setCharset(conf.getCharset()); } builder.withSquidAstVisitor(visitor); } return builder; }