我们有两个Java Web应用程序项目由SonarQube的同一个实例(版本6.4)进行分析。这两个项目都有Java,JavaScript和CSS组件,我们希望对这些配置文件进行分析。
项目A已成功分析所有三种语言,而项目B仅针对Java进行分析。
全局设置几乎是开箱即用的,并且两个项目都没有任何项目特定的设置。
我们认为它不会产生任何影响,但是Project A是一个使用JSP的Spring MVC应用程序。项目B是使用Thymeleaf的Spring Boot应用程序。
项目A没有sonar.properties或sonar-project.properties文件。在项目B上,我们尝试了它没有任何属性,并且属性试图将它命名为sonar.properties和sonar-project.properties,它们将sonar.language设置为js单独或java,js,css,但似乎没有区别在行为中。
SonarsQube正在由Jenkins(版本2.61)开始使用SonarsQube Scanner for Jenkins(版本2.6.1)插件。
两个Jenkins项目都进行了类似的配置,并将Sonar分析作为Post Build Step开始:
$SONAR_MAVEN_GOAL -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.login=$SQ_LOGIN -Dsonar.password=$SQ_PASSWORD
我们甚至尝试删除Sonar数据库并让Sonar重建它,但是Project B仍然只是针对Java进行分析。
编辑:我们希望项目B能够像项目A一样通过Java,JavaScript和CSS进行分析。
答案 0 :(得分:1)
默认情况下,Maven分析不会将资源文件包含在分析中。您需要通过将sonar.sources
覆盖为pom中的属性或在命令行上定义(-D
)来手动执行此操作。我猜这已经在项目的pom中的属性中进行了扫描,就像你想要的那样。
答案 1 :(得分:0)
感谢G. Ann的回答,我得以解决类似的问题。在一个多模块Maven项目中,在几个Java模块中间,有一个适当地称为{'po1': 47}
的模块,其中仅包含Web资源,例如HTML,CSS和JavaScript文件。这些来源在frontend
中,而不在app
中。为了使SonarQube分析这些Web资源,我在前端模块pom的src/main/web
元素中添加了<sonar.sources>app</sonar.sources>
。出乎意料的是,要使该构建适用于所有模块,我必须按构建顺序在下一个模块的pom中添加<properties />
,以覆盖现在重新定义的默认值。