SonarQube排除目录

use*_*350 110 sonar-runner sonarqube

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

sonar.sources=src/java
sonar.exclusions=src/java/test/****/*.java
Run Code Online (Sandbox Code Playgroud)

我的目录结构是:

src/java/dig
src/java/test/dig
Run Code Online (Sandbox Code Playgroud)

当我运行声纳 - 跑步者时,我得到以下信息:

 INFO  - Excluded sources:
 INFO  -   src/java/test/**/*.java
 INFO  - Excluded tests:
 INFO  -   **/package-info.java
Run Code Online (Sandbox Code Playgroud)

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

我只需要告诉Sonar不要分析测试目录及其中的任何包.

小智 103

尝试这样的事情:

sonar.exclusions=src/java/test/**
Run Code Online (Sandbox Code Playgroud)

  • 确保将Ant fileglob模式用于通配符.这是一个很好的解释:http://stackoverflow.com/a/86915/748524 (4认同)
  • 看到此内容的任何人,请确保您具有`src / test / java`而不是`src / java / test /`。 (2认同)

Dam*_*ran 62

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

sonar.exclusions=system/**, test/**, application/third_party/**, application/logs/**
Run Code Online (Sandbox Code Playgroud)

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

Excluded sources: 
  system/**
  test/**
  application/third_party/**
  application/logs/**
Run Code Online (Sandbox Code Playgroud)

  • 我也得到了被排除的消息,但仍然分析了文件. (13认同)

小智 10

这将适合您的情况:

sonar.exclusions=**/src/java/dig/ ** , **/src/java/test/dig/ **
Run Code Online (Sandbox Code Playgroud)


小智 8

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

sonar.exclusions=folderName/**/*
Run Code Online (Sandbox Code Playgroud)

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

所有需要排除的文件夹都附在此处.

  • 该答案与“sonar.exclusions=folderName”和“sonar.exclusions=folderName/**”有什么区别?谢谢 (3认同)

Mav*_*ick 7

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


Aki*_*ile 7

另一个配置选项是添加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>
Run Code Online (Sandbox Code Playgroud)


Gra*_*arf 7

如果您是 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/**
Run Code Online (Sandbox Code Playgroud)

注意:如果您不确定路径,您可以进入 sonarqube,查看您的项目,查看所有或新的“Code Smells”,您需要的路径列在每个问题组的上方。您可以获取文件的完整路径或使用通配符,如下例所示:

  • 我的项目名称/MyCodeFile.cs
  • 我的项目名称/**

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

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


小智 4

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

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

  • 警告 - 自版本 4.3 以来,'sonar.skippedModules' 属性已被弃用,不应再使用。 (20认同)