ant build.xml目标来检查调试代码

时间:2012-02-17 05:00:51

标签: ant

调试时,我常常在PHP中使用Zend_Debug和die()这样的东西来查找问题。在提交我的代码之前,我偶尔会忘记将它们拿出来。所以我想知道......

如何编写 ant build.xml 目标,该目标会检查应用程序中的所有文件是否存在特定字符串,如果找到它们则会失败?

基本上,我正在使用反向grep命令,当它找到一个字符串时失败。

有什么想法吗?

另外,鉴于我的 build.xml 文件看起来像这样(我删除了大部分目标以使其缩短),我该如何使其工作?
我不知道 ant 是如何工作的,所以我正在采用“插入式”解决方案或良好的指示。

<?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>

2 个答案:

答案 0 :(得分:3)

lint目标内(apply元素之后)添加

<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>

答案 1 :(得分:1)

如果你可以使用ant-contrib而不是:

<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>