我们有一个Scala项目,并使用Maven和Jenkins来构建它。现在我们还想使用Scalastyle进行静态代码分析。 如果我使用Jenkins自由式作业,它在IDE中工作正常。创建输出文件,Jenkins显示带有样式警告和错误的漂亮图表。
但是,如果我使用Jenkins Maven作业,“Checkstyle趋势”仍为空,尽管xml文件在那里且名称正确(checkstyle-result.xml)。
我找到了this。讨论有点令人困惑,但我知道发布Scalastyle结果也适用于Maven工作。
我弄错了吗?或者实际上有一种方法可以让Jenkins为我的Maven工作发布Scalastyle结果吗?还是某种解决方法? (除了使用自由式工作或SBT ......)
答案 0 :(得分:3)
在尝试了一些事情之后,我找到了解决方案。我需要的只是我的多模块项目的根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 - &gt;部分中给出 scalastyle:check 目标。 目标和选项,例如
clean install scalastyle:check
在构建设置下,勾选复选框发布Checkstyle分析结果。
现在Jenkins发布了Scalastyle结果。然而,一个问题仍然存在:Jenkins似乎没有拿起我的Scalastyle配置文件(scalastyle_config.xml),而是使用了scalastyle-maven-plugin的默认规则。至少这是我怀疑的,因为对于同一个项目,我在IntelliJ(使用我的自定义配置文件)中获得的Scalastyle警告比在Jenkins中更多......
更新:我错了。詹金斯确实拿起我的自定义规则。尽管如此,它显示出比IntelliJ更多的Scalastyle警告。我稍后会对此进行调查。