[cc'ing some errorprone folk ...] On Fri, Apr 28, 2017 at 2:22 PM, Martin Buchholz <[email protected]> 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}"
