From 2e0a36409eeb3fa2c237cc2800d404d29f27c941 Mon Sep 17 00:00:00 2001 From: nimakarimipour Date: Tue, 6 Dec 2022 21:21:50 -0800 Subject: [PATCH 1/9] add -Werror for javac --- annotator-core/build.gradle | 2 +- .../edu/ucr/cs/riple/core/metadata/graph/ConflictGraph.java | 2 +- .../main/java/edu/ucr/cs/riple/scanner/AnnotatorScanner.java | 4 ++-- build.gradle | 3 +++ .../edu/ucr/cs/riple/banmutablestatic/BanMutableStatic.java | 4 ++-- gradle/dependencies.gradle | 1 + .../edu/ucr/cs/riple/injector/changes/RemoveAnnotation.java | 1 + 7 files changed, 11 insertions(+), 6 deletions(-) diff --git a/annotator-core/build.gradle b/annotator-core/build.gradle index 1b7d934f5..54e2e4bb7 100644 --- a/annotator-core/build.gradle +++ b/annotator-core/build.gradle @@ -90,7 +90,7 @@ shadowJar { // Configure test environment def nullawayVersionMap = [0:"0.10.4", 1:"0.10.5"] -tasks.create("configureNullAwayVersion"){ +tasks.register("configureNullAwayVersion"){ if(!project.hasProperty("nullaway-serialization-format-version")){ return } 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 e6ee59a7c..59c7e7789 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 @@ -74,7 +74,7 @@ public Node addNodeToVertices(Fix fix) { * in the same group. A greedy algorithm is used to find the solution. */ // TODO: Remove SuppressWarnings below later. - @SuppressWarnings("JdkObsolete") + @SuppressWarnings({"JdkObsolete", "unchecked"}) public void findGroups() { this.groups.clear(); Collection allNodes = nodes.values(); diff --git a/annotator-scanner/src/main/java/edu/ucr/cs/riple/scanner/AnnotatorScanner.java b/annotator-scanner/src/main/java/edu/ucr/cs/riple/scanner/AnnotatorScanner.java index 6c353f9ed..08d1e24f2 100644 --- a/annotator-scanner/src/main/java/edu/ucr/cs/riple/scanner/AnnotatorScanner.java +++ b/annotator-scanner/src/main/java/edu/ucr/cs/riple/scanner/AnnotatorScanner.java @@ -24,7 +24,7 @@ package edu.ucr.cs.riple.scanner; -import static com.google.errorprone.BugPattern.SeverityLevel.SUGGESTION; +import static com.google.errorprone.BugPattern.SeverityLevel.ERROR; import com.google.auto.service.AutoService; import com.google.errorprone.BugPattern; @@ -53,7 +53,7 @@ altNames = {"TypeBasedStructureSerializer"}, summary = "Serializes type-based metadata regarding code structure.", tags = BugPattern.StandardTags.STYLE, - severity = SUGGESTION) + severity = ERROR) @SuppressWarnings("BugPatternNaming") public class AnnotatorScanner extends BugChecker implements BugChecker.MethodInvocationTreeMatcher, diff --git a/build.gradle b/build.gradle index 1dca67b19..9941d8d25 100644 --- a/build.gradle +++ b/build.gradle @@ -48,6 +48,8 @@ subprojects { proj -> proj.dependencies { errorprone deps.build.errorProneCore errorproneJavac deps.build.errorProneJavac + // just to pass wierd javac builds. + compileOnly 'com.google.errorprone:error_prone_core:2.4.0' if(proj.name != "ban-mutable-static"){ annotationProcessor project(":checks:ban-mutable-static") } @@ -66,6 +68,7 @@ subprojects { proj -> } } } + options.compilerArgs += '-Werror' } repositories { diff --git a/checks/ban-mutable-static/src/main/java/edu/ucr/cs/riple/banmutablestatic/BanMutableStatic.java b/checks/ban-mutable-static/src/main/java/edu/ucr/cs/riple/banmutablestatic/BanMutableStatic.java index e675ba0b9..ed4a61a50 100644 --- a/checks/ban-mutable-static/src/main/java/edu/ucr/cs/riple/banmutablestatic/BanMutableStatic.java +++ b/checks/ban-mutable-static/src/main/java/edu/ucr/cs/riple/banmutablestatic/BanMutableStatic.java @@ -24,7 +24,7 @@ package edu.ucr.cs.riple.banmutablestatic; -import static com.google.errorprone.BugPattern.SeverityLevel.SUGGESTION; +import static com.google.errorprone.BugPattern.SeverityLevel.ERROR; import com.google.auto.service.AutoService; import com.google.errorprone.BugPattern; @@ -46,7 +46,7 @@ altNames = {"BansMutableStaticFields"}, summary = "Bans mutable static field declaration", tags = BugPattern.StandardTags.STYLE, - severity = SUGGESTION) + severity = ERROR) @SuppressWarnings("BugPatternNaming") public class BanMutableStatic extends BugChecker implements BugChecker.VariableTreeMatcher { 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 3a3faadf8..7b399c5b2 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 Modification visit(ElementKind kind, NodeWithAnnotations node, Range r } @Override + @SuppressWarnings("unchecked") public JSONObject getJson() { JSONObject res = super.getJson(); res.put("INJECT", false); From 3ce7e9311e386d0d66b8750f9fcf28f80ce352a0 Mon Sep 17 00:00:00 2001 From: nimakarimipour Date: Tue, 6 Dec 2022 21:24:54 -0800 Subject: [PATCH 2/9] undo unnecessary changes --- .../main/java/edu/ucr/cs/riple/scanner/AnnotatorScanner.java | 4 ++-- .../edu/ucr/cs/riple/banmutablestatic/BanMutableStatic.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/annotator-scanner/src/main/java/edu/ucr/cs/riple/scanner/AnnotatorScanner.java b/annotator-scanner/src/main/java/edu/ucr/cs/riple/scanner/AnnotatorScanner.java index 08d1e24f2..6c353f9ed 100644 --- a/annotator-scanner/src/main/java/edu/ucr/cs/riple/scanner/AnnotatorScanner.java +++ b/annotator-scanner/src/main/java/edu/ucr/cs/riple/scanner/AnnotatorScanner.java @@ -24,7 +24,7 @@ package edu.ucr.cs.riple.scanner; -import static com.google.errorprone.BugPattern.SeverityLevel.ERROR; +import static com.google.errorprone.BugPattern.SeverityLevel.SUGGESTION; import com.google.auto.service.AutoService; import com.google.errorprone.BugPattern; @@ -53,7 +53,7 @@ altNames = {"TypeBasedStructureSerializer"}, summary = "Serializes type-based metadata regarding code structure.", tags = BugPattern.StandardTags.STYLE, - severity = ERROR) + severity = SUGGESTION) @SuppressWarnings("BugPatternNaming") public class AnnotatorScanner extends BugChecker implements BugChecker.MethodInvocationTreeMatcher, diff --git a/checks/ban-mutable-static/src/main/java/edu/ucr/cs/riple/banmutablestatic/BanMutableStatic.java b/checks/ban-mutable-static/src/main/java/edu/ucr/cs/riple/banmutablestatic/BanMutableStatic.java index ed4a61a50..e675ba0b9 100644 --- a/checks/ban-mutable-static/src/main/java/edu/ucr/cs/riple/banmutablestatic/BanMutableStatic.java +++ b/checks/ban-mutable-static/src/main/java/edu/ucr/cs/riple/banmutablestatic/BanMutableStatic.java @@ -24,7 +24,7 @@ package edu.ucr.cs.riple.banmutablestatic; -import static com.google.errorprone.BugPattern.SeverityLevel.ERROR; +import static com.google.errorprone.BugPattern.SeverityLevel.SUGGESTION; import com.google.auto.service.AutoService; import com.google.errorprone.BugPattern; @@ -46,7 +46,7 @@ altNames = {"BansMutableStaticFields"}, summary = "Bans mutable static field declaration", tags = BugPattern.StandardTags.STYLE, - severity = ERROR) + severity = SUGGESTION) @SuppressWarnings("BugPatternNaming") public class BanMutableStatic extends BugChecker implements BugChecker.VariableTreeMatcher { From b16d41e1b6d9bbad543cf70032e5d73bc030fb99 Mon Sep 17 00:00:00 2001 From: nimakarimipour Date: Tue, 6 Dec 2022 21:26:25 -0800 Subject: [PATCH 3/9] update comment --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 9941d8d25..ce1efce9e 100644 --- a/build.gradle +++ b/build.gradle @@ -48,7 +48,7 @@ subprojects { proj -> proj.dependencies { errorprone deps.build.errorProneCore errorproneJavac deps.build.errorProneJavac - // just to pass wierd javac builds. + // just to prevent javac crash. compileOnly 'com.google.errorprone:error_prone_core:2.4.0' if(proj.name != "ban-mutable-static"){ annotationProcessor project(":checks:ban-mutable-static") From f14c53999f13a12b359fb3cc9007a9b4188bceb4 Mon Sep 17 00:00:00 2001 From: nimakarimipour Date: Tue, 6 Dec 2022 21:29:43 -0800 Subject: [PATCH 4/9] use from dependencies.gradle --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index ce1efce9e..1ab26be2b 100644 --- a/build.gradle +++ b/build.gradle @@ -49,7 +49,7 @@ subprojects { proj -> errorprone deps.build.errorProneCore errorproneJavac deps.build.errorProneJavac // just to prevent javac crash. - compileOnly 'com.google.errorprone:error_prone_core:2.4.0' + compileOnly deps.build.errorProneCoreOld if(proj.name != "ban-mutable-static"){ annotationProcessor project(":checks:ban-mutable-static") } From f293923a54d0e9ed8d508ab347c13d287c5b4e69 Mon Sep 17 00:00:00 2001 From: nimakarimipour Date: Wed, 28 Dec 2022 21:55:44 -0800 Subject: [PATCH 5/9] remove all warnings --- .../edu/ucr/cs/riple/scanner/AnnotatorScannerBaseTest.java | 4 ++-- .../src/test/java/edu/ucr/cs/riple/injector/BasicTest.java | 4 ++-- .../test/java/edu/ucr/cs/riple/injector/ClassSearchTest.java | 3 ++- .../test/java/edu/ucr/cs/riple/injector/tools/Utility.java | 4 +++- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/annotator-scanner/src/test/java/edu/ucr/cs/riple/scanner/AnnotatorScannerBaseTest.java b/annotator-scanner/src/test/java/edu/ucr/cs/riple/scanner/AnnotatorScannerBaseTest.java index 57d040f98..f80cda377 100644 --- a/annotator-scanner/src/test/java/edu/ucr/cs/riple/scanner/AnnotatorScannerBaseTest.java +++ b/annotator-scanner/src/test/java/edu/ucr/cs/riple/scanner/AnnotatorScannerBaseTest.java @@ -59,8 +59,8 @@ public void setup() { Path config = root.resolve("scanner.xml"); try { Files.createDirectories(root); - ErrorProneCLIFlagsConfig.Builder builder = - new ErrorProneCLIFlagsConfig.Builder() + Config.Builder builder = + new Config.Builder() .setCallTrackerActivation(true) .setClassTrackerActivation(true) .setFieldTrackerActivation(true) diff --git a/injector/src/test/java/edu/ucr/cs/riple/injector/BasicTest.java b/injector/src/test/java/edu/ucr/cs/riple/injector/BasicTest.java index 0a6864355..0c71b1f53 100644 --- a/injector/src/test/java/edu/ucr/cs/riple/injector/BasicTest.java +++ b/injector/src/test/java/edu/ucr/cs/riple/injector/BasicTest.java @@ -36,7 +36,7 @@ public class BasicTest extends BaseInjectorTest { @Test public void skip_duplicate_annotation() { - Change Change = + Change change = new AddMarkerAnnotation( new OnMethod("Super.java", "com.uber.Super", "test()"), "javax.annotation.Nullable"); injectorTestHelper @@ -57,7 +57,7 @@ public void skip_duplicate_annotation() { " return new Object();", " }", "}") - .addChanges(Change, Change.duplicate(), Change.duplicate()) + .addChanges(change, change.duplicate(), change.duplicate()) .start(); } 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 d1d007d1b..29b4b2317 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; @@ -468,7 +469,7 @@ public void proper_report_in_err_std_for_class_not_found_test() { 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 326a7baaf..fdfd42af8 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,8 @@ package edu.ucr.cs.riple.injector.tools; +import com.google.common.base.Splitter; + import java.nio.file.Path; public class Utility { @@ -38,7 +40,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); } From a51917891564715fd7b52694797c35672942b91c Mon Sep 17 00:00:00 2001 From: nimakarimipour Date: Wed, 28 Dec 2022 21:56:02 -0800 Subject: [PATCH 6/9] reformat --- .../test/java/edu/ucr/cs/riple/injector/tools/Utility.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 fdfd42af8..c6ff10e31 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 @@ -25,7 +25,6 @@ package edu.ucr.cs.riple.injector.tools; import com.google.common.base.Splitter; - import java.nio.file.Path; public class Utility { @@ -40,7 +39,8 @@ public class Utility { */ public static Path pathOf(Path root, String path) { Path ans = root; - Iterable dirs = Splitter.on('/').split(path);; + Iterable dirs = Splitter.on('/').split(path); + ; for (String dir : dirs) { ans = ans.resolve(dir); } From fb4d27cf9417b5396cee23bfe8b156ed2916c2da Mon Sep 17 00:00:00 2001 From: nimakarimipour Date: Wed, 28 Dec 2022 22:03:15 -0800 Subject: [PATCH 7/9] update comment --- build.gradle | 3 ++- .../src/test/java/edu/ucr/cs/riple/injector/tools/Utility.java | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 1ab26be2b..7dde6d027 100644 --- a/build.gradle +++ b/build.gradle @@ -48,7 +48,8 @@ subprojects { proj -> proj.dependencies { errorprone deps.build.errorProneCore errorproneJavac deps.build.errorProneJavac - // just to prevent javac crash. + // 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") 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 b83015bc6..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 @@ -40,7 +40,6 @@ public class Utility { public static Path pathOf(Path root, String path) { Path ans = root; Iterable dirs = Splitter.on('/').split(path); - ; for (String dir : dirs) { ans = ans.resolve(dir); } From 6517fba69335d5a5e7038d61722e0065a5eec73a Mon Sep 17 00:00:00 2001 From: nimakarimipour Date: Mon, 2 Jan 2023 09:22:33 -0500 Subject: [PATCH 8/9] change linkedList to arrayList --- .../cs/riple/core/metadata/graph/ConflictGraph.java | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) 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 de0e95cf0..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", "unchecked"}) 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; } From a3d4fe0566bc67cc5c0f116705e519931beebfb3 Mon Sep 17 00:00:00 2001 From: nimakarimipour Date: Sun, 12 Mar 2023 16:19:34 -0500 Subject: [PATCH 9/9] update --- .../java/edu/ucr/cs/riple/injector/location/Location.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 b4b984d1a..6eb4a8235 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 @@ -101,8 +101,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)); } protected abstract Modification applyToMember(NodeList> clazz, Change change);