Árbol de páginas

 

Ya soy un experto y estoy aquí para ayudar: ¡contesta preguntas pendientes y gana puntos!

Saltar al final de los metadatos
Ir al inicio de los metadatos

Tabla de Contenidos

Si los resultados de SonarQube no son relevantes, los desarrolladores no lo utilizarán. Por eso, precisamente, la configuración de qué se debe analizar para cada proyecto es un paso muy importante. Haciendo esto permitimos que se elimine el ruido, como las evidencias y código duplicado marcado sobre el código auto-generado, o las evidencias que no son relevantes en cierto tipo de objetos.

SonarQube ofrece varias opciones para configurar exactamente lo que va a ser analizado, por lo que se puede:

  • Ignorar por completo algunos archivos o directorios
  • Excluir archivos/directorios de la detección de evidencias (reglas específicas o todas ellas) pero analizar todos los otros aspectos
  • Excluir archivos/directorios de la detección de código duplicado pero analizar todos los otros aspectos
  • Excluir archivos/directorios del cálculo de la cobertura de código pero analizar todos los otros aspectos

Ignorar archivos

Le recomendamos que excluya el código auto-generado, el código fuente de librerías, etc. Hay cuatro formas distintas para ajustar el análisis del código fuente que será relevante para el equipo de desarrollo. Además, se pueden combinar todos juntos para afinar el alcance.

Directorios de origen

Configure la propiedad sonar.sources para limitar el alcance del análisis a ciertos directorios.

Extensiones de ficheros

La mayoría de los plugins de lenguajes ofrecen una manera de restringir el alcance del análisis a los archivos que coinciden con un conjunto de extensiones. Vaya a Configuración > Configuración general > PluginLenguaje y configure la propiedad de las extensiones:

Excluir ficheros

Es posible excluir ficheros específicos del análisis. A nivel de proyecto, vaya a Configuración > Configuración del proyecto > Exclusiones > Ficheros y configurar:

  • La propiedad sonar.exclusions para excluir ficheros de código fuente
  • La propiedad sonar.test.exclusions para excluir ficheros de pruebas unitarias

Las exclusiones globales se aplicarán a todos los proyectos también se pueden configurar. Vaya a Configuración > Configuración General > Exclusiones > Ficheros y establezca las propiedades sonar.global.exclusions y sonar.global.test.exclusions.

Desde la versión 3.5, se puede trabajar al revés, es decir, configurando inclusiones. Vaya a Configuración > Configuración General > Exclusiones > Ficheros y establezca las propiedades sonar.test.inclusions sonar.test.inclusions con la lista de ficheros que se deben analizar. Si establece una inclusión, entonces sólo los archivos o módulos listados serán incluidos en el análisis.

Vea la sección Patrones para más detalles de la sintaxis

Ignorar Evidencias

Se puede hacer que SonarQube ignore evidencias sobre ciertos componentes y de ciertas reglas. Vaya Configuración > Configuración general > Exclusiones > Evidencias.

Tenga en cuenta que las propiedades siguientes sólo se pueden configurar a través de la interfaz web, ya que son propiedades con múltiples valores.

Ignorar Evidencias en ficheros

Se pueden ignorar todas las evidencias que contienen un bloque de código que coincida con una expresión regular dada.

Ejemplo: Ignorar todas las evidencias en los ficheros que contienen @javax.annotation.Generated

Ignorar Evidencias en Bloques

Se pueden ignorar las evidencias de todos los bloques de código específicos, sin dejar de analizar y marcar el resto de evidencias del fichero.

Nota: Si la primera expresión regular se encuentra, pero no se encuentra la segunda, se considerará el final del fichero como el final del bloque.

Ejemplo: Ignorar todas las evidencias incluidas entre GEN-FIRST y GEN-LAST y entre BEGIN-GENERATED y END-GENERATED

Ignorar Evidencias sobre Múltiples Criterios

Se pueden ignorar evidencias sobre ciertos componentes y ciertas reglas. Para listar una regla específica, se tiene que utilizar el ID completo de la regla que se muestra en el detalle de la regla:

Ejemplos:

  • Quiero ignorar todas las evidencias en todos los ficheros => *;**/*
  • Quiero ignorar todas las evidencias en lo programa COBOL bank/ZTR00021.cbl => *;bank/ZTR00021.cbl
  • Quiero ignorar todas las evidencias de las clases localizadas directamente en el paquete com.foo, pero no en sus subpaquetes => *;com/foo/*
  • Quiero ignorar todas las evidencias de la regla "cpp:Union" en los ficheros del directorio object y sus subdirectorios => cpp:Union;object/**/*
  • Quiero ignorar todas las evidencias de CppCheck de la regla "operatorEq" sobre ficheros en el directorio object y sus subdirectorios => cppCheck:opeatorEq;object/**/*

 

Restringir el Alcance de las Reglas

Se puede restringir la aplicación de una regla a solo ciertos componentes, ignorando los otros.

Ejemplo:

  • Solo quiero comprobar la regla Magic Numbers en objetos Bean y no en cualquier otro => checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.MagicNumberCheck;**/*Bean.java
  • Solo quiero comprobar la regla Prevent GO TO statement from transferring control outside current module en programas COBOL situados en los directorios bank/creditcard y bank/bankcard => esto requiere definir dos criterios
    • cobol:COBOL.GotoTransferControlOutsideCurrentModuleCheck;bank/creditcard/**/*
    • cobol:COBOL.GotoTransferControlOutsideCurrentModuleCheck;bank/bankcard/**/*


Ignorar Duplicados

Se pueden ignorar algunos ficheros de ser comprobados por el procedimiento de código duplicado.

Para ello, vaya a Configuración > Configuración general > Exclusiones > Duplicados y configure la propiedad Duplication Exclusions. Vea la sección Patrones para más detalles sobre la sintaxis.

Ignorar Cobertura de Código

Se pueden ignorar algunos ficheros para que no se tengan en cuenta en el cálculo de la cobertura de código por las pruebas unitarias.

Para ello, vaya a Configuración > Configuración general > Exclusiones > Cobertura de código y configure la propiedad Exclusiones de Cobertura. Vea la sección Patrones para más detalles sobre la sintaxis.

Patrones

Las rutas son relativas al directorio base del proyecto.

Se pueden utilizar los siguientes comodines:

ComodínCorrespondencia
*cero o más caracteres
**cero o más directorios
?un solo carácter

Las rutas relativas se basan en el nombre completo del componente (como el que se muestra en el cuadro rojo a continuación):

Para versiones anteriores a 4.2

Tenga en cuenta que solo es para Java, el nombre completo no es exactamente el que se muetra. Usted tiene que reemplazar el separador del paquete "." con "/" y añadir la extensión ".java"

Ejemplos
# Excluir todas las clases que finalizan con "Bean"
# Encajan org/sonar.api/MyBean.java, org/sonar/util/MyOtherBean.java, org/sonar/util/MyDTO.java, etc.
sonar.exclusions=**/*Bean.java,**/*DTO.java
 
# Excluir todas las clases en el directorio "src/main/java/org/sonar"
# Encajan src/main/java/org/sonar/MyClass.java, src/main/java/org/sonar/MyOtherClass.java
# Pero no encajan src/main/java/org/sonar/util/MyClassUtil.java
sonar.exclusions=src/main/java/org/sonar/*
 
# Excluir todos los programas COBOL en el directorio "bank" y sus subdirectorios
# Encajan bank/ZTR00021.cbl, bank/data/CBR00354.cbl, bank/data/REM012345.cob
sonar.exclusions=bank/**/*
 
# Excluir todos los programas COBOL en el directorio "bank" y sus subdirectorios cuya extensión es .cbl
# Matches bank/ZTR00021.cbl, bank/data/CBR00354.cbl
sonar.exclusions=bank/**/*.cbl

 

 

 

 

 

 

  • Sin etiquetas