4

我们有一个 Scala 项目并使用 Maven 和 Jenkins 来构建它。现在我们还想使用 Scalastyle 进行静态代码分析。它在 IDE 中运行良好,如果我使用 Jenkins 自由式工作。输出文件被创建,Jenkins 显示了一个带有样式警告和错误的漂亮图表。

但是,如果我使用 Jenkins Maven 作业,“Checkstyle 趋势”仍然为空,尽管 xml 文件在那里并且具有正确的名称 (checkstyle-result.xml)。

我找到了这个。那里的讨论有点混乱,但我知道发布 Scalastyle 结果也应该适用于 Maven 工作。

我弄错了吗?或者实际上有没有办法让詹金斯为我的 Maven 工作发布 Scalastyle 结果?还是某种解决方法?(除了使用自由式工作或 SBT ......)

4

1 回答 1

4

在尝试了一些东西之后,我找到了解决方案。我所需要的只是我的多模块项目的根 pom 中的一个 Scalastyle 条目,如下所示:

<build>
    <plugins>
        <plugin>
            <groupId>org.scalastyle</groupId>
            <artifactId>scalastyle-maven-plugin</artifactId>
            <version>0.8.0</version>
            <configuration>
                <sourceDirectory>${project.basedir}/src/main/scala</sourceDirectory>
                <testSourceDirectory>${project.basedir}/src/test/scala</testSourceDirectory>
                <configLocation>scalastyle_config.xml</configLocation>
                <outputFile>${project.basedir}/checkstyle-result.xml</outputFile>
                <outputEncoding>UTF-8</outputEncoding>
            </configuration>
        </plugin>
    </plugins>
</build>

这里的重要部分是${project.basedir}。我之前试过没有,它没有工作。

在 Jenkins 的项目配置中,我在Build -> Goals and options部分给出了scalastyle:check目标,例如

clean install scalastyle:check 

Build settings下,我勾选了Publish Checkstyle analysis results复选框。

现在 Jenkins 发布了 Scalastyle 结果。然而,一个问题仍然存在:Jenkins 似乎没有选择我的 Scalastyle 配置文件 (scalastyle_config.xml),而是使用了 scalastyle-maven-plugin 的默认规则。至少这是我怀疑的,因为对于同一个项目,我在 IntelliJ(它使用我的自定义配置文件)中得到的 Scalastyle 警告比在 Jenkins 中更多......

更新:我错了。Jenkins 确实采用了我的自定义规则。然而,它比 IntelliJ 显示了更多的 Scalastyle 警告。我稍后会调查。

于 2016-03-03T13:44:22.370 回答