排除一个目录

我正在尝试排除一个目录从声纳分析。我在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

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

我只需要告诉声纳不要分析测试目录和它里面的任何包。

328512 次浏览

你用的是什么版本的声纳? 有一个选项叫做"sonar.skippedModules = yourmodulename".

这将跳过整个模块。所以要注意这一点。

最简单的方法是启动服务器(localhost:8080)后进入服务器URL,然后以管理员身份登录,进入设置>排除>源文件排除-在这里添加您的包。

.重启服务器

试试这样做:

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

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

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

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

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

另一个配置选项是添加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>

如果我们想跳过整个文件夹,可以使用以下方法:

sonar.exclusions=folderName/**/*

如果我们只有一个特定的文件,只要给出完整的路径。

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

这将适用于您的情况:

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

只是提一下,一旦你从Sonar中排除了文件,对Jacoco插件做同样的事情:

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

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

这在一个angular项目中是有效的

将这一行添加到声纳项目中。属性文件

< p >例:sonar.exclusions = src / * . java 如果要排除一个文件夹,并且该文件夹中有一个文件,则必须先排除这些文件或逐个添加文件 例如,假设有一个文件夹如下所示:

< p > <代码> src / app.java src /控制器/ home.java src /服务/ test.java < /代码> < / p >

你必须这样做: sonar.exclusions=src/app.java,src/controllers/*.java,src/services/*.java < / p >

这对我很有效

如果你是一个Azure DevOps用户,正在寻找在哪里以及如何排除文件和文件夹,这里你可以去:

  1. 编辑管道
  2. 确保你添加了“SonarQube上的准备分析”任务。如果您需要配置此功能的帮助,则需要查看其他地方。建议:如果缺少管理链接,请使用UI管道编辑器而不是yaml编辑器。目前还没有办法从yaml转换到UI。只需重新创建管道。如果使用git,可以从repo的根目录中删除yaml。
  3. 在“Prepare analysis on SonarQube”任务的“Advanced”部分,您可以添加排除。有关特定的排除格式,请参阅其他人给出的建议。

例子:

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

注意:如果你不确定路径,你可以进入sonarqube,查看你的项目,查看所有或新的“Code Smells”,你需要的路径在每个问题组上面列出。你可以获取一个文件的完整路径,或者像下面这样使用野字符:

  • MyProjectName / MyCodeFile.cs
  • MyProjectName / * *

如果你没有添加“运行代码分析”任务,那么就把它放在“构建解决方案**/*”之后的某个地方。sln的任务。

保存并排队,然后检查sonarqube服务器,看看排除是否有效。

这招对我很管用:

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

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

你可以用build.gradle做同样的事情

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

如果你想排除更多的文件/目录,那么:

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

我输入区分大小写,并使用""这招奏效了。分析时间从10分钟缩短为3分钟。

# Additional properties that will be passed to the scanner,
# Put one key=value per line, example:
sonar.exclusions=**\Scripts\**\*,**\Content\**\*

你可以像这样跳过图书馆

project(":libABC") {
apply plugin: 'org.sonarqube'
sonarqube {
skipProject = true
}
}