如何在SonarQube中排除不符合规则的文件及指定类的代码覆盖率?
1. 如何在SonarQube中排除不符合代码覆盖率规则的文件?
排除文件主要有三种实用方式,你可以根据项目的管理习惯选择:
SonarQube项目后台配置
进入你的项目主页,点击「Administration」→「General Settings」→「Analysis Scope」,找到「Coverage Exclusions」选项。在这里输入支持通配符的文件路径模式,比如要排除所有测试类可以写**/*Test.java,保存后下次分析就会生效。通过项目配置文件
sonar-project.properties设置
在项目根目录创建或编辑这个文件,添加类似下面的配置:sonar.coverage.exclusions=**/不需要覆盖的文件路径模式.java举个例子,要排除某个遗留包下的所有文件,就写
**/com/example/legacy/**/*,这个包下的所有文件都不会被计入覆盖率统计。通过构建工具(Maven/Gradle)配置
如果用Maven,直接在pom.xml的Sonar插件配置区添加:<properties> <sonar.coverage.exclusions>**/目标文件路径.java</sonar.coverage.exclusions> </properties>如果是Gradle,在
build.gradle里这样配置:sonarqube { properties { property 'sonar.coverage.exclusions', '**/目标文件路径.java' } }
2. 能否仅将所有包下的MyClass.java排除在代码覆盖率检测之外?
完全可以!核心是用通配符匹配任意包下的目标文件,不管你的包结构有多深,只要文件名是MyClass.java,都可以用这个模式:**/MyClass.java
把这个模式放到上面提到的任意一种配置方式里就行:比如在Sonar后台的Coverage Exclusions里填**/MyClass.java,或者在sonar-project.properties里写:
sonar.coverage.exclusions=**/MyClass.java
这样所有包(不管是com/a/MyClass.java还是org/b/c/MyClass.java)下的这个文件都会被排除,而MyClassDAO.java和MyClassResource.java依然会正常参与覆盖率检测。
内容的提问来源于stack exchange,提问作者FrankTominc

