<?xml version="1.0" encoding="UTF-8"?> <project name="ownCloud" default="build" xmlns:jsl="antlib:com.googlecode.jslint4java"> <!-- the target 'build' can be used by developers for command line builds --> <target name="build" depends="prepare,lint,jslint,phploc,pdepend,phpmd,phpcs,phpcpd,phpdoc,phpunit"/> <!-- the target 'build-ci' is used within our Jenkins CI-server http://ci.tmit.eu --> <target name="build-ci" depends="prepare,lint,jslint-ci,phploc,pdepend,phpmd-ci,phpcs-ci,phpcpd-ci,phpdoc,phpunit,phpcb-ci"/> <!-- the target 'build-pullrequests' is used within our Jenkins CI-server for pull request analysis --> <target name="build-pullrequests" depends="prepare,lint,jslint-ci"/> <target name="clean" description="Cleanup build artifacts"> <delete dir="${basedir}/build/api"/> <delete dir="${basedir}/build/code-browser"/> <delete dir="${basedir}/build/coverage"/> <delete dir="${basedir}/build/logs"/> <delete dir="${basedir}/build/pdepend"/> </target> <target name="prepare" depends="clean" description="Prepare for build"> <mkdir dir="${basedir}/build/api"/> <mkdir dir="${basedir}/build/code-browser"/> <mkdir dir="${basedir}/build/coverage"/> <mkdir dir="${basedir}/build/logs"/> <mkdir dir="${basedir}/build/pdepend"/> </target> <!-- php syntax analysis --> <target name="lint"> <apply executable="php" failonerror="true"> <arg value="-l" /> <fileset dir="${basedir}"> <include name="**/*.php" /> <exclude name="**/3rdparty/**" /> <exclude name="**/l10n/**" /> <!-- modified / --> </fileset> </apply> <!-- this looks for @brief and @returns annotation in PHP files and fails if it found some --> <apply executable="egrep" failonerror="false" resultproperty="grepReturnCode"> <arg value="-rsHn" /> <arg value="@brief|@returns" /> <fileset dir="${basedir}/build"> <include name="**/*.php" /> <exclude name="**/3rdparty/**" /> <exclude name="**/l10n/**" /> </fileset> </apply> <!-- fail if grep has found something --> <fail message="Please remove @returns and @brief annotations for PHPDoc (listed above)"> <condition> <equals arg1="0" arg2="${grepReturnCode}"/> </condition> </fail> </target> <!-- javascript lint --> <target name="jslint-ci" description="Run the JSLint tool on JS files"> <jsl:jslint options="white,sloppy,vars,bitwise,eqeq,browser" haltOnFailure="false"> <jsl:predef> jQuery,$$,OC,$,oc_webroot,oc_appswebroots,oc_current_user,t,Files,FileList,FileActions,localStorage,OCCategories,EventSource,OCdialog,SVGSupport,dragOptions,dragOptions,folderDropOptions,formatDate,humanFileSize,procesSelection,relative_modified_date,scanFiles,simpleFileSize,simpleSize </jsl:predef> <!-- jsl:formatter type="plain" / --> <jsl:formatter type="xml" destfile="build/logs/jslint.xml" /> <fileset dir="${basedir}" includes="**/*.js" excludes="**/*.min.js,**/3rdparty/**" /> </jsl:jslint> </target> <target name="jslint" description="Run the JSLint tool on JS files"> <jsl:jslint options="white,sloppy,vars,bitwise,eqeq,browser" haltOnFailure="false"> <jsl:predef> jQuery,$$,OC,$,oc_webroot,oc_appswebroots,oc_current_user,t,Files,FileList,FileActions,localStorage,OCCategories,EventSource,OCdialog,SVGSupport,dragOptions,dragOptions,folderDropOptions,formatDate,humanFileSize,procesSelection,relative_modified_date,scanFiles,simpleFileSize,simpleSize </jsl:predef> <jsl:formatter type="plain" /> <fileset dir="${basedir}" includes="**/*.js" excludes="**/*.min.js,**/3rdparty/**" /> </jsl:jslint> </target> <target name="phploc" description="Measure project size using PHPLOC"> <exec executable="phploc"> <arg value="--log-csv" /> <arg value="${basedir}/build/logs/phploc.csv" /> <arg path="${basedir}" /> </exec> </target> <target name="pdepend" description="Calculate software metrics using PHP_Depend"> <exec executable="pdepend"> <arg value="--jdepend-xml=${basedir}/build/logs/jdepend.xml" /> <arg value="--jdepend-chart=${basedir}/build/pdepend/dependencies.svg" /> <arg value="--overview-pyramid=${basedir}/build/pdepend/overview-pyramid.svg" /> <arg value="--ignore=${basedir}/3rdparty/"/> <arg path="${basedir}" /> </exec> </target> <target name="phpmd-ci" description="Perform project mess detection using PHPMD creating a log file for the continuous integration server"> <exec executable="phpmd"> <arg path="${basedir}" /> <arg value="xml" /> <arg value="${basedir}/build/phpmd.xml" /> <arg value="--reportfile" /> <arg value="${basedir}/build/logs/pmd.xml" /> <arg value="--exclude" /> <arg value="${basedir}/3rdparty/" /> </exec> </target> <target name="phpmd" description="Perform project mess detection using PHPMD creating a log file for the continuous integration server"> <exec executable="phpmd"> <arg path="${basedir}" /> <arg value="xml" /> <arg value="${basedir}/build/phpmd.xml" /> <arg value="--exclude" /> <arg value="${basedir}/3rdparty/" /> </exec> </target> <target name="phpcs-ci" description="Find coding standard violations using PHP_CodeSniffer creating a log file for the continuous integration server"> <exec executable="phpcs" > <arg value="-p" /> <arg value="-v" /> <arg value="--tab-width=4" /> <arg value="--report=checkstyle" /> <arg value="--report-file=${basedir}/build/logs/checkstyle.xml" /> <arg value="--standard=${basedir}/build/phpcs.xml" /> <arg path="${basedir}" /> </exec> </target> <target name="phpcs" description="Find coding standard violations using PHP_CodeSniffer creating a log file for the continuous integration server"> <exec executable="phpcs" > <arg value="-p" /> <arg value="-v" /> <arg value="--tab-width=4" /> <arg value="--standard=${basedir}/build/phpcs.xml" /> <arg path="${basedir}" /> </exec> </target> <target name="phpcpd" description="Find duplicate code using PHPCPD"> <exec executable="phpcpd"> <arg value="--exclude" /> <arg value="${basedir}/3rdparty/" /> <arg path="${basedir}" /> </exec> </target> <target name="phpcpd-ci" description="Find duplicate code using PHPCPD"> <exec executable="phpcpd"> <arg value="--log-pmd" /> <arg value="${basedir}/build/logs/pmd-cpd.xml" /> <arg value="--exclude" /> <arg value="${basedir}/3rdparty/" /> <arg path="${basedir}" /> </exec> </target> <!-- No idea if we need this within this build file. This is part of the release which is not contained within this script. --> <target name="phpdoc" description="Generate API documentation using PHPDocumentor"> <!-- exec executable="phpdox"/ --> </target> <!-- currently we use autotest.sh for executing the unit tests against 3 different database setups --> <target name="phpunit" description="Run unit tests with PHPUnit"> <echo message="TODO: phpunit goes here"/> <!-- exec executable="phpunit" failonerror="true"/ --> </target> <target name="phpcb-ci" description="Aggregate tool output with PHP_CodeBrowser"> <exec executable="phpcb"> <arg value="--log" /> <arg path="${basedir}/build/logs" /> <arg value="--source" /> <arg path="${basedir}" /> <arg value="--output" /> <arg path="${basedir}/build/code-browser" /> </exec> </target> </project>