2016-03-30 18 views
1

Aşağıdaki kodun, metin dosyalarındaki satır sayısını belirlemesi için aşağıdaki kodu nasıl değiştireceğimi bilmem gerekiyor (Lütfen tüm metin dosyalarının aynı sayıda satıra sahip olacağını unutmayın, ancak bu sayı sabit değildir.) ve bunları otomatik olarak döngüye göre yürütür.Karınca Komut Dosyalarındaki Kaynak Sayısı

<project name="ant-read-n-files" default="run" basedir="."> 
 
    
 
    <!-- Load the ant contrib lib --> 
 
    <taskdef resource="net/sf/antcontrib/antlib.xml"> 
 
    <classpath> 
 
     <pathelement location="${basedir}/lib/ant-contrib.jar"/> 
 
    </classpath> 
 
    </taskdef> 
 
    
 
    <target name="read"> 
 
    <!-- file a --> 
 
    <loadfile property="textFileA" srcfile="${basedir}/files/aaa.txt"> 
 
     <filterchain> 
 
     <headfilter lines="1" skip="${linenum}"/> 
 
     </filterchain> 
 
    </loadfile> 
 
    <for param="line" list="${textFileA}" delimiter="${line.separator}"> 
 
     <sequential> 
 
     <property name="textFileAValue" value="@{line}"/> 
 
     </sequential> 
 
    </for> 
 
    <!-- file b --> 
 
    <loadfile property="textFileB" srcfile="${basedir}/files/bbb.txt"> 
 
     <filterchain> 
 
     <headfilter lines="1" skip="${linenum}"/> 
 
     </filterchain> 
 
    </loadfile> 
 
    <for param="line" list="${textFileB}" delimiter="${line.separator}"> 
 
     <sequential> 
 
     <property name="textFileBValue" value="@{line}"/> 
 
     </sequential> 
 
    </for> 
 
    <!-- file c --> 
 
    <loadfile property="textFileC" srcfile="${basedir}/files/ccc.txt"> 
 
     <filterchain> 
 
     <headfilter lines="1" skip="${linenum}"/> 
 
     </filterchain> 
 
    </loadfile> 
 
    <for param="line" list="${textFileC}" delimiter="${line.separator}"> 
 
     <sequential> 
 
     <property name="textFileCValue" value="@{line}"/> 
 
     </sequential> 
 
    </for> 
 
    
 
    <!-- Print them all --> 
 
    <echo message="${textFileAValue}"/> 
 
    <echo message="${textFileBValue}"/> 
 
    <echo message="${textFileCValue}"/> 
 
    </target> 
 
    
 
    <target name="run"> 
 
    <foreach param="linenum" list="0,1,2" target="read"/> 
 
    </target> 
 
</project>
İşte

liste gördüğünüz gibi = "0,1,2" döngü her metin dosyasının ilk üç satırı doğrulamak anlamına gelir, ancak ben bu sayısına bağlı olarak dinamik olmak istiyorum satırların sahip olduğu dosyalar. Burada herhangi bir yardım büyük takdir edilecektir.

sayesinde Ashley

+0

Eğer yapı içine SonarQube entegre düşündünüz mü? Kaynak kod sayıları, bir web uygulaması kontrol paneline toplanan ve bildirilen metriklerden biridir. –

cevap

1

aşağıda çözüm burada çalışır: -

<project name="ant-read-n-files" default="run" basedir="."> 
 
    
 
    <!-- Load the ant contrib lib --> 
 
    <taskdef resource="net/sf/antcontrib/antlib.xml"> 
 
    <classpath> 
 
     <pathelement location="${basedir}/lib/ant-contrib.jar"/> 
 
    </classpath> 
 
    </taskdef> 
 
    
 
    <target name="read"> 
 
    <!-- file a --> 
 
    <loadfile property="textFileA" srcfile="${basedir}/files/aaa.txt"> 
 
     <filterchain> 
 
     <headfilter lines="1" skip="${linenum}"/> 
 
     </filterchain> 
 
    </loadfile> 
 
    <for param="line" list="${textFileA}" delimiter="${line.separator}"> 
 
     <sequential> 
 
     <property name="textFileAValue" value="@{line}"/> 
 
     </sequential> 
 
    </for> 
 
    <!-- file b --> 
 
    <loadfile property="textFileB" srcfile="${basedir}/files/bbb.txt"> 
 
     <filterchain> 
 
     <headfilter lines="1" skip="${linenum}"/> 
 
     </filterchain> 
 
    </loadfile> 
 
    <for param="line" list="${textFileB}" delimiter="${line.separator}"> 
 
     <sequential> 
 
     <property name="textFileBValue" value="@{line}"/> 
 
     </sequential> 
 
    </for> 
 
    <!-- file c --> 
 
    <loadfile property="textFileC" srcfile="${basedir}/files/ccc.txt"> 
 
     <filterchain> 
 
     <headfilter lines="1" skip="${linenum}"/> 
 
     </filterchain> 
 
    </loadfile> 
 
    <for param="line" list="${textFileC}" delimiter="${line.separator}"> 
 
     <sequential> 
 
     <property name="textFileCValue" value="@{line}"/> 
 
     </sequential> 
 
    </for> 
 
    
 
    <!-- Print them all --> 
 
    <echo message="${textFileAValue}"/> 
 
    <echo message="${textFileBValue}"/> 
 
    <echo message="${textFileCValue}"/> 
 
    </target> 
 
    
 
    <target name="run"> 
 
    <!-- Get number of lines of one of the files --> 
 
    <loadfile property="textFile" srcfile="${basedir}/files/aaa.txt"/> 
 
    <resourcecount property="line.count" count="0" when="eq"> 
 
     <tokens> 
 
     <concat> 
 
      <filterchain> 
 
      <tokenfilter> 
 
       <stringtokenizer delims="${line.separator}" /> 
 
      </tokenfilter> 
 
      </filterchain> 
 
      <propertyresource name="textFile" /> 
 
     </concat> 
 
     </tokens> 
 
    </resourcecount> 
 
    <echo message="Number of lines: ${line.count}" /> 
 
    
 
    <script language="javascript"> 
 
     var list="", n=parseInt(project.getProperty("line.count"), 0); 
 
     for (var i = 0; i &lt; n; i++) list += i + ","; 
 
     project.setProperty("list", list); 
 
    </script> 
 
    <foreach param="linenum" list="${list}" target="read"/> 
 
    
 
    </target> 
 
</project>

İlgili konular