如何在Jenkins Maven任务中发布Scalastyle结果?

4
我们有一个Scala项目,使用Maven和Jenkins进行构建。现在我们还想使用Scalastyle进行静态代码分析。在IDE中和使用Jenkins自由风格作业时它都能正常工作。输出文件被创建并且Jenkins显示了一个漂亮的图表,其中包含样式警告和错误。
然而,如果我使用Jenkins Maven作业,“Checkstyle trend”仍然为空,尽管xml文件存在且具有正确的名称(checkstyle-result.xml)。
我找到了this。那里的讨论有点混乱,但我理解发布Scalastyle结果对于Maven作业也应该有效。
我理解错了吗?或者是否确实有一种方法使Jenkins为我的Maven作业发布Scalastyle结果?或者有什么解决方法?(除了使用自由风格作业或SBT...)

1
您可能希望访问 https://www.codacy.com ,以便轻松使用Scalastyle和其他静态分析规则来管理Scala项目。它可以跟踪时间演变并汇报每个提交/拉取请求引入的新问题。 - PaulB
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项目配置中,在“构建”->“目标和选项”部分中提供scalastyle:check目标,例如:
clean install scalastyle:check 

构建设置 中,我勾选了复选框发布Checkstyle分析结果
现在Jenkins已经发布了Scalastyle结果。但是还有一个问题:Jenkins似乎没有使用我的Scalastyle配置文件(scalastyle_config.xml),而是使用scalastyle-maven-plugin的默认规则。至少这是我怀疑的,因为对于同一项目,IntelliJ(使用自定义配置文件)比Jenkins提供更多的Scalastyle警告...
更新:我错了。Jenkins确实使用了我的自定义规则。尽管如此,它显示的Scalastyle警告比IntelliJ要多。我稍后会调查这个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接