Dmi*_*voi 37 java maven sonarqube
我在Maven有一个声纳配置文件.除代码覆盖率指标外,一切正常.我想让Sonar只为代码覆盖率指标忽略一些类.我有以下个人资料:
<profile>
<id>sonar</id>
<properties>
<sonar.exclusions>**/beans/jaxb/**</sonar.exclusions>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven.surefire.plugin.version}</version>
<configuration>
<redirectTestOutputToFile>true</redirectTestOutputToFile>
<excludes>
<exclude>**/*Suite*.java</exclude>
<exclude>**/*RemoteTest.java</exclude>
<exclude>**/*SpringTest.java</exclude>
<exclude>**/*CamelTest.java</exclude>
<exclude>**/*FunctionalTest.java</exclude>
<exclude>**/*IntegrationTest.java</exclude>
<exclude>**/*DaoBeanTest.java</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</profile>
Run Code Online (Sandbox Code Playgroud)
请帮忙.我试着添加类似的东西
<exclude>com/qwerty/dw/publisher/Main.class</exclude>
Run Code Online (Sandbox Code Playgroud)
但它没有帮助
UPDATE
我有一个正确的Cobertura配置文件.我试图将它添加到Sonar配置文件中,但我仍然有53%而不是Cobertura配置文件中的95%
<profile>
<id>sonar</id>
<properties>
<sonar.exclusions>**/beans/jaxb/**</sonar.exclusions>
<sonar.core.codeCoveragePlugin>cobertura</sonar.core.codeCoveragePlugin>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven.surefire.plugin.version}</version>
<configuration>
<redirectTestOutputToFile>true</redirectTestOutputToFile>
<excludes>
<exclude>**/*Suite*.java</exclude>
<exclude>**/*RemoteTest.java</exclude>
<exclude>**/*SpringTest.java</exclude>
<exclude>**/*CamelTest.java</exclude>
<exclude>**/*FunctionalTest.java</exclude>
<exclude>**/*IntegrationTest.java</exclude>
<exclude>**/*DaoBeanTest.java</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>${cobertura.maven.plugin.version}</version>
<configuration>
<instrumentation>
<excludes>
<exclude>com/qwerty/dw/dao/*</exclude>
<exclude>com/qwerty/dw/domain/*</exclude>
<exclude>com/qwerty/dw/beans/**/*</exclude>
<exclude>com/qwerty/dw/daemon/exception/*</exclude>
<exclude>com/qwerty/dw/daemon/Main.class</exclude>
<exclude>com/qwerty/dw/sink/Main.class</exclude>
<exclude>com/qwerty/dw/publisher/Main.class</exclude>
<exclude>com/qwerty/dw/publisher/dao/*</exclude>
<exclude>com/qwerty/dw/publisher/domain/*</exclude>
</excludes>
</instrumentation>
<formats>
<format>html</format>
</formats>
<aggregate>true</aggregate>
<check>
<haltOnFailure>true</haltOnFailure>
<branchRate>60</branchRate>
<lineRate>60</lineRate>
<totalBranchRate>60</totalBranchRate>
<totalLineRate>60</totalLineRate>
</check>
</configuration>
<executions>
<execution>
<goals>
<goal>clean</goal>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
Run Code Online (Sandbox Code Playgroud)
bar*_*uin 64
在撰写本文时(使用SonarQube 4.5.1),要设置的正确属性是sonar.coverage.exclusions,例如:
<properties>
<sonar.coverage.exclusions>foo/**/*,**/bar/*</sonar.coverage.exclusions>
</properties>
Run Code Online (Sandbox Code Playgroud)
这似乎是之前几个版本的变化.请注意,这仅从覆盖率计算中排除给定的类.计算所有其他指标和问题.
为了找到您的SonarQube版本的属性名称,您可以尝试转到SonarQube实例的" 常规设置"部分,并查找" 代码覆盖率"项目(在SonarQube 4.5.x中,即" 常规设置"→"排除"→"代码覆盖率").在输入字段下方,它给出了上面提到的属性名称("Key:sonar.coverage.exclusions").
rog*_*ack 24
对我们来说,这工作(基本上是pom.xml级别属性):
<properties>
<sonar.exclusions>**/Name*.java</sonar.exclusions>
</properties>
Run Code Online (Sandbox Code Playgroud)
根据http://docs.sonarqube.org/display/SONAR/Narrowing+the+Focus#NarrowingtheFocus-Patterns看来你可以用".java"结束它,也可以用"*"结束它来获取java类.有兴趣.
小智 7
当使用 sonar-scanner 进行 swift 时,请在 sonar-project.properties 中使用 sonar.coverage.exclusions 来排除任何仅用于代码覆盖的文件。如果您还想从分析中排除文件,您可以使用 sonar.exclusions。这很快对我有用
sonar.coverage.exclusions=**/*ViewController.swift,**/*Cell.swift,**/*View.swift
Run Code Online (Sandbox Code Playgroud)
根据SonarQube 7.1 的本文档
sonar.exclusions - 要从分析中排除的文件路径模式的 逗号分隔列表sonar.coverage.exclusions - 要从覆盖率 计算中排除的文件路径模式的逗号分隔列表
本文档提供了一些有关如何创建路径模式的示例
# Exclude all classes ending by "Bean"
# Matches org/sonar.api/MyBean.java, org/sonar/util/MyOtherBean.java, org/sonar/util/MyDTO.java, etc.
sonar.exclusions=**/*Bean.java,**/*DTO.java
# Exclude all classes in the "src/main/java/org/sonar" directory
# Matches src/main/java/org/sonar/MyClass.java, src/main/java/org/sonar/MyOtherClass.java
# But does not match src/main/java/org/sonar/util/MyClassUtil.java
sonar.exclusions=src/main/java/org/sonar/*
# Exclude all COBOL programs in the "bank" directory and its sub-directories
# Matches bank/ZTR00021.cbl, bank/data/CBR00354.cbl, bank/data/REM012345.cob
sonar.exclusions=bank/**/*
# Exclude all COBOL programs in the "bank" directory and its sub-directories whose extension is .cbl
# Matches bank/ZTR00021.cbl, bank/data/CBR00354.cbl
sonar.exclusions=bank/**/*.cbl
Run Code Online (Sandbox Code Playgroud)
如果您在项目中使用 Maven,则可以像这样传递 Maven 命令行参数,例如 -Dsonar.coverage.exclusions=**/config/*,**/model/*
我在明确排除单个类时遇到问题。在我的观察之下:
**/*GlobalExceptionhandler.java - not working for some reason, I was expecting such syntax should work
com/some/package/name/GlobalExceptionhandler.java - not working
src/main/java/com/some/package/name/GlobalExceptionhandler.java - good, class excluded explicitly without using wildcards
Run Code Online (Sandbox Code Playgroud)
小智 5
对于jacoco:使用此属性:
-Dsonar.jacoco.excludes=**/*View.java
Run Code Online (Sandbox Code Playgroud)
我认为您正在寻找此答案中描述的解决方案Excludemethods from codecover with Cobertura 请记住,如果您使用的是Sonar 3.2,您已指定您的覆盖工具是cobertura而不是jacoco(默认),这不会'还不支持这种功能
| 归档时间: |
|
| 查看次数: |
108713 次 |
| 最近记录: |