Sonar:File */Application.java can‘t be indexed twice. Please check that inclusion/exclusion patterns

项目场景:

公司让用sonar集成git扫描代码,环境都搭建好了,但是sonarCube执行任务时报错:

File */Application.java can’t be indexed twice. Please check that inclusion/exclusion patterns produce disjoint sets for main and test files


问题描述

能到这一步说明环境已经配置好了,只是sonarCube执行时发现错误,报错的中文意思是:

文件*/Application.java(包路径)不能被索引两次。请检查包含/排除模式是否为主文件和测试文件生成不相交的集合

下面是我.gitlab-ci.yml配置内容

#定义 stages(阶段),任务根据这里的顺序执行
stages:
  - sonarqube_scan

# 定义job(任务),多个任务分开定义
sonarqube_scan_job:
  #阶段,取自开始的stages
  stage: sonarqube_scan

  #定义该job执行的脚本
  #注意-Dsonar.host.url 是sonarqube服务器地址
  #-Dsonar.login 是sonarqube服务器地址账号
  #-Dsonar.password 是sonarqube服务器地址密码
  #-Dsonar.java.binaries=. sonar4.12版本之后,分析java代码需要提供该参数。
  #-Dsonar.projectName=$CI_PROJECT_NAME -Dsonar.projectKey=$CI_PROJECT_NAME
  script:
    - sonar-scanner
      -Dsonar.language=java
      -Dsonar.java.source=1.8
      -Dsonar.java.binaries=.
      -Dsonar.projectKey=lc-sonar-scan #你项目名称
      -Dsonar.host.url="你sonar的地址http://127.0.0.1:9080/sonar"
      -Dsonar.sources=lc-sonar-scan/src,lc-sonar-scan #扫描项目路径
      -Dsonar.exclusions=**/src/main/resources/** #不扫描的路径
      -Dsonar.login=test
      -Dsonar.password=test
  #标签,只有这个标签的runner才会执行任务;在gilab-runner注册时填写的tag-list
  tags:
    - olap #这个是你runner的标签
  when: always #只有指定的分支提交才会执行
  only:
    - master  # 设置你扫描代码的分支

原因分析:

根据中文意思可以发现是 Application.java这个启动类 被扫描了俩次,这个类只能扫描一次,所以我们把问题定位到了扫描路径这里,也就是上边配置的Dsonar.sources 属性(sonar扫描的代码路径)

问题定位如下

 -Dsonar.sources=lc-sonar-scan/src,lc-sonar-scan #扫描项目路径

发现这里配置了俩重复路径全是 lc-sonar-scan
sonarCube按照这个路径扫描的话,Application.java这个启动类果真重复扫了俩次


解决方案:

修改Dsonar.sources 这个属性的值 (修改扫描的路径配置) 删除多余路径

修改如下:

-Dsonar.sources=lc-sonar-scan/src

成功解决!

温馨提示:

  • 解决问题一定要看报错提示,根据报错提示找问题,一个一个解决,这里我遇到的是 Application.java
    被扫了俩次,看其他帖子有文件 AppTest.java 被扫了俩次 大家也可能遇到其他路径被扫了俩次
    一定要根据自己的实际情况来,看具体是那个文件,然后看这个文件所在目录,修改Dsonar.sources或者Dsonar.exclusions这俩属性,应该就可以解决了。
    总结一下: Dsonar.sources--------------------------设置sonar要扫描的路径
    Dsonar.exclusions-----------------------设置sonar不扫描的路径

  • 还有一点就是容易被报错的后半段影响:

    Please check that inclusion/exclusion patterns produce disjoint sets for main and test files

    请检查main和test文件,并不是有test文件的原因,sonar也可以扫单元测试类,一定一定要看前半段,sonarCube重复扫描文件的路径!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值