| <?xml version="1.0"?> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 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" xmlns:if="ant:if" xmlns:unless="ant:unless"> |
| |
| <description> |
| Check Ants codebase against certain code styleguide rules using |
| checkstyle and simian. |
| |
| Checkstyle uses an abstract syntax tree (AST) for doing checks |
| against java sources. It is available at http://checkstyle.sourceforge.net/ |
| under GPL 2.1 license. |
| |
| "Simian (Similarity Analyser) identifies duplication in Java, C#, C, |
| CPP, COBOL, JSP, HTML source code and even plain text files." |
| It is available at http://www.redhillconsulting.com.au/products/simian/ |
| and is for free use in open source projects. |
| |
| See external task page and homepages for more information. |
| </description> |
| |
| <import file="build.xml"/> |
| |
| <property name="config.dir" location="${etc.dir}/checkstyle"/> |
| |
| <!-- Ant Checkstyle report --> |
| <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"/> |
| |
| <!-- Findbugs: Running Findbugs --> |
| <property name="findbugs.reportdir" |
| location="${build.dir}/reports/findbugs" |
| description="Where to store Findbugs results"/> |
| <property name="findbugs.raw" |
| value="raw.xml" |
| description="Findbugs Output xml-file"/> |
| <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" |
| description="JVMArgs for invoking Findbugs"/> |
| |
| <!-- RAT Release Auditing Tool --> |
| <property name="rat.report.dir" |
| value="${build.dir}/reports/rat" |
| description="Where to store the RAT reports"/> |
| <property name="rat.report.file" |
| value="${rat.report.dir}/report.html" |
| description="RAT-Report file"/> |
| <property name="rat.version" |
| value="0.11" |
| description="Which Version of RAT to use"/> |
| |
| <!-- Simian --> |
| <property name="simian.version" |
| value="2.5.9" |
| 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"/> |
| <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"/> |
| <mkdir dir="${ivy.jar.dir}"/> |
| <get src="${ivy.jar.url}" dest="${ivy.jar.file}" usetimestamp="true"/> |
| <path id="ivy.lib.path"> |
| <fileset dir="${ivy.jar.dir}" includes="*.jar"/> |
| </path> |
| <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path"/> |
| </target> |
| |
| <target name="checkstyle" description="--> checks Ant codebase according to ${config.dir}/checkstyle-config" depends="init-ivy"> |
| <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" unless="antlr.present"> |
| <xslt in="${checkstyle.raw}" style="${stylesheet.html}" |
| out="${checkstyle.reportdir}/html/output.txt"> |
| <param name="basedir" expression="${checkstyle.basedir}"/> |
| <param name="output.dir" expression="${checkstyle.reportdir}"/> |
| </xslt> |
| <xslt in="${checkstyle.raw}" style="${stylesheet.html.sorted}" |
| out="${checkstyle.reportdir}/html/output-sorted.txt"> |
| <param name="basedir" expression="${checkstyle.basedir}"/> |
| <param name="output.dir" expression="${checkstyle.reportdir}"/> |
| </xslt> |
| </target> |
| |
| <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> |
| </target> |
| |
| <target name="textreport-display" depends="textreport" description="--> generates a text checkstyle report and displays it immediately"> |
| <loadfile property="report" srcfile="${checkstyle.reportdir}/report.txt"/> |
| <echo>${report}</echo> |
| </target> |
| |
| <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}"/> |
| </xslt> |
| </target> |
| |
| <target name="dumphtml" depends="checkstyle, htmlreport" description="--> runs the checkstyle and generates a html report"/> |
| <target name="dumptext" depends="checkstyle, textreport" description="--> runs the checkstyle and displays result as text"> |
| <concat> |
| <filelist dir="${checkstyle.reportdir}" files="report.txt"/> |
| </concat> |
| </target> |
| |
| <target name="simiancheck" description="--> runs the check for duplicates"> |
| <available property="simian.jar.present" file="${simian.lib.dir}/simian-${simian.version}.jar"/> |
| <sequential unless:set="simian.jar.present"> |
| <echo>Install Simian ${simian.version}</echo> |
| <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> |
| |
| <echo>Run Simian</echo> |
| <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> |
| </fail> |
| <replaceregexp match="\s+$" replace="" flags="g" byline="true"> |
| <fileset dir="src/main" includes="${path}"/> |
| </replaceregexp> |
| </target> |
| |
| <target name="fixTab" description="--> fix checkstyle errors 'Line contains TAB sign'"> |
| <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"/> |
| </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="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" |
| classpathref="findbugs.real.classpath" |
| output="xml:withMessages" |
| outputFile="${findbugs.reportdir}/${findbugs.raw}" |
| jvmargs="${findbugs.jvmargs}" |
| projectName="${Name} ${project.version}"> |
| <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> |
| <javaresource name="${findbugs.xsl}" classpathref="findbugs.real.classpath"/> |
| </style> |
| </xslt> |
| </target> |
| |
| <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" |
| uri="antlib:org.apache.rat.anttasks" |
| classpathref="rat.classpath"/> |
| <mkdir dir="${rat.report.dir}"/> |
| <rat:report xmlns:rat="antlib:org.apache.rat.anttasks" reportfile="${build.dir}/reports/rat/report.txt"> |
| <fileset dir="${java.dir}"> |
| <exclude name="org/apache/tools/ant/defaultManifest.mf"/> |
| <exclude name="org/apache/tools/ant/version.txt"/> |
| </fileset> |
| </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> |