声纳:在一个项目中索引了0个文件,在另一个项目中进行了正确扫描

时间:2018-11-09 19:50:37

标签: maven jenkins sonarqube sonarqube-scan

我有2个Jenkins shared libraries,其中包含要扫描的常规文件。这两个项目都使用Maven使用相同的声纳调用,但是在一个项目中扫描了Groovy文件,而在另一个项目中则没有扫描

声纳通话

...
    String scanCmd = "mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.4.0.905:sonar " +
            "-f pom.xml " +
            "-Dsonar.branch=%GIT_BRANCH% " +
            "-Dsonar.test.inclusions=**/*Test*/** " +
            "-Dsonar.exclusions=**/*Test*/** " +
            "-Dsonar.skipDesign=true "

    bat scanCmd
...

如果使用的话,我们正在使用5.6.6版本

声纳扫描仪配置

声纳配置位于包含声纳属性的父pom中

....
   <properties>
        <!-- Sonar -->
        <sonar.sources>src,vars</sonar.sources>
        <sonar.inclusions>**/**</sonar.inclusions>
    </properties>
....

两个项目(pom.xml)都使用此父pom,即相同的声纳属性

项目1:索引0个文件

项目结构如下:

D:.
│   .gitignore
│   Jenkinsfile
│   pom.xml
│   README.md
│
├───src
│   └───ch
│       └───swisscard
│           └───jenkins
│               └───pipeline
│                   └───util
│                           PipelineRabbitMQ.groovy
│
└───vars
        ciPipeline.groovy

因此,应扫描两个常规文件,但日志文件显示索引的0个文件:

[INFO] Base dir: D:\jenkins\tools\ci-home\workspace\rabbitmq-ci-pipeline_master-2CYM2JXOI6CJM2T4MSNQTNPWY7LRY7PTSC3OG74TSX2Q2WNKXUSQ
[INFO] Working dir: d:\jenkins\tools\ci-home\workspace\rabbitmq-ci-pipeline_master-2CYM2JXOI6CJM2T4MSNQTNPWY7LRY7PTSC3OG74TSX2Q2WNKXUSQ\target\sonar
[INFO] Source paths: src, vars
[INFO] Binary dirs: target/classes
[INFO] Source encoding: UTF-8, default locale: en_US_US
[INFO] Index files
[INFO] Included sources:
[INFO]   **/**
[INFO] Excluded sources:
[INFO]   **/target/**/*
[INFO]   **/*Test*/**
[INFO]   **/*Test*/**
[INFO] Included tests:
[INFO]   **/*Test*/**
[INFO] 0 files indexed
[INFO] 0 files ignored because of inclusion/exclusion patterns

项目2:正确扫描文件

第二个项目结构如下:

D:.
│   .gitignore
│   Jenkinsfile
│   pom.xml
├───src
│   └───main
│       │   Utils.groovy
└───vars
        checkQualityGate.groovy
        defaultBuildApplication.groovy
        ciPipeline.groovy

这里的日志文件指示已扫描所有文件:

[INFO] Load server rules (done) | time=98ms
[INFO] Base dir: D:\jenkins\tools\ci-home\workspace\pipeline_feature_sonar-scan-D6GRAK5PLQOMGCOOH2T6QP6BP4LA6O3LP23UC7VBSSL3RORI4ZXQ
[INFO] Working dir: d:\jenkins\tools\ci-home\workspace\pipeline_feature_sonar-scan-D6GRAK5PLQOMGCOOH2T6QP6BP4LA6O3LP23UC7VBSSL3RORI4ZXQ\target\sonar
[INFO] Source paths: src, vars
[INFO] Source encoding: UTF-8, default locale: en_US_US
[INFO] Index files
[INFO] Included sources:
[INFO]   **/**
[INFO] Excluded sources:
[INFO]   **/target/**/*
[INFO]   **/*Test*/**
[INFO]   **/*Test*/**
[INFO] Included tests:
[INFO]   **/*Test*/**
[INFO] 5 files indexed
[INFO] 0 files ignored because of inclusion/exclusion patterns

问题/问题

因此,显然两个项目都具有相同的配置和相似的结构,但是一个项目被扫描而另一个则没有。此刻我不明白为什么? 我检查了其他对我没有帮助的主题

  • 我没有明确设置sonar.basedir,但是根据日志,基本目录很好

1 个答案:

答案 0 :(得分:1)

我的项目有类似的问题。我在声纳属性中添加了sonar.scm.exclusions.disabled=true,并对文件进行了索引和扫描。