| @@ -15,7 +15,7 @@ | |||
| See the License for the specific language governing permissions and | |||
| limitations under the License. | |||
| --> | |||
| <project default="checkstyle" name="CheckAnt" xmlns:ivy="antlib:org.apache.ivy.ant"> | |||
| <project default="checkstyle" name="CheckAnt" xmlns:ivy="antlib:org.apache.ivy.ant" xmlns:if="ant:if" xmlns:unless="ant:unless"> | |||
| <description> | |||
| Check Ants codebase against certain code styleguide rules using | |||
| @@ -34,35 +34,48 @@ | |||
| </description> | |||
| <import file="build.xml"/> | |||
| <property name="config.dir" location="${etc.dir}/checkstyle"/> | |||
| <property name="checkstyle.reportdir" location="${build.dir}/reports/checkstyle"/> | |||
| <property name="checkstyle.raw" location="${checkstyle.reportdir}/raw.xml"/> | |||
| <property name="stylesheet.html" location="${config.dir}/checkstyle-frames.xsl"/> | |||
| <property name="stylesheet.html.sorted" location="${config.dir}/checkstyle-frames-sortby-check.xsl"/> | |||
| <property name="stylesheet.text" location="${config.dir}/checkstyle-text.xsl"/> | |||
| <property name="stylesheet.xdoc" location="${config.dir}/checkstyle-xdoc.xsl"/> | |||
| <property name="checkstyle.basedir" location="${java.dir}"/> | |||
| <property name="config.dir" location="${etc.dir}/checkstyle"/> | |||
| <!-- Ant Checkstyle report --> | |||
| <property name="tocheck" value="**/*.java"/> | |||
| <property name="javadoc.scope" value="public"/> | |||
| <property name="checkstyle.reportdir" | |||
| location="${build.dir}/reports/checkstyle" | |||
| description="Where to store Checkstyle reports"/> | |||
| <property name="checkstyle.raw" | |||
| location="${checkstyle.reportdir}/raw.xml" | |||
| description="Name of Checkstyle XML-Report"/> | |||
| <property name="stylesheet.html" | |||
| location="${config.dir}/checkstyle-frames.xsl" | |||
| description="Name of Checkstyle XSLT for generating HTML"/> | |||
| <property name="stylesheet.html.sorted" | |||
| location="${config.dir}/checkstyle-frames-sortby-check.xsl" | |||
| description="Name of Checkstyle XSLT for generating 2nd HTML"/> | |||
| <property name="stylesheet.text" | |||
| location="${config.dir}/checkstyle-text.xsl" | |||
| description="Name of Checkstyle XSLT for generating plain text"/> | |||
| <property name="stylesheet.xdoc" | |||
| location="${config.dir}/checkstyle-xdoc.xsl" | |||
| description="Name of Checkstyle XSLT for generating XDOC"/> | |||
| <property name="checkstyle.basedir" | |||
| location="${java.dir}" | |||
| description="Where are the Java sources to check"/> | |||
| <property name="tocheck" | |||
| value="**/*.java" | |||
| description="Include pattern of the files to check"/> | |||
| <taskdef resource="simiantask.properties"/> | |||
| <!-- Findbugs: Running Findbugs --> | |||
| <property name="findbugs.reportdir" | |||
| location="${build.dir}/reports/findbugs" | |||
| <property name="findbugs.reportdir" | |||
| location="${build.dir}/reports/findbugs" | |||
| description="Where to store Findbugs results"/> | |||
| <property name="findbugs.raw" | |||
| value="raw.xml" | |||
| <property name="findbugs.raw" | |||
| value="raw.xml" | |||
| description="Findbugs Output xml-file"/> | |||
| <property name="findbugs.xsl" | |||
| value="fancy.xsl" | |||
| <property name="findbugs.xsl" | |||
| value="fancy.xsl" | |||
| description="Which XSL to use for generating Output: default, fancy, plain, summary"/> | |||
| <property name="findbugs.jvmargs" | |||
| value="-Xms128m -Xmx512m" | |||
| <property name="findbugs.jvmargs" | |||
| value="-Xms128m -Xmx512m" | |||
| description="JVMArgs for invoking Findbugs"/> | |||
| <!-- RAT Release Auditing Tool --> | |||
| @@ -73,13 +86,26 @@ | |||
| value="${rat.report.dir}/report.html" | |||
| description="RAT-Report file"/> | |||
| <property name="rat.version" | |||
| value="0.7" | |||
| value="0.11" | |||
| description="Which Version of RAT to use"/> | |||
| <!-- Simian --> | |||
| <property name="simian.version" | |||
| value="2.4.0" | |||
| description="Which Version of Simian to use"/> | |||
| <property name="simian.uri" | |||
| value="http://www.harukizaemon.com/simian/simian-${simian.version}.tar.gz" | |||
| description="Where to get Simian"/> | |||
| <property name="simian.lib.dir" | |||
| value="${build.dir}/simian-lib" | |||
| description="Where to store Simian resources"/> | |||
| <property name="simian.report.dir" | |||
| value="${build.dir}/simian" | |||
| description="Where to store Simian reports"/> | |||
| <target name="init-ivy"> | |||
| <property name="ivy.version" value="2.4.0-rc1"/> | |||
| <property name="ivy.version" value="2.4.0"/> | |||
| <property name="ivy.jar.url" value="http://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.version}/ivy-${ivy.version}.jar"/> | |||
| <property name="ivy.jar.dir" value="${build.dir}/ivy"/> | |||
| <property name="ivy.jar.file" value="${ivy.jar.dir}/ivy.jar"/> | |||
| @@ -92,21 +118,30 @@ | |||
| </target> | |||
| <target name="checkstyle" description="--> checks Ant codebase according to ${config.dir}/checkstyle-config" depends="init-ivy"> | |||
| <ivy:cachepath organisation="com.puppycrawl.tools" module="checkstyle" revision="5.7" | |||
| inline="true" conf="default" pathid="checkstyle.classpath" transitive="true"/> | |||
| <taskdef resource="checkstyletask.properties" classpathref="checkstyle.classpath" /> | |||
| <mkdir dir="${checkstyle.reportdir}"/> | |||
| <checkstyle config="${config.dir}/checkstyle-config" failOnViolation="false"> | |||
| <formatter type="xml" toFile="${checkstyle.raw}"/> | |||
| <fileset dir="${java.dir}"> | |||
| <include name="${tocheck}"/> | |||
| <exclude name="**/bzip2/*.java"/> | |||
| <exclude name="**/CVSPass.java"/> | |||
| </fileset> | |||
| </checkstyle> | |||
| <available property="antlr.present" classname="antlr.CommonAST"/> | |||
| <echo if:set="antlr.present"> | |||
| Found antlr on the classpath. | |||
| Having a wrong antlr version on the same classpath as Checkstyle may produce errors like | |||
| 'Can't find/access AST Node typecom.puppycrawl.tools.checkstyle.api.DetailAST' | |||
| Skip running Checkstyle. | |||
| </echo> | |||
| <sequential unless:set="antlr.present"> | |||
| <ivy:cachepath organisation="com.puppycrawl.tools" module="checkstyle" revision="6.18" | |||
| inline="true" conf="default" pathid="checkstyle.classpath" transitive="true"/> | |||
| <taskdef resource="com/puppycrawl/tools/checkstyle/ant/checkstyle-ant-task.properties" classpathref="checkstyle.classpath" /> | |||
| <mkdir dir="${checkstyle.reportdir}"/> | |||
| <checkstyle config="${config.dir}/checkstyle-config" failOnViolation="false"> | |||
| <formatter type="xml" toFile="${checkstyle.raw}"/> | |||
| <fileset dir="${java.dir}"> | |||
| <include name="${tocheck}"/> | |||
| <exclude name="**/bzip2/*.java"/> | |||
| <exclude name="**/CVSPass.java"/> | |||
| </fileset> | |||
| </checkstyle> | |||
| </sequential> | |||
| </target> | |||
| <target name="htmlreport" description="--> generates a html checkstyle report"> | |||
| <target name="htmlreport" description="--> generates a html checkstyle report" unless="antlr.present"> | |||
| <xslt in="${checkstyle.raw}" style="${stylesheet.html}" | |||
| out="${checkstyle.reportdir}/html/output.txt"> | |||
| <param name="basedir" expression="${checkstyle.basedir}"/> | |||
| @@ -119,7 +154,7 @@ | |||
| </xslt> | |||
| </target> | |||
| <target name="textreport" description="--> generates a text checkstyle report"> | |||
| <target name="textreport" description="--> generates a text checkstyle report" unless="antlr.present"> | |||
| <xslt in="${checkstyle.raw}" style="${stylesheet.text}" | |||
| out="${checkstyle.reportdir}/report.txt"> | |||
| </xslt> | |||
| @@ -130,7 +165,7 @@ | |||
| <echo>${report}</echo> | |||
| </target> | |||
| <target name="xdocreport" description="--> generates a xdoc checkstyle report"> | |||
| <target name="xdocreport" description="--> generates a xdoc checkstyle report" unless="antlr.present"> | |||
| <xslt in="${checkstyle.raw}" style="${stylesheet.xdoc}" | |||
| out="${checkstyle.reportdir}/xdocs/index.xml"> | |||
| <param name="basedir" expression="${checkstyle.basedir}"/> | |||
| @@ -145,11 +180,34 @@ | |||
| </target> | |||
| <target name="simiancheck" description="--> runs the check for duplicates"> | |||
| <simian> | |||
| <available property="simian.jar.present" file="${simian.lib.dir}/simian-${simian.version}.jar"/> | |||
| <sequential unless:set="simian.jar.present"> | |||
| <mkdir dir="${simian.lib.dir}"/> | |||
| <get src="${simian.uri}" dest="${simian.lib.dir}"/> | |||
| <gunzip src="${simian.lib.dir}/simian-${simian.version}.tar.gz" dest="${simian.lib.dir}/simian-${simian.version}.tar"/> | |||
| <untar src="${simian.lib.dir}/simian-${simian.version}.tar" dest="${simian.lib.dir}"> | |||
| <patternset> | |||
| <include name="**/simian*.jar"/> | |||
| <include name="**/simian*.xsl"/> | |||
| </patternset> | |||
| <flattenmapper/> | |||
| </untar> | |||
| </sequential> | |||
| <taskdef resource="simiantask.properties"> | |||
| <classpath> | |||
| <fileset dir="${simian.lib.dir}" includes="*.jar"/> | |||
| </classpath> | |||
| </taskdef> | |||
| <mkdir dir="${simian.report.dir}"/> | |||
| <simian failureProperty="simian.duplicates.found"> | |||
| <fileset dir="${java.dir}" /> | |||
| <formatter type="plain" toFile="${simian.report.dir}/simian-log.txt"/> | |||
| <formatter type="xml" toFile="${simian.report.dir}/simian-log.xml"/> | |||
| </simian> | |||
| <xslt in="${simian.report.dir}/simian-log.xml" style="${simian.lib.dir}/simian.xsl" out="${simian.report.dir}/simian.html"/> | |||
| </target> | |||
| <target name="fixTS" description="--> fix checkstyle errors 'Line has trailing spaces'"> | |||
| <fail message="Define path to java file 'path'"> | |||
| <condition><not><isset property="path"/></not></condition> | |||
| @@ -163,15 +221,15 @@ | |||
| <fail message="Define path to java file 'path'"> | |||
| <condition><not><isset property="path"/></not></condition> | |||
| </fail> | |||
| <fixcrlf srcdir="src/main" includes="${path}" javafiles="yes" tab="remove" tablength="4"/> | |||
| <fixcrlf srcdir="src/main" includes="${path}" javafiles="yes" tab="remove" tablength="4"/> | |||
| </target> | |||
| <target name="findbugs" description="--> checks Ant codebase with Findbugs" depends="init-ivy,build" xmlns:fb="http://findbugs.sourceforge.net/"> | |||
| <ivy:cachepath organisation="com.google.code.findbugs" module="findbugs-ant" revision="1.3.9" | |||
| <ivy:cachepath organisation="com.google.code.findbugs" module="findbugs-ant" revision="3.0.0" | |||
| inline="true" conf="default" pathid="findbugs.real.classpath" transitive="true"/> | |||
| <!-- Load the Findbugs AntTasks --> | |||
| <taskdef uri="http://findbugs.sourceforge.net/" resource="edu/umd/cs/findbugs/anttask/tasks.properties" classpathref="findbugs.real.classpath" /> | |||
| <!-- Start Findbugs --> | |||
| <mkdir dir="${findbugs.reportdir}"/> | |||
| <fb:findbugs pluginlistref="findbugs.real.classpath" | |||
| @@ -183,7 +241,7 @@ | |||
| <class location="${build.classes}" /> | |||
| <sourcePath path="${java.dir}" /> | |||
| </fb:findbugs> | |||
| <!-- Generate (human) readable output --> | |||
| <xslt basedir="${findbugs.reportdir}" includes="${findbugs.raw}" destdir="${findbugs.reportdir}"> | |||
| <style> | |||
| @@ -191,8 +249,8 @@ | |||
| </style> | |||
| </xslt> | |||
| </target> | |||
| <target name="rat" description="--> Runs the ReleaseAuditingTool" depends="init-ivy"> | |||
| <target name="rat" description="--> Runs the ReleaseAuditingTool" depends="init-ivy"> | |||
| <ivy:cachepath organisation="org.apache.rat" module="apache-rat-tasks" revision="${rat.version}" | |||
| inline="true" conf="default" pathid="rat.classpath" transitive="true"/> | |||
| <typedef resource="org/apache/rat/anttasks/antlib.xml" | |||
| @@ -207,4 +265,42 @@ | |||
| </rat:report> | |||
| </target> | |||
| <target name="dependency-check" description="--> Runs the OWASP dependency check"> | |||
| <property name="dependency-check.url" value="http://dl.bintray.com/jeremy-long/owasp/dependency-check-ant-3.1.0-release.zip"/> | |||
| <property name="tools.dir" value="tools"/> | |||
| <property name="dependency-check.dir" value="${tools.dir}/dependency-check"/> | |||
| <property name="dependency-check.home" value="${dependency-check.dir}/dependency-check-ant"/> | |||
| <!--available property="dependency-check.present" file="${dependency-check.home}/dependency-check-ant/dependency-check-ant.jar"/--> | |||
| <condition property="dependency-check.present"> | |||
| <resourcecount when="greater" count="0"> | |||
| <fileset dir="${dependency-check.home}" includes="**/dependency-check-ant.jar"/> | |||
| </resourcecount> | |||
| </condition> | |||
| <sequential unless:set="dependency-check.present"> | |||
| <mkdir dir="${dependency-check.home}"/> | |||
| <get src="${dependency-check.url}" dest="${dependency-check.dir}/dependency-check-ant.zip"/> | |||
| <unzip src="${dependency-check.dir}/dependency-check-ant.zip" dest="${dependency-check.dir}/dependency-check-ant"/> | |||
| </sequential> | |||
| <path id="dependency-check.path"> | |||
| <pathelement location="${dependency-check.home}/dependency-check-ant.jar"/> | |||
| <fileset dir="${dependency-check.home}"> | |||
| <include name="**/*.jar"/> | |||
| </fileset> | |||
| </path> | |||
| <taskdef resource="dependency-check-taskdefs.properties" uri="https://jeremylong.github.io/"> | |||
| <classpath refid="dependency-check.path"/> | |||
| </taskdef> | |||
| <owasp:dependency-check | |||
| xmlns:owasp="https://jeremylong.github.io/" | |||
| projectName="${ant.project.name}" | |||
| > | |||
| <fileset dir="lib" includes="**/*.jar"/> | |||
| <fileset dir="." includes="dist/**/*.jar"/> | |||
| </owasp:dependency-check> | |||
| </target> | |||
| </project> | |||