Podczas debugowania dość często używam w PHP takich rzeczy jak Zend_Debug i die() w celu zlokalizowania problemu. Czasami zapominam je usunąć przed wprowadzeniem kodu. Więc zastanawiałem się...

Jak napisać cel ant build.xml, który sprawdza wszystkie pliki w mojej aplikacji pod kątem określonych ciągów i kończy się niepowodzeniem, jeśli zostały znalezione?

Zasadniczo jestem za poleceniem reverse grep, które kończy się niepowodzeniem, gdy znajduje ciąg.

Jakieś pomysły?

Ponadto, biorąc pod uwagę, że mój plik build.xml wygląda tak (usunąłem większość moich celów, aby był krótki), jak sprawić, by działał?
Nie wiem, jak działa mrówka, więc szukam rozwiązania typu „wrzucanie” lub dobrych instrukcji.

<?xml version="1.0" encoding="UTF-8"?>
<project name="API" default="build" basedir=".">
    <property name="source"  value="application"/>

    <target name="build" depends="prepare,lint,phpcpd,phpdox,phpunit,phpcb"/>

    <target name="clean" description="Cleanup build artifacts">
        <delete dir="${basedir}/build/api"/>
    </target>

    <target name="lint">
        <apply executable="php" failonerror="true">
            <arg value="-l" />
            <fileset dir="${basedir}/${source}">
                <include name="**/*.php" />
            </fileset>
            <fileset dir="${basedir}/tests">
                <include name="**/*.php" />
            </fileset>
        </apply>
    </target>
</project>
ant
0
Stephen RC 17 luty 2012, 09:00

2 odpowiedzi

Najlepsza odpowiedź

W obrębie celu lint (po elemencie apply) dodaj

<fileset id="die-files" dir="${basedir}/${source}">
    <include name="**/*.php" />
    <contains text="die()"/>
</fileset>
<fail message="The following files contain "die()": ${ant.refid:die-files}">
    <condition>
        <resourcecount when="greater" count="0" refid="die-files"/>
    </condition>
</fail>
3
Tom Howard 17 luty 2012, 11:42

Jeśli możesz użyć ant-contrib niż:

<for param="file">
  <path>
    <fileset dir="/path/to/application/"/>
  </path>
  <sequential>
    <if>
      <contains string="@{file}" substring="bad elements"/>
      <then>
        <fail>warning! substring is present in directory</fail>
      </then>
    </if>
  </sequential>
</for>
1
xyxel 17 luty 2012, 11:02