用于检查调试代码的 ant build.xml 目标

发布于 2025-01-06 15:04:24 字数 1212 浏览 1 评论 0原文

在调试时,我经常使用 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>

When debugging it's quite common for me to use things such as Zend_Debug and die() in the PHP to locate an issue. Occasionally I forget to take these out before committing my code. So I was wondering...

How do I write an ant build.xml target which checks all the files in my application for specific strings and fails if they have been found?

Basically, I'm after a reverse grep command which fails when it finds a string.

Any ideas?

Also, given my build.xml file looks like this (I've removed most of my targets to make it short), how do I make it work?
I don't know how ant works, so I'm after a 'drop-in' solution or good instructions.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

静水深流 2025-01-13 15:04:24

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>

Within the lint target (after the apply element) add

<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>
初见终念 2025-01-13 15:04:24

如果您可以使用 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>

If you can use 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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文