JDK 10 RFR JDK-8177153: LambdaMetafactory has default constructor
Martin Buchholz
martinrb at google.com
Sat Apr 29 04:51:29 UTC 2017
[cc'ing some errorprone folk ...]
On Fri, Apr 28, 2017 at 2:22 PM, Martin Buchholz <martinrb at google.com>
wrote:
> http://errorprone.info/bugpattern/PrivateConstructorForUtilityClass
>
It's highly non-obvious how to run errorprone against recent jdk sources.
You need a prerelease of errorprone, add a module to get javax.annotation,
and add a bunch of flags to allow access to javac internals. The script
below finds 430 PrivateConstructorForUtilityClass warnings in openjdk10:
#!/bin/bash
declare -r JDK9="$HOME/jdk/jdk9"
declare -r JDK_SRC="$HOME/ws/jdk10"
declare -r BUG_PATTERN="PrivateConstructorForUtilityClass"
declare -r ERRORPRONE_JAR_URL="
https://oss.sonatype.org/content/repositories/snapshots/com/google/errorprone/error_prone_ant/2.0.20-SNAPSHOT/error_prone_ant-2.0.20-20170428.043038-14.jar
"
set -eu
declare -r ERRORPRONE_JAR="/tmp/${0##*/}.jar"
declare -r LOGFILE="/tmp/${0##*/}.log"
declare -ar JAVA_FLAGS_JAVAC=(
-Xms64M -Xmx1600M -XX:ThreadStackSize=1536
--add-modules=java.xml.ws.annotation
--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED
--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED
--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED
--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED
--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED
--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED
)
declare -ar JAVAC_WARNINGS=(
-Xmaxwarns 999999
-processorpath "$ERRORPRONE_JAR"
"'-Xplugin:ErrorProne -XepDisableAllChecks -Xep:${BUG_PATTERN}:WARN'"
)
(
cd "$JDK_SRC"
wget -qO"$ERRORPRONE_JAR" "$ERRORPRONE_JAR_URL"
bash ./configure --with-boot-jdk="$JDK9" --disable-sjavac
--disable-javac-server
make clean
make \
JAVA_FLAGS_JAVAC="${JAVA_FLAGS_JAVAC[*]}" \
JAVAC_WARNINGS="${JAVAC_WARNINGS[*]}" \
images
) |& tee "$LOGFILE" | grep -A1 "warning:..${BUG_PATTERN}"
More information about the core-libs-dev
mailing list