调试时,我常常在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>
答案 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>