我正在尝试将Sonarqube分析集成到我项目的JavaScript源中。这是一个使用Spring组件作为后端的项目,并且第一步,我们完成了Java源代码的集成,这时没有问题。
我们正在使用Sonarqube v5.6.3
我发现的问题与sonar.exclusions
属性有关。显然,该属性不能排除已经添加为源的文件夹(请参见question and answer explaining that exact issue)。
我的pom.xml中有以下几行,它们无法正常工作;根据前面的问题,这是可以理解的:
<sonar.sources>src/main/java,src/main/docker,js-sources</sonar.sources>
<sonar.tests>src/test</sonar.tests>
<sonar.exclusions>**/target/*</sonar.exclusions>
问题是:前端由几个模块组成,这些模块在自己的
/target
子文件夹下一个一个地编译,然后全部部署到src/main/webapp
中。 (它们用作常规目标文件夹:启动新编译时,这些文件夹将被删除/重新创建。)那些
js-sources/moduleA/target
,js-sources/moduleB/target
,js-sources/moduleC/target
文件夹将自动作为源包含在内,因此被排除指令忽略。这些目标文件夹仍然包含/ src子文件夹,这使得很难使用有限的Sonar模式(不允许使用完整的类似xpath的选择器)来仅包含或排除某些路径。因为我不认为Sonarqube团队希望每个人都一个一个地添加每个小子文件夹(这就是为什么他们在第一学期就创建了模式),所以我正在寻求帮助:如何排除那些按模块定位的目标文件夹在我的源代码中的文件夹树下?
另一种可能性是,这是一个迫使我们store this config at a Jenkinsfile or even directly in the Jenkins config(在工作级别)的错误,但是我仍然不确定,仍然认为可以通过声明来源和排除的方式来解决某些问题。
最佳答案
尝试
<sonar.exclusions>**/target/**/*</sonar.exclusions>