如何从声纳分析中排除已编译资源的子文件夹?

时间:2017-11-22 13:13:15

标签: javascript jenkins sonarqube

我正在尝试将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/targetjs-sources/moduleB/targetjs-sources/moduleC/target个文件夹会自动包含在源中,因此会被exclusions指令忽略。这些目标文件夹仍然包含/ src子文件夹,这使得很难使用有限的声纳模式(不允许使用完整的类似xpath的选择器)来包含或排除某些路径。

由于我不认为Sonarqube团队期望每个人逐个添加每个小子文件夹(这就是他们在第一学期制作模式的原因),我正在寻求帮助:如何排除这些每个模块的目标文件夹位于我的源代码中的文件夹树下吗?

另一种可能性是,这是一种迫使我们store this config at a Jenkinsfile or even directly in the Jenkins config(在工作层面)的错误,但我仍然不确定,仍然认为可以通过我宣布来源和排除。

2 个答案:

答案 0 :(得分:2)

尝试

 <sonar.exclusions>**/target/**/*</sonar.exclusions>

答案 1 :(得分:1)

编辑:虽然夹杂物在其他情况下很有用,但上面接受的答案是正确的。我将离开我的记录,仅作为使用内含物的一个例子。

尝试使用包含而不是排除,我设置了一个与您的项目非常接近的项目,就像我从您的描述中猜到的那样,我能够忽略js-sources模块的目标文件夹:

<properties>
    <sonar.sources>src/main/java,js-sources</sonar.sources>
    <sonar.inclusions>**/*.java, **/src/**/*.js</sonar.inclusions>
</properties>

你可以这样理解:'扫描所有java文件,无论它们在哪里,只扫描在root'的子文件夹的src中找到的javascript文件