user1982350
user1982350

Reputation: 2661

SonarQube Exclude a directory

I am trying to exclude a directory from being analyzed by Sonar. I have the following properties defined in my sonar-project.properties file:

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

The directory structure I have is:

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

When I run the sonar-runner I get the following info:

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

But when I check the result of the analysis all the packages inside the test directory are still there.

I just need to tell Sonar to not analyze the test directory and any packages inside it.

Upvotes: 251

Views: 494557

Answers (16)

Devesh
Devesh

Reputation: 4550

The way it works in the Sonarqube now

-Dsonar.exclusions=Foodzy.Core/wwwroot/font-awesome/**

or In Jenkins

/d:sonar.exclusions=Foodzy.Core/wwwroot/font-awesome/**

Upvotes: 1

Qamar
Qamar

Reputation: 5135

You can skip library like this

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

Upvotes: 1

ddagsan
ddagsan

Reputation: 1826

I typed case sensitive and used "" and it worked. Analyze time decreased to 3 minutes from 10.

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

Upvotes: 4

Damodaran
Damodaran

Reputation: 11047

I'm able to exclude multiple directories using the below config (comma separated folder paths):

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

And while running the sonar runner I got the following in the log:

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

Upvotes: 144

Vince D
Vince D

Reputation: 137

You can do the same with build.gradle

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

And if you want to exclude more files/directories then:

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

Upvotes: 4

This worked for me:

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

It excludes any .js and .css files under any of the sub directories of a folder "wwwroot" appearing as one of the sub directories of the "src" folder (project root).

Upvotes: -1

GrayDwarf
GrayDwarf

Reputation: 2737

If you're an Azure DevOps user looking for both where and how to exclude files and folders, here ya go:

  1. Edit your pipeline
  2. Make sure you have the "Prepare analysis on SonarQube" task added. You'll need to look elsewhere if you need help configuring this. Suggestion: Use the UI pipeline editor vs the yaml editor if you are missing the manage link. At present, there is no way to convert to UI from yaml. Just recreate the pipeline. If using git, you can delete the yaml from the root of your repo.
  3. Under the 'Advanced' section of the "Prepare analysis on SonarQube" task, you can add exclusions. See advice given by others for specific exclusion formats.

Example:

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

Note: If you're not sure on the path, you can go into sonarqube, view your project, look at all or new 'Code Smells' and the path you need is listed above each grouping of issues. You can grab the full path to a file or use wilds like these examples:

  • MyProjectName/MyCodeFile.cs
  • MyProjectName/**

If you don't have the 'Run Code Analysis' task added, do that and place it somewhere after the 'Build solution **/*.sln' task.

Save and Queue and then check out your sonarqube server to see if the exclusions worked.

Upvotes: 8

mohammad pakivand
mohammad pakivand

Reputation: 391

add this line to your sonar-project.properties file

ex: sonar.exclusions=src/*.java be careful if you want to exclude a folder and inside the folder there is a file you must first exclude the files or add the files one by one for example imagine there is a folder like below:

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

you have to do this: sonar.exclusions=src/app.java,src/controllers/*.java,src/services/*.java

It worked for me

Upvotes: 1

dasunse
dasunse

Reputation: 3079

Add comma separated folder paths sonar.exclusions=**/abc/**,**/def/**

This worked in an angular project

Upvotes: 3

Shradha Modi
Shradha Modi

Reputation: 271

If we want to skip the entire folder following can be used:

sonar.exclusions=folderName/**/*

And if we have only one particular file just give the complete path.

All the folder which needs to be exclude and be appended here.

Upvotes: 27

Michael Arul Raja
Michael Arul Raja

Reputation: 301

This will work for your case:

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

Upvotes: 28

user07
user07

Reputation: 415

Just to mention that once you excluded the files from Sonar, do the same for Jacoco plugin:

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

Upvotes: 1

Juan Hernandez
Juan Hernandez

Reputation: 2121

Try something like this:

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

Upvotes: 211

Akin Okegbile
Akin Okegbile

Reputation: 1176

Another configuration option is adding a maven properties sonar.exclusions. Below is a sample pom file with exclusions of static jquery directory and static pdf viewer directory.

<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>

Upvotes: 20

Maverick
Maverick

Reputation: 238

Easiest way is to go to the server URL after starting the server(localhost:8080) then login as admin,Go to settings>Exclusions> Source File Exclusions- Add your packages here. Restart the server.

Upvotes: 6

Cypher
Cypher

Reputation: 242

what version of sonar are you using? There is one option called "sonar.skippedModules=yourmodulename".

This will skip the whole module. So be aware of it.

Upvotes: 4

Related Questions