use of org.sonar.java.bytecode.loader.SquidClassLoader in project sonar-java by SonarSource.
the class BytecodeEGWalkerTest method setUp.
@BeforeClass
public static void setUp() throws Exception {
List<File> files = Lists.newArrayList(new File("target/test-classes"), new File("target/classes"));
files.addAll(FileUtils.listFiles(new File("target/test-jars"), new String[] { "jar" }, false));
squidClassLoader = new SquidClassLoader(files);
semanticModel = SemanticModel.createFor((CompilationUnitTree) JavaParser.createParser().parse("class A {}"), squidClassLoader);
}
use of org.sonar.java.bytecode.loader.SquidClassLoader in project sonar-java by SonarSource.
the class GenericsTest method treeOf.
private static CompilationUnitTree treeOf(File file) {
CompilationUnitTree cut = (CompilationUnitTree) JavaParser.createParser().parse(file);
SemanticModel.createFor(cut, new SquidClassLoader(Lists.newArrayList(new File("target/test-classes"), new File("target/classes"))));
return cut;
}
use of org.sonar.java.bytecode.loader.SquidClassLoader in project sonar-java by SonarSource.
the class LambdaBlockReturnVisitorTest method test.
@Test
public void test() throws Exception {
CompilationUnitTree cut = (CompilationUnitTree) p.parse("class A {\n" + " java.util.function.Consumer<String> c = s -> {\n" + " if(s.length()>0) {\n" + " return;\n" + " }\n" + " System.out.println(s);\n" + " };\n" + "\n" + " java.util.function.Function<String, String> f = s -> {\n" + " if(s.length() > 0) {\n" + " return s.replace('a', 'b');\n" + " }\n" + " return unknownSymbol;\n" + " };\n" + " }");
SemanticModel.createFor(cut, new SquidClassLoader(Collections.emptyList()));
List<VariableTree> vars = ((ClassTree) cut.types().get(0)).members().stream().map(m -> (VariableTree) m).collect(Collectors.toList());
LambdaBlockReturnVisitor visitor = new LambdaBlockReturnVisitor();
((LambdaExpressionTree) vars.get(0).initializer()).body().accept(visitor);
assertThat(visitor.types).isEmpty();
visitor = new LambdaBlockReturnVisitor();
((LambdaExpressionTree) vars.get(1).initializer()).body().accept(visitor);
assertThat(visitor.types).hasSize(1);
}
use of org.sonar.java.bytecode.loader.SquidClassLoader in project sonar-java by SonarSource.
the class Result method createForJavaFile.
public static Result createForJavaFile(String filePath) {
File file = new File(filePath + ".java");
CompilationUnitTree compilationUnitTree = (CompilationUnitTree) parser.parse(file);
SemanticModel semanticModel = SemanticModel.createFor(compilationUnitTree, new SquidClassLoader(Lists.newArrayList(new File("target/test-classes"), new File("target/classes"))));
UsageVisitor usageVisitor = new UsageVisitor();
compilationUnitTree.accept(usageVisitor);
return new Result(semanticModel, usageVisitor.symbolsUsed);
}
use of org.sonar.java.bytecode.loader.SquidClassLoader in project sonar-java by SonarSource.
the class ClassTreeImplTest method createTree.
private CompilationUnitTree createTree(String code) {
CompilationUnitTree compilationUnitTree = (CompilationUnitTree) p.parse(code);
SemanticModel.createFor(compilationUnitTree, new SquidClassLoader(Collections.emptyList()));
return compilationUnitTree;
}
Aggregations