调试时,我经常在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>
在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>
如果您可以使用ant contrib than:
<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>