配置Sonar以从Maven pom.xml中排除文件

pap*_*pus 33 java xml maven sonarqube

我有一个在maven中配置的项目,代码分析由SonarQube完成.

我正在尝试在pom.xml文件中配置SonarQube以从代码分析中排除一些文件.这些文件可以通过它们的类名来标识,它们在扩展名之前包含下划线字符(它们是元模型类).下面我给出了我尝试排除它们的pom.xml文件的一部分:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>sonar-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <sonar.sources>src/main/java</sonar.sources>
        <sonar.exclusions>file:**/src/main/java/**/*_.*</sonar.exclusions>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

但是,上面的代码不起作用.有没有办法从我的pom.xml文件配置SonarQube以在分析源代码时忽略这些文件?

先感谢您.

Mik*_*kke 54

声纳排除(如其他声纳属性)必须添加到<properties> POM文件部分.像这样(例如从当前项目中排除jOOQ自动生成的代码):

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <sonar.host.url>http://www.example.com/</sonar.host.url>
    <sonar.jdbc.url>jdbc:postgresql://www.example.com/sonar</sonar.jdbc.url>
    <sonar.jdbc.driver>org.postgresql.Driver</sonar.jdbc.driver>
    <sonar.jdbc.username>sonar</sonar.jdbc.username>
    <sonar.jdbc.password>sonar</sonar.jdbc.password>
    <sonar.exclusions>org/binarytherapy/generated/**/*, **/GuiceBindComposer.java</sonar.exclusions>
    <sonar.dynamic>reuseReports</sonar.dynamic>
</properties>
Run Code Online (Sandbox Code Playgroud)

  • 你可以把它放在多行上; 每个逗号后都有一个换行符. (4认同)
  • 当字符串很快变得很长时,指定许多排除项的最佳选择是什么? (2认同)

Ana*_*ika 14

提到的类/包<sonar.exclusions>从Sonar的所有静态分析中<sonar.coverage.exclusions>排除给定的类,但是仅从coverage中排除给定的类/包,并且仍然要分析其他参数.

<properties>
    <sonar.coverage.exclusions>
        **/domain/**/*,
        **/pojos/*
    </sonar.coverage.exclusions>
</properties>
Run Code Online (Sandbox Code Playgroud)

参考:

资源:

  • 在 6.5 版本中,如果您在每个条目之间添加新行,则会出现错误。请参阅 https://jira.sonarsource.com/browse/SONAR-9666 (2认同)

Voi*_*icu 9

在按照接受的答案进行声纳排除时,请确保遵循SonarQube 文档中的这种模式方法:

相对路径基于组件的完全限定名称(如下所示):

src/main/java/org/sonar/batch/phases/AbstractPhaseEvent.java
Run Code Online (Sandbox Code Playgroud)

例子

# Exclude all classes ending with "Bean"
# Matches org/sonar.api/MyBean.java, org/sonar/util/MyOtherBean.java, etc.
**/*Bean.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
src/main/java/org/sonar/*

# Exclude all files in the "bank" directory and its sub-directories
# Matches bank/ZTR00021.cbl, bank/data/CBR00354.cbl, bank/data/REM012345.cob
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
bank/**/*.cbl
Run Code Online (Sandbox Code Playgroud)

因此,如果要排除以“Bean”结尾的所有类和“src/main/java/org/sonar”目录(但不在其子目录中)中的所有类,请将以下sonar.exclusions属性添加到 pom 的properties:

<properties>
  ...
  <sonar.exclusions>**/*Bean.java,src/main/java/org/sonar/*</sonar.exclusions>
</properties>
Run Code Online (Sandbox Code Playgroud)