Вызов FindBugs из Ant: передача разделенного пробелами списка файлов в java - PullRequest
3 голосов
/ 31 августа 2009

Я пытаюсь вызвать FindBugs изнутри Ant. Чтобы контролировать объем памяти, доступный для FindBugs, я решил не использовать муравьиную задачу. Проблема, с которой я столкнулся сейчас, заключается в том, что я хочу передать несколько jar-файлов из командной строки в FindBugs:

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

Тем не менее, поскольку эти jar-файлы на самом деле являются подключаемыми модулями Eclipse, я не знаю точного имени jar-файлов, поэтому мне нужен способ использовать подстановочный знак для получения списка. Вот что я придумал:

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

Тем не менее, findbugs.input pathref является списком jar , разделенным запятыми, и не разделенным пробелами, как этого хочет FindBugs. Как получить список банок в виде списка через пробел?

(Возможно, это легче сделать с помощью муравейной задачи FindBugs. Я не могу точно сказать из документации.)

Ответы [ 3 ]

2 голосов
/ 31 августа 2009

Используйте pathconvert , например:

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

Реализуя указанную вами цель, я изменил ссылку с <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>
1 голос
/ 31 августа 2009

Используйте для преобразования пути в правильный формат, сохранения его в свойстве, затем используйте вместо

0 голосов
/ 31 августа 2009

Вы можете управлять памятью из задачи муравья:

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