Configure Sonar to exclude files from Maven pom.xml
Sonar exclusions (like other sonar properties) have to be added to the <properties>
section of the POM file. Like so (example from excluding jOOQ autogenerated code from current project):
<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>
classes/packages mentioned in <sonar.exclusions>
excludes the given classes from all static analysis by Sonar, however <sonar.coverage.exclusions>
excludes given classes/packages only from coverage, and still be analyzed for other parameters.
<properties> <sonar.coverage.exclusions> **/domain/**/*, **/pojos/* </sonar.coverage.exclusions></properties>
Reference:
Source:
- https://docs.sonarqube.org/display/SONAR/Narrowing+the+Focus#NarrowingtheFocus-IgnoreCodeCoverage
- https://docs.sonarqube.org/display/SONAR/Analysis+Parameters#AnalysisParameters-Exclusions/Inclusions
- https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Maven#AnalyzingwithSonarQubeScannerforMaven-ExcludingamodulefromSonarQubeanalysis
When doing your Sonar exclusions as shown in the accepted answer, make sure you follow this pattern approach from the SonarQube documentation:
Relative paths are based on the fully qualified name of the component (like the one displayed below):
src/main/java/org/sonar/batch/phases/AbstractPhaseEvent.java
Examples:
# 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.javasrc/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.cobbank/**/*# Exclude all COBOL programs in the "bank" directory and its sub-directories whose extension is .cbl# Matches bank/ZTR00021.cbl, bank/data/CBR00354.cblbank/**/*.cbl
So if you want to exclude all classes ending with "Bean" and all classes in the "src/main/java/org/sonar" directory (but not in its sub-directories) add the following sonar.exclusions
property to the pom's properties
:
<properties> ... <sonar.exclusions>**/*Bean.java,src/main/java/org/sonar/*</sonar.exclusions></properties>