我在 ant 中设置了一个目标,它对自上次检查以来所有修改的文件运行 PHP lint 检查。
<target
name="lint"
unless="lint.done">
<apply executable="php" taskname="lint" failonerror="true">
<arg value="-l">
<fileset dir="...">
<include name="**/*.php">
<modified/>
</fileset>
</apply>
</target>
不幸的是,如果由于单个文件未通过 lint 检查而导致此操作失败,则所有其他文件将不会进行 lint 检查,但仍将存储在修改后的缓存中。导致失败的文件也将被缓存,modified
这意味着下次运行时,检查将通过,即使没有进行任何更改来解决 lint 检查失败的原因。
最后,如果确实发生了 lint 错误,构建应该会失败。困难的部分是尝试让它失败,而不是在 lint 完成之前停止。
解决方案如下:
- 如果检查失败,则不要更新修改后的缓存。
- 如果一个文件的检查失败,则继续对其他文件进行 lint 检查,但仍将构建标记为失败。
这两种解决方案都可以实现吗?
对于第一点,我知道您可以传递一个参数来modified
停止缓存更新。然后,您可以modified
在 lint 检查后调用第二个,以便在检查成功时仅缓存文件吗?
对于第二点,我能想到的主要方法是不要因 lint 错误而失败,而是将 lint 结果传递到一个脚本中,该脚本会根据需要一次检查并输出所有失败的文件。