1

对不起,我又挣扎了。所以 taskdef 工作正常,但我无法实际使用 spotbugs。

<target name="bugs" depends="compile">

    <spotbugs home="${spotbugs.home}"
        output="${spotbugs.output}"
        outputFile="bugs.${spotbugs.output}"
        excludeFilter="${spotbugs.exclude}">
    <sourcePath path="."/>
    <auxClassPath path="."/>
    <fileset dir="." includes="${package}/*.class"/>
</spotbugs>

所以我想检查代码

ant -Dpackage=einstieg 错误

并收到“问题:未能创建任务或键入 spotbugs”。我用于 checkstyle 的相同模式完美地工作。taskdefinition 指向spotbugs 和所需的类——没有任何错误。有什么建议么?

所以我认为点到spotbugs 根本不存在。但是 /lib 目录中存在合适的文件。

这就是 Taskdefinition 的样子:

<!-- spotbugs settings -->
    <property name="spotbugs.home" value="C:/ant/lib"/>
    <property name="spotbugs.output" value="xml"/>
    <property name="spotbugs.exclude"
              value="C:/Users/wolfbiker/Documents/einstieg/exclude_filter.xml"/>
    <taskdef resource="edu/umd/cs/findbugs/anttask/tasks.properties"
             classpath="${spotbugs.home}/spotbugs-ant.jar"/>
4

1 回答 1

1

我认为在详细阅读使用 SpotBugs Ant 任务时,您会看到您的

<property name="spotbugs.home" value="C:/ant/lib"/>

不应指向复制spotbugs-ant.jar的 ant 主页,而应指向 spotbugs 安装本身 - 这与 spotbugs ant-task 不同。因此,spotbugs 也必须安装在 ant-task 旁边。

这也意味着您必须更改类路径

<taskdef resource="edu/umd/cs/findbugs/anttask/tasks.properties" classpath="${spotbugs.home}/spotbugs-ant.jar"/>

指向你应该已经被复制到你的 ant/lib 目录的 spotbugs-ant.jar。

于 2019-04-05T05:40:06.013 回答