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