From 8b0eba78aabb93c7c2b1171de27f31d283de23e4 Mon Sep 17 00:00:00 2001 From: Jami Cogswell Date: Sat, 1 Apr 2023 14:51:42 -0400 Subject: [PATCH 1/5] Java: add UnsupportedOperationException to topJdkApiName --- java/ql/src/Metrics/Summaries/TopJdkApis.qll | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/java/ql/src/Metrics/Summaries/TopJdkApis.qll b/java/ql/src/Metrics/Summaries/TopJdkApis.qll index b0a8902b12b..5358cf425b0 100644 --- a/java/ql/src/Metrics/Summaries/TopJdkApis.qll +++ b/java/ql/src/Metrics/Summaries/TopJdkApis.qll @@ -56,7 +56,8 @@ predicate topJdkApiName(string apiName) { "java.lang.StringBuilder#append(int)", "java.util.Objects#requireNonNull(Object,String)", "java.nio.file.Path#resolve(String)", "java.lang.Enum#toString()", "java.lang.RuntimeException#RuntimeException(Throwable)", "java.util.Collection#size()", - "java.lang.String#charAt(int)", "java.util.stream.Stream#forEach(Consumer)", + "java.lang.String#charAt(int)", + "java.lang.UnsupportedOperationException#UnsupportedOperationException(String)", "java.util.Map#isEmpty()", "java.lang.String#valueOf(int)", // top 200 JDK APIs "java.lang.Integer#intValue()", "java.util.ArrayList#size()", From 6b695434b7a5b6b10925411a925c1a787d0c1cd2 Mon Sep 17 00:00:00 2001 From: Jami Cogswell Date: Thu, 6 Apr 2023 10:19:19 -0400 Subject: [PATCH 2/5] Java: add yml model for UnsupportedOperationException; resolve conflict --- java/ql/lib/ext/java.lang.model.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/java/ql/lib/ext/java.lang.model.yml b/java/ql/lib/ext/java.lang.model.yml index 4295225f092..2a5e6be07e3 100644 --- a/java/ql/lib/ext/java.lang.model.yml +++ b/java/ql/lib/ext/java.lang.model.yml @@ -132,6 +132,8 @@ extensions: - ["java.lang", "Throwable", True, "getMessage", "()", "", "Argument[this].SyntheticField[java.lang.Throwable.message]", "ReturnValue", "value", "manual"] - ["java.lang", "Throwable", True, "getLocalizedMessage", "()", "", "Argument[this].SyntheticField[java.lang.Throwable.message]", "ReturnValue", "value", "manual"] - ["java.lang", "Throwable", True, "toString", "()", "", "Argument[this].SyntheticField[java.lang.Throwable.message]", "ReturnValue", "taint", "manual"] + - ["java.lang", "UnsupportedOperationException", False, "UnsupportedOperationException", "(String)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.message]", "value", "manual"] + - addsTo: pack: codeql/java-all extensible: neutralModel From 01dd2647d479cc5c8bebe50acb076cb34ebb2291 Mon Sep 17 00:00:00 2001 From: Jami Cogswell Date: Sat, 1 Apr 2023 15:05:09 -0400 Subject: [PATCH 3/5] Java: add test case for yml model --- java/ql/test/ext/TestModels/Test.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/java/ql/test/ext/TestModels/Test.java b/java/ql/test/ext/TestModels/Test.java index 0f52da636e6..021047bb5e2 100644 --- a/java/ql/test/ext/TestModels/Test.java +++ b/java/ql/test/ext/TestModels/Test.java @@ -44,6 +44,9 @@ public class Test { Exception e4 = new IllegalStateException((String)source()); sink((String)e4.getMessage()); // $hasValueFlow + Exception e5 = new UnsupportedOperationException((String)source()); + sink((String)e5.getMessage()); // $hasValueFlow + Throwable t = new Throwable((Throwable)source()); sink((Throwable)t.getCause()); // $hasValueFlow From c4f8a9a2eb99375e66572bcef165cd00a8c30dae Mon Sep 17 00:00:00 2001 From: Jami Cogswell Date: Thu, 6 Apr 2023 10:21:53 -0400 Subject: [PATCH 4/5] Java: update genVsMan query test case; resolve conflict --- .../java/lang/UnsupportedOperationException.java | 9 +++++++++ .../TopJdkApisTest/TopJdkApisTest.expected | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 java/ql/test/query-tests/Metrics/GeneratedVsManualCoverage/TopJdkApisTest/TopJdkApis/java/lang/UnsupportedOperationException.java diff --git a/java/ql/test/query-tests/Metrics/GeneratedVsManualCoverage/TopJdkApisTest/TopJdkApis/java/lang/UnsupportedOperationException.java b/java/ql/test/query-tests/Metrics/GeneratedVsManualCoverage/TopJdkApisTest/TopJdkApis/java/lang/UnsupportedOperationException.java new file mode 100644 index 00000000000..1d24a9f9247 --- /dev/null +++ b/java/ql/test/query-tests/Metrics/GeneratedVsManualCoverage/TopJdkApisTest/TopJdkApis/java/lang/UnsupportedOperationException.java @@ -0,0 +1,9 @@ +// Manually created from java.lang.UnsupportedOperationException for testing purposes + +package java.lang; + + +public class UnsupportedOperationException +{ + public UnsupportedOperationException(String p0){} // manual summary +} diff --git a/java/ql/test/query-tests/Metrics/GeneratedVsManualCoverage/TopJdkApisTest/TopJdkApisTest.expected b/java/ql/test/query-tests/Metrics/GeneratedVsManualCoverage/TopJdkApisTest/TopJdkApisTest.expected index aa7d0fbd4e0..d32407f4ddf 100644 --- a/java/ql/test/query-tests/Metrics/GeneratedVsManualCoverage/TopJdkApisTest/TopJdkApisTest.expected +++ b/java/ql/test/query-tests/Metrics/GeneratedVsManualCoverage/TopJdkApisTest/TopJdkApisTest.expected @@ -1,5 +1,5 @@ | java.io | 0 | 0 | 22 | 9 | 31 | 0.7096774193548387 | 0.0 | 0.7096774193548387 | 0.0 | NaN | 0.2903225806451613 | -| java.lang | 0 | 0 | 59 | 89 | 148 | 0.39864864864864863 | 0.0 | 0.39864864864864863 | 0.0 | NaN | 0.6013513513513513 | +| java.lang | 0 | 0 | 60 | 89 | 149 | 0.40268456375838924 | 0.0 | 0.40268456375838924 | 0.0 | NaN | 0.5973154362416108 | | java.lang.invoke | 0 | 0 | 0 | 1 | 1 | 0.0 | 0.0 | 0.0 | NaN | NaN | 1.0 | | java.lang.reflect | 0 | 0 | 0 | 4 | 4 | 0.0 | 0.0 | 0.0 | NaN | NaN | 1.0 | | java.math | 0 | 0 | 0 | 16 | 16 | 0.0 | 0.0 | 0.0 | NaN | NaN | 1.0 | From 6a103f5070ad36e6247db0a0882dfdd59cb0ee45 Mon Sep 17 00:00:00 2001 From: Jami Cogswell Date: Sat, 1 Apr 2023 15:20:17 -0400 Subject: [PATCH 5/5] Java: add change note --- .../2023-04-03-UnsupportedOperationException-summary.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 java/ql/lib/change-notes/2023-04-03-UnsupportedOperationException-summary.md diff --git a/java/ql/lib/change-notes/2023-04-03-UnsupportedOperationException-summary.md b/java/ql/lib/change-notes/2023-04-03-UnsupportedOperationException-summary.md new file mode 100644 index 00000000000..178e05b818b --- /dev/null +++ b/java/ql/lib/change-notes/2023-04-03-UnsupportedOperationException-summary.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added a summary model for the `java.lang.UnsupportedOperationException(String)` constructor.