我正在使用以下Ant应用任务在一组PHP源文件上运行php lint。
<apply executable="php" failonerror="true">
<arg value="-l" />
<filelist refid="server.lib" />
<filelist refid="server.scripts" />
<fileset refid="client.lib" />
<fileset refid="shared.lib" />
</apply>
根据Ant的输出,大约需要30秒。
Make执行的相同任务几乎是即时的。
有没有办法加快蚂蚁任务?
修改
我尝试将“spawn =”true“添加到”应用“部分,它会大大加快速度。除了记录丢失,这是一个很好的解决方案吗?
编辑2
spawn = true与'failonerror = true'不匹配,所以spawn不起作用。
编辑3
在评论中回答Hakre的问题,文件集共覆盖了66个文件。 如果有帮助,我可以粘贴蚂蚁输出。
编辑4
是否可以将相同的任务编写为exec任务?
答案 0 :(得分:4)
假设它是与CI相关的作业,您可以在修改后的文件上应用lint:
<fileset dir="." includes="**/*.php">
<modified />
</fileset>
如果您的代码库很大,那么一次修改多个文件(每次提交)会很奇怪。
如果脚本无效(预提交挂钩等),您也可以反过来解决问题并完全阻止提交
答案 1 :(得分:1)
EDIT
我的尝试会像=
<patternset id="php.sources">
<include name="**/*.php"/>
</patternset>
<apply executable="php" failonerror="true" error="phperr.check" parallel="true">
<arg value="-l" />
<fileset dir="lib">
<patternset refid="php.sources" />
</fileset>
<fileset dir="scripts">
<patternset refid="php.sources" />
</fileset>
<fileset dir="client">
<patternset refid="php.sources" />
</fileset>
<fileset dir="shared">
<patternset refid="php.sources" />
</fileset>
<fileset dir="tests">
<patternset refid="php.sources" />
</fileset>
</apply>
使用parallel =“true”时会得到什么错误信息?
答案 2 :(得分:1)
任务的并行化可以在更高的层次上实现:
<target name="phplint">
<parallel threadcount="2">
<apply executable="php" failonerror="true">
<arg value="-l" />
<fileset dir="${basedir}">
<include name="**/Dir1/**.php" />
</fileset>
</apply>
<apply executable="php" failonerror="true">
<arg value="-l" />
<fileset dir="${basedir}">
<include name="**/Dir2/**.php" />
</fileset>
</apply>
</parallel>
</target>
由于任务耗费I / O,因此将其划分为更多线程可以大大缩短执行时间。