SonarQube Excluir un directorio


132

Estoy tratando de excluir un directorio de ser analizado por Sonar. Tengo las siguientes propiedades definidas en mi sonar-project.propertiesarchivo:

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

La estructura de directorios que tengo es:

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

Cuando ejecuto el sonar-runner obtengo la siguiente información:

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

Pero cuando verifico el resultado del análisis, todos los paquetes dentro del directorio de prueba todavía están allí.

Solo necesito decirle a Sonar que no analice el directorio de prueba y los paquetes que contiene.


3
Encontré la solución: sonar.exclusions = test / ** / *. Java
user1982350

Pero si desea evitar el análisis de prueba, puede intentar usar, por ejemplo, mvn clean package -DskipTests
Eddú Meléndez

Respuestas:


120

Intenta algo como esto:

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

44
Asegúrese de utilizar el patrón Ant fileglob para comodines. Aquí hay una buena explicación: stackoverflow.com/a/86915/748524
Stephan

Aquí está la definición de opciones de línea de comando docs.sonarqube.org/display/SONAR/…
N0dGrand87

44
Cualquiera que vea esto, asegúrese de tenerlo en src/test/javalugar de src/java/test/.
Faraz

Cómo excluir métodos en c #
nature vetri

Es importante tener en cuenta que esto no se trata como una expresión regular y se aplica a todo su proyecto sonar.exclusions=node_modules/**NO excluirá las carpetas node_modules anidadas que deberá hacer sonar.exclusions=node_modules/**, /some/path/to/nested/node_modules/**para excluirlas explícitamente
Christian Bartram

68

Puedo excluir varios directorios usando la siguiente configuración (rutas de carpetas separadas por comas):

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

Y mientras ejecutaba el sonar runner, recibí lo siguiente en el registro:

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

18
También recibo el mensaje excluido, pero los archivos aún se analizan.
Sebas

en los parámetros de Teamcity utilicé su sugerencia, pero insertando -D antes (-Dsonar.exclu ...). Trabaja aqui :-)
Maciel Bombonato

¿Cómo excluir todos los archivos * .html del análisis aquí? Intenté esto, sonar.exclusions=**/bin/**,*.htmlpero todavía toma archivos html también en el escaneo. Los archivos HTML son todas subcarpetas en varios lugares y agregar el nivel de subcarpeta aquí con el mapa de ruta real será más trabajo. ¿Hay alguna manera de que podamos excluir todos los * .specific_file_type de ser escaneados?
Elamurugan


13

Si queremos omitir la carpeta completa se puede usar lo siguiente:

sonar.exclusions=folderName/**/*

Y si solo tenemos un archivo en particular, simplemente proporcione la ruta completa.

Toda la carpeta que debe excluirse y adjuntarse aquí.


2
¿Cuál es la diferencia entre esa respuesta y sonar.exclusions=folderNamey sonar.exclusions=folderName/**? Gracias
payne

* - ¿Cero cero o más caracteres ** - Cero cero o más directorios? - Empareja un solo personaje
Keerthi Bandara

12

Otra opción de configuración es agregar propiedades maven sonar.exclusions. A continuación se muestra un archivo pom de muestra con exclusiones del directorio jquery estático y el directorio del visor pdf estático.

<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

La forma más fácil es ir a la URL del servidor después de iniciar el servidor (localhost: 8080) y luego iniciar sesión como administrador, vaya a configuración> Exclusiones> Exclusiones de archivos de origen: agregue sus paquetes aquí. Reinicia el servidor.


2

¿Qué versión de sonda estás usando? Hay una opción llamada " sonar.skippedModules = yourmodulename ".

Esto saltará todo el módulo. Así que tenlo en cuenta.


12
ADVERTENCIA: la propiedad 'sonar.skippedModules' está en desuso desde la versión 4.3 y ya no se debe usar.
Zheng Kai

1

Solo para mencionar que una vez que haya excluido los archivos de Sonar, haga lo mismo para el complemento Jacoco:

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

1

Agregar rutas de carpetas separadas por comas sonar.exclusions=**/abc/**,**/def/**

Esto funcionó en un proyecto angular


1

Si es un usuario de Azure DevOps que busca dónde y cómo excluir archivos y carpetas, aquí tiene:

  1. Edite su tubería
  2. Asegúrese de tener la tarea "Preparar análisis en SonarQube" agregada. Tendrá que buscar en otro lado si necesita ayuda para configurar esto. Sugerencia: utilice el editor de canalización de la interfaz de usuario frente al editor yaml si le falta el enlace de administración. En la actualidad, no hay forma de convertir a UI desde yaml. Solo recrea la tubería. Si usa git, puede eliminar el yaml de la raíz de su repositorio.
  3. En la sección "Avanzado" de la tarea "Preparar análisis en SonarQube", puede agregar exclusiones. Vea los consejos dados por otros para formatos de exclusión específicos.

Ejemplo:

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

Nota: Si no está seguro sobre el camino, puede ir a sonarqube, ver su proyecto, mirar todos o nuevos 'olores de código' y el camino que necesita se enumera arriba de cada grupo de problemas. Puede tomar la ruta completa a un archivo o usar comodines como estos ejemplos:

  • MyProjectName / MyCodeFile.cs
  • MyProjectName / **

Si no tiene la tarea 'Ejecutar análisis de código' agregada, hágalo y colóquela en algún lugar después de la tarea 'Construir solución ** / *. Sln'.

Save and Queue y luego revise su servidor sonarqube para ver si las exclusiones funcionaron.


0

agregue esta línea a su archivo sonar-project.properties

por ejemplo: sonar.exclusions = src / *. java tenga cuidado si desea excluir una carpeta y dentro de la carpeta hay un archivo, primero debe excluir los archivos o agregar los archivos uno por uno, por ejemplo, imagine que hay una carpeta como la siguiente :

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

Tienes que hacer esto: sonar.exclusions=src/app.java,src/controllers/*.java,src/services/*.java

Funciono para mi


0

Puedes hacer lo mismo con build.gradle

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

Y si desea excluir más archivos / directorios, entonces:

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

-1

Esto funcionó para mí:

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

Excluye cualquier archivo .js y .css en cualquiera de los subdirectorios de una carpeta "wwwroot" que aparece como uno de los subdirectorios de la carpeta "src" (raíz del proyecto).


Esto no parece ser sustancialmente diferente de otras respuestas. Utiliza comodines de doble estrella al igual que muchas otras respuestas. No coincide con lo que la pregunta intentaba excluir.
Stephen Ostermiller
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.