package org.intellij.errorProne; import com.intellij.openapi.util.SystemInfo; import org.jetbrains.annotations.NotNull; import org.jetbrains.jps.builders.java.CannotCreateJavaCompilerException; import org.jetbrains.jps.builders.java.JavaCompilingTool; import javax.tools.JavaCompiler; import java.io.File; import java.util.Collections; import java.util.List; /** * @author nik */ public class ErrorProneJavaCompilingTool extends JavaCompilingTool { public static final String COMPILER_ID = "error-prone";//duplicates ErrorProneJavaBackendCompiler.COMPILER_ID from IDE part private static final String VERSION_PROPERTY = "idea.error.prone.version";//duplicates ErrorProneClasspathProvider.VERSION_PROPERTY @NotNull @Override public String getId() { return COMPILER_ID; } @NotNull @Override public String getDescription() { String version = System.getProperty(VERSION_PROPERTY); return "error-prone compiler " + (version != null ? version : "(unknown version)"); } @NotNull @Override public JavaCompiler createCompiler() throws CannotCreateJavaCompilerException { if (!SystemInfo.isJavaVersionAtLeast("1.8")) { throw new CannotCreateJavaCompilerException("Error-prone compiler requires JDK 1.8 to run"); } try { return (JavaCompiler)Class.forName("com.google.errorprone.ErrorProneJavaCompiler").newInstance(); } catch (Exception e) { throw new CannotCreateJavaCompilerException(e.getMessage()); } } @NotNull @Override public List<File> getAdditionalClasspath() { return Collections.emptyList(); } }