forked from liquid-java/liquidjava
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCommandLineLauncher.java
More file actions
67 lines (54 loc) · 2.38 KB
/
CommandLineLauncher.java
File metadata and controls
67 lines (54 loc) · 2.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package liquidjava.api;
import java.io.File;
import liquidjava.errors.ErrorEmitter;
import liquidjava.processor.RefinementProcessor;
import spoon.Launcher;
import spoon.processing.ProcessingManager;
import spoon.reflect.declaration.CtPackage;
import spoon.reflect.factory.Factory;
import spoon.support.QueueProcessingManager;
public class CommandLineLauncher {
public static void main(String[] args) {
String allPath = "./liquidjava-example/src/main/java/test/currentlyTesting";
// String allPath = "C://Regen/test-projects/src/Main.java";
// In eclipse only needed this:"../liquidjava-example/src/main/java/"
// In VSCode needs:
// "../liquidjava/liquidjava-umbrella/liquidjava-example/src/main/java/liquidjava/test/project";
String file = args.length == 0 ? allPath : args[0];
ErrorEmitter ee = launch(file);
System.out.println(ee.foundError() ? (ee.getFullMessage()) : ("Correct! Passed Verification."));
}
public static ErrorEmitter launchTest(String file) {
ErrorEmitter ee = launch(file);
return ee;
}
public static ErrorEmitter launch(String file) {
System.out.println("Running LiquidJava on: " + file);
Launcher launcher = new Launcher();
launcher.addInputResource(file);
launcher.getEnvironment().setNoClasspath(true);
// Get the current classpath from the system
// String classpath = System.getProperty("java.class.path");
// launcher.getEnvironment().setSourceClasspath(classpath.split(File.pathSeparator));
// optional
// launcher.getEnvironment().setSourceClasspath(
// "lib1.jar:lib2.jar".split(":"));
launcher.getEnvironment().setComplianceLevel(8);
launcher.run();
final Factory factory = launcher.getFactory();
final ProcessingManager processingManager = new QueueProcessingManager(factory);
ErrorEmitter ee = new ErrorEmitter();
final RefinementProcessor processor = new RefinementProcessor(factory, ee);
processingManager.addProcessor(processor);
try {
// analyze all packages
CtPackage root = factory.Package().getRootPackage();
if (root != null)
processingManager.process(root);
} catch (Exception e) {
e.printStackTrace();
throw e;
}
return ee;
}
}