我想在我的 Jenkins Job 中显示 eclipse 编译器警告。我知道使用 ant javac 适配器可以使用 Eclipse 编译器。这样在使用 ant 时会显示 Eclipse 编译器警告。问题是当我在 Jenkins 中使用 ant 脚本时,他忽略了 javac 设置,只使用普通编译器。
有没有人尝试在 jenkins 中使用 eclipse 编译器并收到编译器警告?甚至可能将编译器警告发送给声纳?
我想在我的 Jenkins Job 中显示 eclipse 编译器警告。我知道使用 ant javac 适配器可以使用 Eclipse 编译器。这样在使用 ant 时会显示 Eclipse 编译器警告。问题是当我在 Jenkins 中使用 ant 脚本时,他忽略了 javac 设置,只使用普通编译器。
有没有人尝试在 jenkins 中使用 eclipse 编译器并收到编译器警告?甚至可能将编译器警告发送给声纳?
在 Eclipse 编译器ant javac 适配器出现问题后,我在单独的目标中使用批处理编译器来生成 Eclipse 警告。然后我使用警告插件来解析 Jenkins 中生成的编译器警告。
批处理编译器方便地打包在一个单独的 jar 中,可在 Eclipse 项目下载页面上的“JDT Core Batch Compiler”部分下载,也可以在公共 maven 存储库中作为Eclipse ECJ获得。
如果您已将 ecj jar 暂存到ecj.dir
,则可以利用以下构建脚本来生成 Eclipse 警告,
<?xml version="1.0" encoding="UTF-8" ?>
<project name="some-project" default="eclipse-warnings" basedir=".">
<target name="eclipse-warnings" depends="init">
<property name="ecj.log.dir" value="${build.dir}/ecj" />
<property name="ecj.warnings.file" value="${ecj.log.dir}\eclipse_compiler_out.txt"/>
<delete dir="${ecj.log.dir}" />
<mkdir dir="${ecj.log.dir}" />
<property name="ecj.properties" value="${basedir}\etc\ecj\eclipse_compiler.properties" />
<!-- Redirect output to tempfile if you don't want results also on console -->
<tempfile property="ecj.output.tempfile" suffix=".log" deleteonexit="true" />
<echo message="Generating Eclipse warnings to ${ecj.warnings.file}" />
<java
jar="${ecj.dir}/ecj.jar"
fork="true"
maxmemory="512m"
output="${ecj.output.tempfile}">
<arg value="-cp" />
<arg value="${toString:compile.classpath}" />
<arg value="-d" />
<arg value="none" />
<arg value="-enableJavadoc" />
<arg value="-log" />
<arg value="${ecj.warnings.file}" />
<arg value="-${javac.source.version}" />
<arg value="-properties" />
<arg value="${ecj.properties}" />
<arg value="${src.dir}" />
<arg value="${test.dir}" />
</java>
<!-- Echo number of warnings found -->
<loadfile srcfile="${ecj.warnings.file}" property="ecj.warnings.file.summary">
<filterchain>
<tailfilter lines="1" />
</filterchain>
</loadfile>
<echo message="${ecj.warnings.file.summary}" />
</target>
</project>
eclipse_compiler.properties
包含编译器警告/错误设置,可以从项目.settings/org.eclipse.jdt.core.prefs
文件中复制或在CompilerOptions
类中定义。
#Eclipse compiler warnings and errors
org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=warning
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=warning
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=warning
org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
如果您希望使用与 ant 提供的编译器接口不同的编译器接口,您可以编写一个实现该CompilerAdapter
接口的类(包 org.apache.tools.ant.taskdefs.compilers)。
build.compiler
在属性或属性中提供完整的类名compiler
。
这应该工作