diff options
author | George Fraser <george@fivetran.com> | 2019-01-05 13:24:55 -0800 |
---|---|---|
committer | George Fraser <george@fivetran.com> | 2019-01-05 13:24:55 -0800 |
commit | 7005490c456bbd24ebb9115ed8f78bc3fc8d11e8 (patch) | |
tree | 75ab5ce02c218212b4a76b78a395d4059270c339 /src | |
parent | 9d0a24f07815030b3a0738475f2084b152d78796 (diff) | |
download | java-language-server-7005490c456bbd24ebb9115ed8f78bc3fc8d11e8.zip |
Error-prone is too slow
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/org/javacs/Lib.java | 11 | ||||
-rw-r--r-- | src/test/java/org/javacs/BenchmarkErrorProne.java | 96 | ||||
-rw-r--r-- | src/test/java/org/javacs/WarningsTest.java | 3 |
3 files changed, 3 insertions, 107 deletions
diff --git a/src/main/java/org/javacs/Lib.java b/src/main/java/org/javacs/Lib.java index 8fb98f4..924f98c 100644 --- a/src/main/java/org/javacs/Lib.java +++ b/src/main/java/org/javacs/Lib.java @@ -1,6 +1,5 @@ package org.javacs; -import java.io.File; import java.nio.file.*; class Lib { @@ -13,14 +12,4 @@ class Lib { } static final Path SRC_ZIP = installRoot().resolve("lib/src.zip"); - - static final String ERROR_PRONE = findErrorProne(); - - private static String findErrorProne() { - var dataflow = installRoot().resolve("lib/error_prone/dataflow.jar").toString(); - var errorProne = installRoot().resolve("lib/error_prone/error_prone.jar").toString(); - var javacUtil = installRoot().resolve("lib/error_prone/javacutil.jar").toString(); - var jFormatString = installRoot().resolve("lib/error_prone/jFormatString.jar").toString(); - return String.join(File.pathSeparator, dataflow, errorProne, javacUtil, jFormatString); - } } diff --git a/src/test/java/org/javacs/BenchmarkErrorProne.java b/src/test/java/org/javacs/BenchmarkErrorProne.java deleted file mode 100644 index ff3f64e..0000000 --- a/src/test/java/org/javacs/BenchmarkErrorProne.java +++ /dev/null @@ -1,96 +0,0 @@ -package org.javacs; - -import com.sun.source.util.JavacTask; -import java.io.IOException; -import java.nio.charset.Charset; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.ServiceLoader; -import java.util.Set; -import java.util.StringJoiner; -import java.util.concurrent.TimeUnit; -import javax.tools.JavaCompiler; -import javax.tools.StandardJavaFileManager; -import org.openjdk.jmh.annotations.*; - -// TODO this is coloring badly -@Warmup(iterations = 3, time = 1, timeUnit = TimeUnit.SECONDS) -@Measurement(iterations = 3, time = 1, timeUnit = TimeUnit.SECONDS) -@Fork(1) -public class BenchmarkErrorProne { - private static Path file = Paths.get(FindResource.uri("/org/javacs/example/BenchmarkStringSearch.java")); - - @State(Scope.Thread) - public static class BenchmarkState { - JavaCompiler compiler = ServiceLoader.load(JavaCompiler.class).iterator().next(); - StandardJavaFileManager fileManager = - new FileManagerWrapper(compiler.getStandardFileManager(__ -> {}, null, Charset.defaultCharset())); - } - - @Benchmark - public void vanilla(BenchmarkState state) { - var options = JavaCompilerService.options(Set.of(), Set.of()); - - analyze(state, options); - } - - @Benchmark - public void withErrorProne(BenchmarkState state) { - var options = JavaCompilerService.options(Set.of(), Set.of()); - // Add error-prone - options.addAll(errorProneOptions()); - - analyze(state, options); - } - - private void analyze(BenchmarkState state, List<String> options) { - var sources = state.fileManager.getJavaFileObjectsFromPaths(List.of(file)); - // Create task - var task = - (JavacTask) - state.compiler.getTask( - null, state.fileManager, __ -> {}, options, Collections.emptyList(), sources); - // Print timing information for optimization - var profiler = new Profiler(); - try { - task.analyze(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - private static List<String> errorProneOptions() { - var options = new ArrayList<String>(); - - // https://errorprone.info/docs/installation "Command Line" - Collections.addAll(options, "-XDcompilePolicy=byfile"); - Collections.addAll(options, "-processorpath", Lib.ERROR_PRONE); - - // https://errorprone.info/bugpatterns - var bugPatterns = new StringJoiner(" "); - // bugPatterns.add("-Xep:EmptyIf"); - // bugPatterns.add("-Xep:NumericEquality"); - // bugPatterns.add("-Xep:ConstructorLeaksThis"); - // bugPatterns.add("-Xep:EqualsBrokenForNull"); - // bugPatterns.add("-Xep:InvalidThrows"); - // bugPatterns.add("-Xep:RedundantThrows"); - // bugPatterns.add("-Xep:StaticQualifiedUsingExpression"); - // bugPatterns.add("-Xep:StringEquality"); - // bugPatterns.add("-Xep:Unused"); - // bugPatterns.add("-Xep:UnusedException"); - // bugPatterns.add("-Xep:FieldCanBeFinal"); - // bugPatterns.add("-Xep:FieldMissingNullable"); - // bugPatterns.add("-Xep:MethodCanBeStatic"); - // bugPatterns.add("-Xep:PackageLocation"); - // bugPatterns.add("-Xep:PrivateConstructorForUtilityClass"); - // bugPatterns.add("-Xep:ReturnMissingNullable"); - - Collections.addAll( - options, "-Xplugin:ErrorProne -XepAllErrorsAsWarnings " + bugPatterns + " --illegal-access=warn"); - - return options; - } -} diff --git a/src/test/java/org/javacs/WarningsTest.java b/src/test/java/org/javacs/WarningsTest.java index 696eed2..f9e54d4 100644 --- a/src/test/java/org/javacs/WarningsTest.java +++ b/src/test/java/org/javacs/WarningsTest.java @@ -35,4 +35,7 @@ public class WarningsTest { assertThat(errors, hasItem("unused(8)")); // int unusedPrivate assertThat(errors, not(hasItem("unused(4)"))); } + + // TODO warn on type.equals(otherType) + // TODO warn on map.get(wrongKeyType) } |