diff --git a/Java/commons-lang-IEEE754rUtils_160/Dockerfile b/Java/commons-lang-IEEE754rUtils_160/Dockerfile new file mode 100644 index 000000000..7b7fbe349 --- /dev/null +++ b/Java/commons-lang-IEEE754rUtils_160/Dockerfile @@ -0,0 +1,18 @@ +FROM ghcr.io/kupl/starlab-benchmarks/java-base:commons-lang + +ENV TZ=Asia/Seoul + +COPY ./metadata.json . +COPY ./npe.json . +COPY ./buggy.java /tmp/buggy.java +RUN export BUGGY_PATH=$(cat metadata.json | jq -r ".npe.filepath") \ + && export BUGGY_LINE=$(cat metadata.json | jq -r ".npe.line") \ + && export BUGGY_MTHD=$(cat metadata.json | jq -r ".npe.npe_method") \ + && mv /tmp/buggy.java $BUGGY_PATH \ + && echo "[{\"filepath\": \"$BUGGY_PATH\", \"line\": $BUGGY_LINE, \"method_name\": \"$BUGGY_MTHD\"}]" | jq . > traces.json + +RUN git init . && git add -A + +RUN $(cat metadata.json | jq -r ".buildCommand") + +RUN $(cat metadata.json | jq -r ".testCommand"); if [ $? -eq 0 ]; then exit 1; fi diff --git a/Java/commons-lang-IEEE754rUtils_160/buggy.java b/Java/commons-lang-IEEE754rUtils_160/buggy.java new file mode 100644 index 000000000..f181c090d --- /dev/null +++ b/Java/commons-lang-IEEE754rUtils_160/buggy.java @@ -0,0 +1,276 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.commons.lang3.math; + +import org.apache.commons.lang3.Validate; + +/** + *
Provides IEEE-754r variants of NumberUtils methods.
+ * + *See: http://en.wikipedia.org/wiki/IEEE_754r
+ * + * @since 2.4 + */ +public class IEEE754rUtils { + + /** + *Returns the minimum value in an array.
+ * + * @param array an array, must not be null or empty + * @return the minimum value in the array + * @throws IllegalArgumentException ifarray
is null
+ * @throws IllegalArgumentException if array
is empty
+ * @since 3.4 Changed signature from min(double[]) to min(double...)
+ */
+ public static double min(final double... array) {
+ // Validates input
+ if (array == null) {
+ throw new IllegalArgumentException("The Array must not be null");
+ }
+ Validate.isTrue(array.length != 0, "Array cannot be empty.");
+
+
+ // Finds and returns min
+ double min = array[0];
+ for (int i = 1; i < array.length; i++) {
+ min = min(array[i], min);
+ }
+
+ return min;
+ }
+
+ /**
+ * Returns the minimum value in an array.
+ * + * @param array an array, must not be null or empty + * @return the minimum value in the array + * @throws IllegalArgumentException ifarray
is null
+ * @throws IllegalArgumentException if array
is empty
+ * @since 3.4 Changed signature from min(float[]) to min(float...)
+ */
+ public static float min(final float... array) {
+ // Validates input
+ if (array == null) {
+ throw new IllegalArgumentException("The Array must not be null");
+ }
+ Validate.isTrue(array.length != 0, "Array cannot be empty.");
+
+ // Finds and returns min
+ float min = array[0];
+ for (int i = 1; i < array.length; i++) {
+ min = min(array[i], min);
+ }
+
+ return min;
+ }
+
+ /**
+ * Gets the minimum of three double
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @param c value 3 + * @return the smallest of the values + */ + public static double min(final double a, final double b, final double c) { + return min(min(a, b), c); + } + + /** + *Gets the minimum of two double
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @return the smallest of the values + */ + public static double min(final double a, final double b) { + if(Double.isNaN(a)) { + return b; + } else + if(Double.isNaN(b)) { + return a; + } else { + return Math.min(a, b); + } + } + + /** + *Gets the minimum of three float
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @param c value 3 + * @return the smallest of the values + */ + public static float min(final float a, final float b, final float c) { + return min(min(a, b), c); + } + + /** + *Gets the minimum of two float
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @return the smallest of the values + */ + public static float min(final float a, final float b) { + if(Float.isNaN(a)) { + return b; + } else + if(Float.isNaN(b)) { + return a; + } else { + return Math.min(a, b); + } + } + + /** + *Returns the maximum value in an array.
+ * + * @param array an array, must not be null or empty + * @return the minimum value in the array + * @throws IllegalArgumentException ifarray
is null
+ * @throws IllegalArgumentException if array
is empty
+ * @since 3.4 Changed signature from max(double[]) to max(double...)
+ */
+/**
+ * Returns the maximum value in an array.
+ * + * @param array + * an array, must not be null or empty + * @return the minimum value in the array + * @throws IllegalArgumentException + * ifarray
is null
+ * @throws IllegalArgumentException
+ * if array
is empty
+ * @since 3.4 Changed signature from max(double[]) to max(double...)
+ */
+public static double max(final double... array) {
+ {
+ org.apache.commons.lang3.Validate.isTrue(/* NPEX_NULL_EXP */
+ array.length != 0, "Array cannot be empty.");
+ // Finds and returns max
+ double max = array[0];
+ for (int j = 1; j < array.length; j++) {
+ max = org.apache.commons.lang3.math.IEEE754rUtils.max(array[j], max);
+ }
+ return max;
+ }
+}
+
+ /**
+ * Returns the maximum value in an array.
+ * + * @param array an array, must not be null or empty + * @return the minimum value in the array + * @throws IllegalArgumentException ifarray
is null
+ * @throws IllegalArgumentException if array
is empty
+ * @since 3.4 Changed signature from max(float[]) to max(float...)
+ */
+ public static float max(final float... array) {
+ // Validates input
+ if (array == null) {
+ throw new IllegalArgumentException("The Array must not be null");
+ }
+ Validate.isTrue(array.length != 0, "Array cannot be empty.");
+
+ // Finds and returns max
+ float max = array[0];
+ for (int j = 1; j < array.length; j++) {
+ max = max(array[j], max);
+ }
+
+ return max;
+ }
+
+ /**
+ * Gets the maximum of three double
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @param c value 3 + * @return the largest of the values + */ + public static double max(final double a, final double b, final double c) { + return max(max(a, b), c); + } + + /** + *Gets the maximum of two double
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @return the largest of the values + */ + public static double max(final double a, final double b) { + if(Double.isNaN(a)) { + return b; + } else + if(Double.isNaN(b)) { + return a; + } else { + return Math.max(a, b); + } + } + + /** + *Gets the maximum of three float
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @param c value 3 + * @return the largest of the values + */ + public static float max(final float a, final float b, final float c) { + return max(max(a, b), c); + } + + /** + *Gets the maximum of two float
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @return the largest of the values + */ + public static float max(final float a, final float b) { + if(Float.isNaN(a)) { + return b; + } else + if(Float.isNaN(b)) { + return a; + } else { + return Math.max(a, b); + } + } + +} diff --git a/Java/commons-lang-IEEE754rUtils_160/metadata.json b/Java/commons-lang-IEEE754rUtils_160/metadata.json new file mode 100644 index 000000000..1418de558 --- /dev/null +++ b/Java/commons-lang-IEEE754rUtils_160/metadata.json @@ -0,0 +1,21 @@ +{ + "language": "java", + "id": "commons-lang-IEEE754rUtils_160", + "buggyPath": ".", + "referencePath": null, + "buildCommand": "mvn package -V -B -Denforcer.skip=true -Dcheckstyle.skip=true -Dcobertura.skip=true -Drat.skip=true -Dlicense.skip=true -Dfindbugs.skip=true -Dgpg.skip=true -Dskip.npm=true -Dskip.gulp=true -Dskip.bower=true -Drat.numUnapprovedLicenses=100 -DskipTests=true -DskipITs=true -Dtest=None -DfailIfNoTests=false", + "testCommand": "mvn test -V -B -Denforcer.skip=true -Dcheckstyle.skip=true -Dcobertura.skip=true -Drat.skip=true -Dlicense.skip=true -Dfindbugs.skip=true -Dgpg.skip=true -Dskip.npm=true -Dskip.gulp=true -Dskip.bower=true -Drat.numUnapprovedLicenses=100", + "categories": [ + "safety", + "npe" + ], + "npe": { + "filepath": "src/main/java/org/apache/commons/lang3/math/IEEE754rUtils.java", + "line": 173, + "npe_method": "max", + "deref_field": "array", + "npe_class": "IEEE754rUtils", + "repo": "commons-lang", + "bug_id": "IEEE754rUtils_160" + } +} diff --git a/Java/commons-lang-IEEE754rUtils_160/npe.json b/Java/commons-lang-IEEE754rUtils_160/npe.json new file mode 100644 index 000000000..e0c794a37 --- /dev/null +++ b/Java/commons-lang-IEEE754rUtils_160/npe.json @@ -0,0 +1,7 @@ +{ + "filepath": "src/main/java/org/apache/commons/lang3/math/IEEE754rUtils.java", + "line": 173, + "npe_method": "max", + "deref_field": "array", + "npe_class": "IEEE754rUtils" +} \ No newline at end of file diff --git a/Java/commons-lang-IEEE754rUtils_185/Dockerfile b/Java/commons-lang-IEEE754rUtils_185/Dockerfile new file mode 100644 index 000000000..7b7fbe349 --- /dev/null +++ b/Java/commons-lang-IEEE754rUtils_185/Dockerfile @@ -0,0 +1,18 @@ +FROM ghcr.io/kupl/starlab-benchmarks/java-base:commons-lang + +ENV TZ=Asia/Seoul + +COPY ./metadata.json . +COPY ./npe.json . +COPY ./buggy.java /tmp/buggy.java +RUN export BUGGY_PATH=$(cat metadata.json | jq -r ".npe.filepath") \ + && export BUGGY_LINE=$(cat metadata.json | jq -r ".npe.line") \ + && export BUGGY_MTHD=$(cat metadata.json | jq -r ".npe.npe_method") \ + && mv /tmp/buggy.java $BUGGY_PATH \ + && echo "[{\"filepath\": \"$BUGGY_PATH\", \"line\": $BUGGY_LINE, \"method_name\": \"$BUGGY_MTHD\"}]" | jq . > traces.json + +RUN git init . && git add -A + +RUN $(cat metadata.json | jq -r ".buildCommand") + +RUN $(cat metadata.json | jq -r ".testCommand"); if [ $? -eq 0 ]; then exit 1; fi diff --git a/Java/commons-lang-IEEE754rUtils_185/buggy.java b/Java/commons-lang-IEEE754rUtils_185/buggy.java new file mode 100644 index 000000000..7498106eb --- /dev/null +++ b/Java/commons-lang-IEEE754rUtils_185/buggy.java @@ -0,0 +1,276 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.commons.lang3.math; + +import org.apache.commons.lang3.Validate; + +/** + *Provides IEEE-754r variants of NumberUtils methods.
+ * + *See: http://en.wikipedia.org/wiki/IEEE_754r
+ * + * @since 2.4 + */ +public class IEEE754rUtils { + + /** + *Returns the minimum value in an array.
+ * + * @param array an array, must not be null or empty + * @return the minimum value in the array + * @throws IllegalArgumentException ifarray
is null
+ * @throws IllegalArgumentException if array
is empty
+ * @since 3.4 Changed signature from min(double[]) to min(double...)
+ */
+ public static double min(final double... array) {
+ // Validates input
+ if (array == null) {
+ throw new IllegalArgumentException("The Array must not be null");
+ }
+ Validate.isTrue(array.length != 0, "Array cannot be empty.");
+
+
+ // Finds and returns min
+ double min = array[0];
+ for (int i = 1; i < array.length; i++) {
+ min = min(array[i], min);
+ }
+
+ return min;
+ }
+
+ /**
+ * Returns the minimum value in an array.
+ * + * @param array an array, must not be null or empty + * @return the minimum value in the array + * @throws IllegalArgumentException ifarray
is null
+ * @throws IllegalArgumentException if array
is empty
+ * @since 3.4 Changed signature from min(float[]) to min(float...)
+ */
+ public static float min(final float... array) {
+ // Validates input
+ if (array == null) {
+ throw new IllegalArgumentException("The Array must not be null");
+ }
+ Validate.isTrue(array.length != 0, "Array cannot be empty.");
+
+ // Finds and returns min
+ float min = array[0];
+ for (int i = 1; i < array.length; i++) {
+ min = min(array[i], min);
+ }
+
+ return min;
+ }
+
+ /**
+ * Gets the minimum of three double
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @param c value 3 + * @return the smallest of the values + */ + public static double min(final double a, final double b, final double c) { + return min(min(a, b), c); + } + + /** + *Gets the minimum of two double
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @return the smallest of the values + */ + public static double min(final double a, final double b) { + if(Double.isNaN(a)) { + return b; + } else + if(Double.isNaN(b)) { + return a; + } else { + return Math.min(a, b); + } + } + + /** + *Gets the minimum of three float
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @param c value 3 + * @return the smallest of the values + */ + public static float min(final float a, final float b, final float c) { + return min(min(a, b), c); + } + + /** + *Gets the minimum of two float
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @return the smallest of the values + */ + public static float min(final float a, final float b) { + if(Float.isNaN(a)) { + return b; + } else + if(Float.isNaN(b)) { + return a; + } else { + return Math.min(a, b); + } + } + + /** + *Returns the maximum value in an array.
+ * + * @param array an array, must not be null or empty + * @return the minimum value in the array + * @throws IllegalArgumentException ifarray
is null
+ * @throws IllegalArgumentException if array
is empty
+ * @since 3.4 Changed signature from max(double[]) to max(double...)
+ */
+ public static double max(final double... array) {
+ // Validates input
+ if (array== null) {
+ throw new IllegalArgumentException("The Array must not be null");
+ }
+ Validate.isTrue(array.length != 0, "Array cannot be empty.");
+
+ // Finds and returns max
+ double max = array[0];
+ for (int j = 1; j < array.length; j++) {
+ max = max(array[j], max);
+ }
+
+ return max;
+ }
+
+ /**
+ * Returns the maximum value in an array.
+ * + * @param array an array, must not be null or empty + * @return the minimum value in the array + * @throws IllegalArgumentException ifarray
is null
+ * @throws IllegalArgumentException if array
is empty
+ * @since 3.4 Changed signature from max(float[]) to max(float...)
+ */
+/**
+ * Returns the maximum value in an array.
+ * + * @param array + * an array, must not be null or empty + * @return the minimum value in the array + * @throws IllegalArgumentException + * ifarray
is null
+ * @throws IllegalArgumentException
+ * if array
is empty
+ * @since 3.4 Changed signature from max(float[]) to max(float...)
+ */
+public static float max(final float... array) {
+ {
+ org.apache.commons.lang3.Validate.isTrue(/* NPEX_NULL_EXP */
+ array.length != 0, "Array cannot be empty.");
+ // Finds and returns max
+ float max = array[0];
+ for (int j = 1; j < array.length; j++) {
+ max = org.apache.commons.lang3.math.IEEE754rUtils.max(array[j], max);
+ }
+ return max;
+ }
+}
+
+ /**
+ * Gets the maximum of three double
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @param c value 3 + * @return the largest of the values + */ + public static double max(final double a, final double b, final double c) { + return max(max(a, b), c); + } + + /** + *Gets the maximum of two double
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @return the largest of the values + */ + public static double max(final double a, final double b) { + if(Double.isNaN(a)) { + return b; + } else + if(Double.isNaN(b)) { + return a; + } else { + return Math.max(a, b); + } + } + + /** + *Gets the maximum of three float
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @param c value 3 + * @return the largest of the values + */ + public static float max(final float a, final float b, final float c) { + return max(max(a, b), c); + } + + /** + *Gets the maximum of two float
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @return the largest of the values + */ + public static float max(final float a, final float b) { + if(Float.isNaN(a)) { + return b; + } else + if(Float.isNaN(b)) { + return a; + } else { + return Math.max(a, b); + } + } + +} diff --git a/Java/commons-lang-IEEE754rUtils_185/metadata.json b/Java/commons-lang-IEEE754rUtils_185/metadata.json new file mode 100644 index 000000000..536c0c424 --- /dev/null +++ b/Java/commons-lang-IEEE754rUtils_185/metadata.json @@ -0,0 +1,21 @@ +{ + "language": "java", + "id": "commons-lang-IEEE754rUtils_185", + "buggyPath": ".", + "referencePath": null, + "buildCommand": "mvn package -V -B -Denforcer.skip=true -Dcheckstyle.skip=true -Dcobertura.skip=true -Drat.skip=true -Dlicense.skip=true -Dfindbugs.skip=true -Dgpg.skip=true -Dskip.npm=true -Dskip.gulp=true -Dskip.bower=true -Drat.numUnapprovedLicenses=100 -DskipTests=true -DskipITs=true -Dtest=None -DfailIfNoTests=false", + "testCommand": "mvn test -V -B -Denforcer.skip=true -Dcheckstyle.skip=true -Dcobertura.skip=true -Drat.skip=true -Dlicense.skip=true -Dfindbugs.skip=true -Dgpg.skip=true -Dskip.npm=true -Dskip.gulp=true -Dskip.bower=true -Drat.numUnapprovedLicenses=100", + "categories": [ + "safety", + "npe" + ], + "npe": { + "filepath": "src/main/java/org/apache/commons/lang3/math/IEEE754rUtils.java", + "line": 198, + "npe_method": "max", + "deref_field": "array", + "npe_class": "IEEE754rUtils", + "repo": "commons-lang", + "bug_id": "IEEE754rUtils_185" + } +} diff --git a/Java/commons-lang-IEEE754rUtils_185/npe.json b/Java/commons-lang-IEEE754rUtils_185/npe.json new file mode 100644 index 000000000..600294093 --- /dev/null +++ b/Java/commons-lang-IEEE754rUtils_185/npe.json @@ -0,0 +1,7 @@ +{ + "filepath": "src/main/java/org/apache/commons/lang3/math/IEEE754rUtils.java", + "line": 198, + "npe_method": "max", + "deref_field": "array", + "npe_class": "IEEE754rUtils" +} \ No newline at end of file diff --git a/Java/commons-lang-IEEE754rUtils_41/Dockerfile b/Java/commons-lang-IEEE754rUtils_41/Dockerfile new file mode 100644 index 000000000..7b7fbe349 --- /dev/null +++ b/Java/commons-lang-IEEE754rUtils_41/Dockerfile @@ -0,0 +1,18 @@ +FROM ghcr.io/kupl/starlab-benchmarks/java-base:commons-lang + +ENV TZ=Asia/Seoul + +COPY ./metadata.json . +COPY ./npe.json . +COPY ./buggy.java /tmp/buggy.java +RUN export BUGGY_PATH=$(cat metadata.json | jq -r ".npe.filepath") \ + && export BUGGY_LINE=$(cat metadata.json | jq -r ".npe.line") \ + && export BUGGY_MTHD=$(cat metadata.json | jq -r ".npe.npe_method") \ + && mv /tmp/buggy.java $BUGGY_PATH \ + && echo "[{\"filepath\": \"$BUGGY_PATH\", \"line\": $BUGGY_LINE, \"method_name\": \"$BUGGY_MTHD\"}]" | jq . > traces.json + +RUN git init . && git add -A + +RUN $(cat metadata.json | jq -r ".buildCommand") + +RUN $(cat metadata.json | jq -r ".testCommand"); if [ $? -eq 0 ]; then exit 1; fi diff --git a/Java/commons-lang-IEEE754rUtils_41/buggy.java b/Java/commons-lang-IEEE754rUtils_41/buggy.java new file mode 100644 index 000000000..c46b46213 --- /dev/null +++ b/Java/commons-lang-IEEE754rUtils_41/buggy.java @@ -0,0 +1,275 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.commons.lang3.math; + +import org.apache.commons.lang3.Validate; + +/** + *Provides IEEE-754r variants of NumberUtils methods.
+ * + *See: http://en.wikipedia.org/wiki/IEEE_754r
+ * + * @since 2.4 + */ +public class IEEE754rUtils { + + /** + *Returns the minimum value in an array.
+ * + * @param array an array, must not be null or empty + * @return the minimum value in the array + * @throws IllegalArgumentException ifarray
is null
+ * @throws IllegalArgumentException if array
is empty
+ * @since 3.4 Changed signature from min(double[]) to min(double...)
+ */
+/**
+ * Returns the minimum value in an array.
+ * + * @param array + * an array, must not be null or empty + * @return the minimum value in the array + * @throws IllegalArgumentException + * ifarray
is null
+ * @throws IllegalArgumentException
+ * if array
is empty
+ * @since 3.4 Changed signature from min(double[]) to min(double...)
+ */
+public static double min(final double... array) {
+ {
+ org.apache.commons.lang3.Validate.isTrue(/* NPEX_NULL_EXP */
+ array.length != 0, "Array cannot be empty.");
+ // Finds and returns min
+ double min = array[0];
+ for (int i = 1; i < array.length; i++) {
+ min = org.apache.commons.lang3.math.IEEE754rUtils.min(array[i], min);
+ }
+ return min;
+ }
+}
+
+ /**
+ * Returns the minimum value in an array.
+ * + * @param array an array, must not be null or empty + * @return the minimum value in the array + * @throws IllegalArgumentException ifarray
is null
+ * @throws IllegalArgumentException if array
is empty
+ * @since 3.4 Changed signature from min(float[]) to min(float...)
+ */
+ public static float min(final float... array) {
+ // Validates input
+ if (array == null) {
+ throw new IllegalArgumentException("The Array must not be null");
+ }
+ Validate.isTrue(array.length != 0, "Array cannot be empty.");
+
+ // Finds and returns min
+ float min = array[0];
+ for (int i = 1; i < array.length; i++) {
+ min = min(array[i], min);
+ }
+
+ return min;
+ }
+
+ /**
+ * Gets the minimum of three double
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @param c value 3 + * @return the smallest of the values + */ + public static double min(final double a, final double b, final double c) { + return min(min(a, b), c); + } + + /** + *Gets the minimum of two double
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @return the smallest of the values + */ + public static double min(final double a, final double b) { + if(Double.isNaN(a)) { + return b; + } else + if(Double.isNaN(b)) { + return a; + } else { + return Math.min(a, b); + } + } + + /** + *Gets the minimum of three float
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @param c value 3 + * @return the smallest of the values + */ + public static float min(final float a, final float b, final float c) { + return min(min(a, b), c); + } + + /** + *Gets the minimum of two float
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @return the smallest of the values + */ + public static float min(final float a, final float b) { + if(Float.isNaN(a)) { + return b; + } else + if(Float.isNaN(b)) { + return a; + } else { + return Math.min(a, b); + } + } + + /** + *Returns the maximum value in an array.
+ * + * @param array an array, must not be null or empty + * @return the minimum value in the array + * @throws IllegalArgumentException ifarray
is null
+ * @throws IllegalArgumentException if array
is empty
+ * @since 3.4 Changed signature from max(double[]) to max(double...)
+ */
+ public static double max(final double... array) {
+ // Validates input
+ if (array== null) {
+ throw new IllegalArgumentException("The Array must not be null");
+ }
+ Validate.isTrue(array.length != 0, "Array cannot be empty.");
+
+ // Finds and returns max
+ double max = array[0];
+ for (int j = 1; j < array.length; j++) {
+ max = max(array[j], max);
+ }
+
+ return max;
+ }
+
+ /**
+ * Returns the maximum value in an array.
+ * + * @param array an array, must not be null or empty + * @return the minimum value in the array + * @throws IllegalArgumentException ifarray
is null
+ * @throws IllegalArgumentException if array
is empty
+ * @since 3.4 Changed signature from max(float[]) to max(float...)
+ */
+ public static float max(final float... array) {
+ // Validates input
+ if (array == null) {
+ throw new IllegalArgumentException("The Array must not be null");
+ }
+ Validate.isTrue(array.length != 0, "Array cannot be empty.");
+
+ // Finds and returns max
+ float max = array[0];
+ for (int j = 1; j < array.length; j++) {
+ max = max(array[j], max);
+ }
+
+ return max;
+ }
+
+ /**
+ * Gets the maximum of three double
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @param c value 3 + * @return the largest of the values + */ + public static double max(final double a, final double b, final double c) { + return max(max(a, b), c); + } + + /** + *Gets the maximum of two double
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @return the largest of the values + */ + public static double max(final double a, final double b) { + if(Double.isNaN(a)) { + return b; + } else + if(Double.isNaN(b)) { + return a; + } else { + return Math.max(a, b); + } + } + + /** + *Gets the maximum of three float
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @param c value 3 + * @return the largest of the values + */ + public static float max(final float a, final float b, final float c) { + return max(max(a, b), c); + } + + /** + *Gets the maximum of two float
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @return the largest of the values + */ + public static float max(final float a, final float b) { + if(Float.isNaN(a)) { + return b; + } else + if(Float.isNaN(b)) { + return a; + } else { + return Math.max(a, b); + } + } + +} diff --git a/Java/commons-lang-IEEE754rUtils_41/metadata.json b/Java/commons-lang-IEEE754rUtils_41/metadata.json new file mode 100644 index 000000000..561bd925d --- /dev/null +++ b/Java/commons-lang-IEEE754rUtils_41/metadata.json @@ -0,0 +1,21 @@ +{ + "language": "java", + "id": "commons-lang-IEEE754rUtils_41", + "buggyPath": ".", + "referencePath": null, + "buildCommand": "mvn package -V -B -Denforcer.skip=true -Dcheckstyle.skip=true -Dcobertura.skip=true -Drat.skip=true -Dlicense.skip=true -Dfindbugs.skip=true -Dgpg.skip=true -Dskip.npm=true -Dskip.gulp=true -Dskip.bower=true -Drat.numUnapprovedLicenses=100 -DskipTests=true -DskipITs=true -Dtest=None -DfailIfNoTests=false", + "testCommand": "mvn test -V -B -Denforcer.skip=true -Dcheckstyle.skip=true -Dcobertura.skip=true -Drat.skip=true -Dlicense.skip=true -Dfindbugs.skip=true -Dgpg.skip=true -Dskip.npm=true -Dskip.gulp=true -Dskip.bower=true -Drat.numUnapprovedLicenses=100", + "categories": [ + "safety", + "npe" + ], + "npe": { + "filepath": "src/main/java/org/apache/commons/lang3/math/IEEE754rUtils.java", + "line": 54, + "npe_method": "min", + "deref_field": "array", + "npe_class": "IEEE754rUtils", + "repo": "commons-lang", + "bug_id": "IEEE754rUtils_41" + } +} diff --git a/Java/commons-lang-IEEE754rUtils_41/npe.json b/Java/commons-lang-IEEE754rUtils_41/npe.json new file mode 100644 index 000000000..a76c30415 --- /dev/null +++ b/Java/commons-lang-IEEE754rUtils_41/npe.json @@ -0,0 +1,7 @@ +{ + "filepath": "src/main/java/org/apache/commons/lang3/math/IEEE754rUtils.java", + "line": 54, + "npe_method": "min", + "deref_field": "array", + "npe_class": "IEEE754rUtils" +} \ No newline at end of file diff --git a/Java/commons-lang-IEEE754rUtils_67/Dockerfile b/Java/commons-lang-IEEE754rUtils_67/Dockerfile new file mode 100644 index 000000000..7b7fbe349 --- /dev/null +++ b/Java/commons-lang-IEEE754rUtils_67/Dockerfile @@ -0,0 +1,18 @@ +FROM ghcr.io/kupl/starlab-benchmarks/java-base:commons-lang + +ENV TZ=Asia/Seoul + +COPY ./metadata.json . +COPY ./npe.json . +COPY ./buggy.java /tmp/buggy.java +RUN export BUGGY_PATH=$(cat metadata.json | jq -r ".npe.filepath") \ + && export BUGGY_LINE=$(cat metadata.json | jq -r ".npe.line") \ + && export BUGGY_MTHD=$(cat metadata.json | jq -r ".npe.npe_method") \ + && mv /tmp/buggy.java $BUGGY_PATH \ + && echo "[{\"filepath\": \"$BUGGY_PATH\", \"line\": $BUGGY_LINE, \"method_name\": \"$BUGGY_MTHD\"}]" | jq . > traces.json + +RUN git init . && git add -A + +RUN $(cat metadata.json | jq -r ".buildCommand") + +RUN $(cat metadata.json | jq -r ".testCommand"); if [ $? -eq 0 ]; then exit 1; fi diff --git a/Java/commons-lang-IEEE754rUtils_67/buggy.java b/Java/commons-lang-IEEE754rUtils_67/buggy.java new file mode 100644 index 000000000..383f90178 --- /dev/null +++ b/Java/commons-lang-IEEE754rUtils_67/buggy.java @@ -0,0 +1,276 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.commons.lang3.math; + +import org.apache.commons.lang3.Validate; + +/** + *Provides IEEE-754r variants of NumberUtils methods.
+ * + *See: http://en.wikipedia.org/wiki/IEEE_754r
+ * + * @since 2.4 + */ +public class IEEE754rUtils { + + /** + *Returns the minimum value in an array.
+ * + * @param array an array, must not be null or empty + * @return the minimum value in the array + * @throws IllegalArgumentException ifarray
is null
+ * @throws IllegalArgumentException if array
is empty
+ * @since 3.4 Changed signature from min(double[]) to min(double...)
+ */
+ public static double min(final double... array) {
+ // Validates input
+ if (array == null) {
+ throw new IllegalArgumentException("The Array must not be null");
+ }
+ Validate.isTrue(array.length != 0, "Array cannot be empty.");
+
+
+ // Finds and returns min
+ double min = array[0];
+ for (int i = 1; i < array.length; i++) {
+ min = min(array[i], min);
+ }
+
+ return min;
+ }
+
+ /**
+ * Returns the minimum value in an array.
+ * + * @param array an array, must not be null or empty + * @return the minimum value in the array + * @throws IllegalArgumentException ifarray
is null
+ * @throws IllegalArgumentException if array
is empty
+ * @since 3.4 Changed signature from min(float[]) to min(float...)
+ */
+/**
+ * Returns the minimum value in an array.
+ * + * @param array + * an array, must not be null or empty + * @return the minimum value in the array + * @throws IllegalArgumentException + * ifarray
is null
+ * @throws IllegalArgumentException
+ * if array
is empty
+ * @since 3.4 Changed signature from min(float[]) to min(float...)
+ */
+public static float min(final float... array) {
+ {
+ org.apache.commons.lang3.Validate.isTrue(/* NPEX_NULL_EXP */
+ array.length != 0, "Array cannot be empty.");
+ // Finds and returns min
+ float min = array[0];
+ for (int i = 1; i < array.length; i++) {
+ min = org.apache.commons.lang3.math.IEEE754rUtils.min(array[i], min);
+ }
+ return min;
+ }
+}
+
+ /**
+ * Gets the minimum of three double
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @param c value 3 + * @return the smallest of the values + */ + public static double min(final double a, final double b, final double c) { + return min(min(a, b), c); + } + + /** + *Gets the minimum of two double
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @return the smallest of the values + */ + public static double min(final double a, final double b) { + if(Double.isNaN(a)) { + return b; + } else + if(Double.isNaN(b)) { + return a; + } else { + return Math.min(a, b); + } + } + + /** + *Gets the minimum of three float
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @param c value 3 + * @return the smallest of the values + */ + public static float min(final float a, final float b, final float c) { + return min(min(a, b), c); + } + + /** + *Gets the minimum of two float
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @return the smallest of the values + */ + public static float min(final float a, final float b) { + if(Float.isNaN(a)) { + return b; + } else + if(Float.isNaN(b)) { + return a; + } else { + return Math.min(a, b); + } + } + + /** + *Returns the maximum value in an array.
+ * + * @param array an array, must not be null or empty + * @return the minimum value in the array + * @throws IllegalArgumentException ifarray
is null
+ * @throws IllegalArgumentException if array
is empty
+ * @since 3.4 Changed signature from max(double[]) to max(double...)
+ */
+ public static double max(final double... array) {
+ // Validates input
+ if (array== null) {
+ throw new IllegalArgumentException("The Array must not be null");
+ }
+ Validate.isTrue(array.length != 0, "Array cannot be empty.");
+
+ // Finds and returns max
+ double max = array[0];
+ for (int j = 1; j < array.length; j++) {
+ max = max(array[j], max);
+ }
+
+ return max;
+ }
+
+ /**
+ * Returns the maximum value in an array.
+ * + * @param array an array, must not be null or empty + * @return the minimum value in the array + * @throws IllegalArgumentException ifarray
is null
+ * @throws IllegalArgumentException if array
is empty
+ * @since 3.4 Changed signature from max(float[]) to max(float...)
+ */
+ public static float max(final float... array) {
+ // Validates input
+ if (array == null) {
+ throw new IllegalArgumentException("The Array must not be null");
+ }
+ Validate.isTrue(array.length != 0, "Array cannot be empty.");
+
+ // Finds and returns max
+ float max = array[0];
+ for (int j = 1; j < array.length; j++) {
+ max = max(array[j], max);
+ }
+
+ return max;
+ }
+
+ /**
+ * Gets the maximum of three double
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @param c value 3 + * @return the largest of the values + */ + public static double max(final double a, final double b, final double c) { + return max(max(a, b), c); + } + + /** + *Gets the maximum of two double
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @return the largest of the values + */ + public static double max(final double a, final double b) { + if(Double.isNaN(a)) { + return b; + } else + if(Double.isNaN(b)) { + return a; + } else { + return Math.max(a, b); + } + } + + /** + *Gets the maximum of three float
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @param c value 3 + * @return the largest of the values + */ + public static float max(final float a, final float b, final float c) { + return max(max(a, b), c); + } + + /** + *Gets the maximum of two float
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
+ * + * @param a value 1 + * @param b value 2 + * @return the largest of the values + */ + public static float max(final float a, final float b) { + if(Float.isNaN(a)) { + return b; + } else + if(Float.isNaN(b)) { + return a; + } else { + return Math.max(a, b); + } + } + +} diff --git a/Java/commons-lang-IEEE754rUtils_67/metadata.json b/Java/commons-lang-IEEE754rUtils_67/metadata.json new file mode 100644 index 000000000..04eea51c5 --- /dev/null +++ b/Java/commons-lang-IEEE754rUtils_67/metadata.json @@ -0,0 +1,21 @@ +{ + "language": "java", + "id": "commons-lang-IEEE754rUtils_67", + "buggyPath": ".", + "referencePath": null, + "buildCommand": "mvn package -V -B -Denforcer.skip=true -Dcheckstyle.skip=true -Dcobertura.skip=true -Drat.skip=true -Dlicense.skip=true -Dfindbugs.skip=true -Dgpg.skip=true -Dskip.npm=true -Dskip.gulp=true -Dskip.bower=true -Drat.numUnapprovedLicenses=100 -DskipTests=true -DskipITs=true -Dtest=None -DfailIfNoTests=false", + "testCommand": "mvn test -V -B -Denforcer.skip=true -Dcheckstyle.skip=true -Dcobertura.skip=true -Drat.skip=true -Dlicense.skip=true -Dfindbugs.skip=true -Dgpg.skip=true -Dskip.npm=true -Dskip.gulp=true -Dskip.bower=true -Drat.numUnapprovedLicenses=100", + "categories": [ + "safety", + "npe" + ], + "npe": { + "filepath": "src/main/java/org/apache/commons/lang3/math/IEEE754rUtils.java", + "line": 80, + "npe_method": "min", + "deref_field": "array", + "npe_class": "IEEE754rUtils", + "repo": "commons-lang", + "bug_id": "IEEE754rUtils_67" + } +} diff --git a/Java/commons-lang-IEEE754rUtils_67/npe.json b/Java/commons-lang-IEEE754rUtils_67/npe.json new file mode 100644 index 000000000..a9c69be4b --- /dev/null +++ b/Java/commons-lang-IEEE754rUtils_67/npe.json @@ -0,0 +1,7 @@ +{ + "filepath": "src/main/java/org/apache/commons/lang3/math/IEEE754rUtils.java", + "line": 80, + "npe_method": "min", + "deref_field": "array", + "npe_class": "IEEE754rUtils" +} \ No newline at end of file