2009-08-31 4 views
3

J'essaie d'invoquer FindBugs depuis l'intérieur d'Ant. Afin de contrôler la quantité de mémoire disponible pour FindBugs, j'ai choisi de ne pas utiliser la tâche ant. Le problème que j'ai maintenant que je veux passer un certain nombre de pots sur la ligne de commande à FindBugs:Appel de FindBugs à partir de Ant: passage d'une liste de fichiers séparés par des espaces à Java

java -jar .../findbugs.jar foo.jar bar.jar fie.jar 

Cependant, étant donné que ces pots sont en fait des plugins Eclipse, je ne connais pas le nom exact de la jars donc j'ai besoin d'un moyen d'utiliser un caractère générique pour obtenir la liste. Voilà ce que je suis venu avec:

<target name="findbugs"> 
    <property name="findbugs.home" location="${user.home}/eclipse/findbugs" /> 
    <path id="findbugs.input"> 
     <fileset dir="${testDirectory}/eclipse/plugins"> 
      <include name="my.plugins.*.jar" /> 
     </fileset> 
    </path> 
    <path id="findbugs.auxinput"> 
     <fileset dir="${testDirectory}/eclipse/plugins"> 
      <include name="*.jar" /> 
      <include name="**/*.jar" /> 
     </fileset> 
    </path> 
    <java jar="${findbugs.home}/lib/findbugs.jar" fork="true"> 
     <jvmarg value="-Xmx1048m" /> 
     <arg value="-textui" /> 
     <arg value="-output" /> 
     <arg value="findbugs.xml" /> 
     <arg value="-xml" /> 
     <arg value="-exclude" /> 
     <arg value="${basedir}/findbugsExclude.xml" /> 
     <arg value="-auxclasspath" /> 
     <arg pathref="findbugs.auxinput"/> 
     <arg pathref="findbugs.input" /> 
    </java> 
</target> 

Cependant, la findbugs.input pathref est une liste des bocaux, séparés par des virgules et non séparés par un espace comme FindBugs veut. Comment puis-je obtenir la liste des pots en tant que liste séparée par des espaces?

(Est-ce peut-être plus facile à faire avec le FindBugs ant-tâche. Je ne peux pas vraiment dire de la documentation.)

Répondre

2

utilisez pathconvert, comme ceci:

<pathconvert pathsep="," property="findbugs.input.csv" refid="findbugs.input"/> 

La mise en œuvre dans la cible que vous avez fourni, j'ai changé la référence de <arg pathref="findbugs.input" /> à <arg value="${findbugs.input.csv}" />

<target name="findbugs"> 
    <property name="findbugs.home" location="${user.home}/eclipse/findbugs" /> 
    <path id="findbugs.input"> 
     <fileset dir="${testDirectory}/eclipse/plugins"> 
      <include name="my.plugins.*.jar" /> 
     </fileset> 
    </path> 
    <pathconvert pathsep="," property="findbugs.input.csv" 
       refid="findbugs.input"/> 

    <path id="findbugs.auxinput"> 
     <fileset dir="${testDirectory}/eclipse/plugins"> 
      <include name="*.jar" /> 
      <include name="**/*.jar" /> 
     </fileset> 
    </path> 

    <echo message="${findbugs.input.csv}" /> 

    <java jar="${findbugs.home}/lib/findbugs.jar" fork="true"> 
     <jvmarg value="-Xmx1048m" /> 
     <arg value="-textui" /> 
     <arg value="-output" /> 
     <arg value="findbugs.xml" /> 
     <arg value="-xml" /> 
     <arg value="-exclude" /> 
     <arg value="${basedir}/findbugsExclude.xml" /> 
     <arg value="-auxclasspath" /> 
     <arg pathref="findbugs.auxinput"/> 
     <arg value="${findbugs.input.csv}" /> 
    </java> 
</target> 
+0

fonctionne pour moi avec ' 'et'

1

Utilisez <pathconvert> pour convertir le chemin d'accès dans le format approprié, le stockage dans un puis utilisez la propriété < valeur arg ... > au lieu de < arg pathref ... >

0

Vous pouvez contrôler la mémoire de la tâche de fourmi:

<findbugs jvmargs="-Xms512m -Xmx512m" ...> 
     ... 
    </findbugs> 
Questions connexes