diff --git a/annotator-core/src/main/java/edu/ucr/cs/riple/core/metadata/graph/ConflictGraph.java b/annotator-core/src/main/java/edu/ucr/cs/riple/core/metadata/graph/ConflictGraph.java index 8a35b5e1b..54b4fe5ad 100644 --- a/annotator-core/src/main/java/edu/ucr/cs/riple/core/metadata/graph/ConflictGraph.java +++ b/annotator-core/src/main/java/edu/ucr/cs/riple/core/metadata/graph/ConflictGraph.java @@ -32,7 +32,6 @@ import java.util.Collection; import java.util.HashMap; import java.util.HashSet; -import java.util.LinkedList; import java.util.List; import java.util.Set; import java.util.stream.Stream; @@ -73,8 +72,6 @@ public Node addNodeToVertices(Fix fix) { * Colors the graph based on edges, no two vertices which there is an edge connecting them will be * in the same group. A greedy algorithm is used to find the solution. */ - // TODO: Remove SuppressWarnings below later. - @SuppressWarnings("JdkObsolete") public void findGroups() { this.groups.clear(); Collection allNodes = nodes.values(); @@ -83,9 +80,9 @@ public void findGroups() { node.id = counter++; } int size = allNodes.size(); - LinkedList[] adj = new LinkedList[size]; + List> adj = new ArrayList<>(); for (int i = 0; i < size; ++i) { - adj[i] = new LinkedList<>(); + adj.add(i, new ArrayList<>()); } for (Node node : allNodes) { for (Node other : allNodes) { @@ -93,7 +90,7 @@ public void findGroups() { continue; } if (node.hasConflictInRegions(other)) { - adj[node.id].add(other.id); + adj.get(node.id).add(other.id); } } } @@ -106,7 +103,7 @@ public void findGroups() { * @param adj Martic of adjancey. * @param nodes Nodes in the graph. */ - private void colorGraph(LinkedList[] adj, Collection nodes) { + private void colorGraph(List> adj, Collection nodes) { int v = nodes.size(); List allNodes = new ArrayList<>(nodes); int[] result = new int[v]; @@ -115,7 +112,7 @@ private void colorGraph(LinkedList[] adj, Collection nodes) { boolean[] available = new boolean[v]; Arrays.fill(available, true); for (int u = 1; u < v; u++) { - for (int i : adj[u]) { + for (int i : adj.get(u)) { if (result[i] != -1) { available[result[i]] = false; } diff --git a/build.gradle b/build.gradle index 1dca67b19..7dde6d027 100644 --- a/build.gradle +++ b/build.gradle @@ -48,6 +48,9 @@ subprojects { proj -> proj.dependencies { errorprone deps.build.errorProneCore errorproneJavac deps.build.errorProneJavac + // just to prevent javac warnings, we currently pass "-Werror" as compiler arguments, + // all warnings must be resolved. + compileOnly deps.build.errorProneCoreOld if(proj.name != "ban-mutable-static"){ annotationProcessor project(":checks:ban-mutable-static") } @@ -66,6 +69,7 @@ subprojects { proj -> } } } + options.compilerArgs += '-Werror' } repositories { diff --git a/gradle/dependencies.gradle b/gradle/dependencies.gradle index 20e2c0d5b..207874cff 100644 --- a/gradle/dependencies.gradle +++ b/gradle/dependencies.gradle @@ -57,6 +57,7 @@ def build = [ javaparser : "com.github.javaparser:javaparser-core:${versions.javaparser}", commonscli : "commons-cli:commons-cli:${versions.cli}", commonsio : "commons-io:commons-io:${versions.commonsio}", + errorProneCoreOld : "com.google.errorprone:error_prone_core:${oldestErrorProneApi}", errorProneCore : "com.google.errorprone:error_prone_core:${versions.errorProne}", errorProneJavac : "com.google.errorprone:javac:9+181-r4173-1", errorProneCheckApi : "com.google.errorprone:error_prone_check_api:${versions.errorProneApi}", diff --git a/injector/src/main/java/edu/ucr/cs/riple/injector/changes/RemoveAnnotation.java b/injector/src/main/java/edu/ucr/cs/riple/injector/changes/RemoveAnnotation.java index 64f648039..be13f7433 100644 --- a/injector/src/main/java/edu/ucr/cs/riple/injector/changes/RemoveAnnotation.java +++ b/injector/src/main/java/edu/ucr/cs/riple/injector/changes/RemoveAnnotation.java @@ -65,6 +65,7 @@ public & NodeWithRange> Modification visit( } @Override + @SuppressWarnings("unchecked") public JSONObject getJson() { JSONObject res = super.getJson(); res.put("INJECT", false); diff --git a/injector/src/main/java/edu/ucr/cs/riple/injector/location/Location.java b/injector/src/main/java/edu/ucr/cs/riple/injector/location/Location.java index d449cfd7c..f6089f5de 100644 --- a/injector/src/main/java/edu/ucr/cs/riple/injector/location/Location.java +++ b/injector/src/main/java/edu/ucr/cs/riple/injector/location/Location.java @@ -111,8 +111,10 @@ public static Location createLocationFromArrayInfo(String[] values) { return new OnMethod(path, clazz, values[2]); case PARAMETER: return new OnParameter(path, clazz, values[2], Integer.parseInt(values[4])); + default: + throw new RuntimeException( + "Unsupported location type: " + type + ", with values: " + Arrays.toString(values)); } - throw new RuntimeException("Cannot reach this statement, values: " + Arrays.toString(values)); } /** diff --git a/injector/src/test/java/edu/ucr/cs/riple/injector/ClassSearchTest.java b/injector/src/test/java/edu/ucr/cs/riple/injector/ClassSearchTest.java index 53f576bd3..2874cd183 100644 --- a/injector/src/test/java/edu/ucr/cs/riple/injector/ClassSearchTest.java +++ b/injector/src/test/java/edu/ucr/cs/riple/injector/ClassSearchTest.java @@ -35,6 +35,7 @@ import edu.ucr.cs.riple.injector.location.OnMethod; import java.io.ByteArrayOutputStream; import java.io.PrintStream; +import java.nio.charset.Charset; import java.util.Collections; import org.junit.Test; import org.junit.runner.RunWith; @@ -465,7 +466,7 @@ public void properReportInErrStdForClassNotFoundTest() { new OnMethod("Main.java", "com.test.NotIncluded", "foo(java.lang.Object)"), "javax.annotation.Nullable")) .start(); - assertTrue(err.toString().contains(expectedErrorMessage)); + assertTrue(err.toString(Charset.defaultCharset()).contains(expectedErrorMessage)); } @Test diff --git a/injector/src/test/java/edu/ucr/cs/riple/injector/tools/Utility.java b/injector/src/test/java/edu/ucr/cs/riple/injector/tools/Utility.java index c1df6aee7..517c3007d 100644 --- a/injector/src/test/java/edu/ucr/cs/riple/injector/tools/Utility.java +++ b/injector/src/test/java/edu/ucr/cs/riple/injector/tools/Utility.java @@ -24,6 +24,7 @@ package edu.ucr.cs.riple.injector.tools; +import com.google.common.base.Splitter; import java.nio.file.Path; public class Utility { @@ -38,7 +39,7 @@ public class Utility { */ public static Path pathOf(Path root, String path) { Path ans = root; - String[] dirs = path.split("/"); + Iterable dirs = Splitter.on('/').split(path); for (String dir : dirs) { ans = ans.resolve(dir); }