SonarQube排除目录


132

我试图从声纳分析中排除目录。我在sonar-project.properties文件中定义了以下属性:

sonar.sources=src/java
sonar.exclusions=src/java/test/****/*.java

我的目录结构是:

src/java/dig
src/java/test/dig

当我运行声纳运行器时,我得到以下信息:

 INFO  - Excluded sources:
 INFO  -   src/java/test/**/*.java
 INFO  - Excluded tests:
 INFO  -   **/package-info.java

但是,当我检查分析结果时,测试目录中的所有软件包仍然存在。

我只需要告诉Sonar不要分析测试目录及其内部的任何软件包。


3
我找到了解决方案:sonar.exclusions = test / ** / *。java
user1982350 2014年

但是,如果您想避免进行测试分析,则可以尝试使用例如mvn clean package -DskipTests –EddúMeléndez
2014年

Answers:


119

尝试这样的事情:

sonar.exclusions=src/java/test/**

4
确保对通配符使用Ant fileglob模式。这是一个很好的解释:stackoverflow.com/a/86915/748524
Stephan


4
看到此内容的任何人,请确保您拥有src/test/java而不是src/java/test/
法拉兹

如何在C#中排除方法
Nature vetri

重要的是要注意,这不会被视为正则表达式,并且会在整个项目中应用,sonar.exclusions=node_modules/**这不会排除您需要sonar.exclusions=node_modules/**, /some/path/to/nested/node_modules/**显式排除它们的嵌套node_modules文件夹
Christian Bartram,

68

我可以使用以下配置排除多个目录(逗号分隔的文件夹路径):

sonar.exclusions=system/**, test/**, application/third_party/**, application/logs/**

在运行声纳跑步机时,我在日志中得到了以下内容:

Excluded sources: 
  system/**
  test/**
  application/third_party/**
  application/logs/**

17
我也收到排除的消息,但是文件仍在分析中。
塞巴斯

在Teamcity参数中,我使用了提示,但在(-Dsonar.exclu ...)之前插入了-D。在这里工作。:-)
Maciel Bombonato

如何从此处扫描排除所有* .html文件?尝试了此操作,sonar.exclusions=**/bin/**,*.html但在扫描过程中仍然需要html文件。HTML文件是位于多个位置的所有子文件夹,在此处添加具有实际路径映射的子文件夹级别会更加有效。有没有一种方法可以排除所有* .specific_file_type的扫描范围?
Elamurugan


13

如果我们要跳过整个文件夹,可以使用以下命令:

sonar.exclusions=folderName/**/*

如果我们只有一个特定文件,请提供完整路径。

所有需要排除的文件夹,并在此处添加。


2
该答案和sonar.exclusions=folderName和之间有什么区别sonar.exclusions=folderName/**?谢谢
payne

*-匹配零个或多个字符**-匹配零个或多个目录?-匹配一个角色
Keerthi Bandara

12

另一个配置选项是添加maven属性sonar.exclusions。以下是一个示例pom文件,其中不包括静态jquery目录和静态pdf查看器目录。

<project >
<modelVersion>4.0.0</modelVersion>
<artifactId>my Artifact</artifactId>
<!-- Enviroment variables can be referenced as such: ${env.PATH} -->
<packaging>war</packaging>
<url>http://maven.apache.org</url>

<properties>

    <junit.version>4.9</junit.version>
    <mockito.version>1.9.5</mockito.version>
    <jackson.version>1.9.7</jackson.version>
    <powermock.version>1.5</powermock.version>

    <!--Exclude the files Here-->
    <sonar.exclusions>src/main/webapp/static/jquery_ui/*,src/main/webapp/static/pdf-viewer/*,src/main/webapp/static/pdf-viewer/**,src/main/webapp/static/pdf-viewer/**/*</sonar.exclusions>
</properties>


7

最简单的方法是在启动服务器(localhost:8080)后转到服务器URL,然后以admin身份登录。转到设置>排除>源文件排除-在此处添加您的软件包。重新启动服务器。


2

您正在使用什么版本的声纳?有一个选项叫做“ sonar.skippedModules = yourmodulename ”。

这将跳过整个模块。因此请注意。


12
警告-自4.3版以来,不推荐使用'sonar.skippedModules'属性,因此不再使用。
郑凯2014年

1

只需提一下,一旦您从Sonar中排除了文件,请对Jacoco插件执行相同的操作:

<configuration>
<excludes>     
<exclude>com/acme/model/persistence/entity/TransactionEntity*</exclude>
<exclude>com/acme/model/persistence/ModelConstants.class</exclude>
</excludes>
</configuration> 

1

添加逗号分隔的文件夹路径 sonar.exclusions=**/abc/**,**/def/**

这在一个有角度的项目中起作用


1

如果您是Azure DevOps用户,同时在哪里以及如何排除文件和文件夹,请继续:

  1. 编辑管道
  2. 确保已添加“在SonarQube上准备分析”任务。如果您需要配置方面的帮助,则需要在其他地方查找。建议:如果缺少管理链接,请使用UI管道编辑器和yaml编辑器。目前,尚无从Yaml转换为UI的方法。只需重新创建管道即可。如果使用git,则可以从存储库的根目录中删除yaml。
  3. 在“准备对SonarQube进行分析”任务的“高级”部分下,您可以添加排除项。有关其他排除格式的信息,请参见其他人提供的建议。

例:

# Additional properties that will be passed to the scanner, 
# Put one key=value per line, example:
# sonar.exclusions=**/*.bin
sonar.exclusions=MyProjectName/MyWebContentFolder/**

注意:如果不确定路径,可以进入sonarqube,查看项目,查看全部或新的“代码气味”,并且所需的路径在每个问题组的上方列出。您可以获取文件的完整路径,也可以像以下示例一样使用Wilds:

  • MyProjectName / MyCodeFile.cs
  • MyProjectName / **

如果您没有添加“运行代码分析”任务,请执行此操作并将其放置在“构建解决方案** / *。sln”任务之后的某个位置。

保存并排队,然后检查您的声纳服务器,以查看排除是否有效。


0

将此行添加到您的sonar-project.properties文件中

例如:sonar.exclusions = src / *。java如果要排除文件夹,并且在该文件夹内有一个文件,则必须小心,首先必须排除这些文件或逐个添加文件,例如,假设有一个如下所示的文件夹:

src/app.java src/controllers/home.java src/services/test.java

您必须这样做: sonar.exclusions=src/app.java,src/controllers/*.java,src/services/*.java

对我有用


0

您可以使用 build.gradle

sonarqube {
properties {
    property "sonar.exclusions", "**/src/java/test/**/*.java"
  }
}

如果要排除更多文件/目录,则:

sonarqube {
properties {
    property "sonar.exclusions", "**/src/java/test/**/*.java, **/src/java/main/**/*.java"
  }
}

-1

这对我有用:

sonar.exclusions=src/**/wwwroot/**/*.js,src/**/wwwroot/**/*.css

它排除了显示为“ src”文件夹(项目根目录)的子目录之一的文件夹“ wwwroot”的任何子目录下的任何.js和.css文件。


这似乎与其他答案没有太大的不同。就像许多其他答案一样,它使用双星通配符。与要排除的问题不符。
Stephen Ostermiller,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.