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.

usuario1982350
fuente
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/**
Juan hernandez
fuente
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/**
Damodaran
fuente
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í.

Shradha Modi
fuente
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>

Akin Okegbile
fuente
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.

Disidente
fuente
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.

Cifrar
fuente
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> 
usuario07
fuente
1

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

Esto funcionó en un proyecto angular

dasunse
fuente
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.

Enano gris
fuente
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

mohammad pakivand
fuente
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"
  }
}
Vince D
fuente
-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).

Dinesh Muciliath Jayadevan
fuente
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