Filtros de supresión en CheckStyle

RECU-0703 (Recurso Referencia)

Descripción

En el presente recurso se describe la forma de especificar filtros de supresión para la herramienta de chequeo estático de código CheckStyle.

Características

Un filtro de supresión nos permite especificar que clase o conjunto de clases será ignorada a la hora de realizar uno o varios de los tests que forman parte del chequeo de código estático. La especificación de los filtros de supresión se realiza en un fichero .xml que será incluido en los parámetros de declaración del plugin de CheckStyle en el fichero pom.xml de la aplicación. La inclusión de la referencia al fichero CheckStyle en la declaración del plugin se realiza de la forma siguiente:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.9.1</version>
<configuration>
<configLocation>checkstyle.xml</configLocation>
<suppressionsLocation>checkstyle-suppressions.xml</suppressionsLocation>
<suppressionsFileExpression>checkstyle.suppressions.file</suppressionsFileExpression>
</configuration>
</plugin>

El fichero de definición de filtros supresión es un fichero XML en el que se declara, por cada filtro, a qué checkeos se refiere y a qué ficheros afecta. El formato de declaración de cada filtro sería el siguiente:

<suppress checks="ExpresiónChequeos"
id=”IdChequeo”
files="ExpresiónFicheros"
lines="ExpresiónLíneas"
columns=”ExpresionColumnas”/>

El significado de cada uno de los parámetros es el siguiente:

  • ckecks: Expresión regular que indica qué chequeos serán afectados por el filtro. Es un parámetro opcional si se está empleando el parámetro “id”.
  • id: Identificador de un chequeo concreto relacionado con un evento de auditoria. Es un parámetro opcional si se está empleando el parámetro “checks”.
  • files: Expresión regular que indica qué ficheros serán los suprimidos por la acción del filtro.
  • lines: Parámetro opcional que indica que líneas, dentro de los ficheros indicados, serán las afectadas por el filtro. Puede indicarse el valor numérico de una línea concreta, un rango de líneas indicando el inicio y el fin separados por un guión (-) o una combinación de rangos y líneas concretas, separadas por comas.
  • columns: Parámetro opcional que indica que columnas, dentro de los ficheros indicados, serán las afectadas por el filtro. Puede indicarse el valor numérico de una columna concreta, un rango de columnas indicando el inicio y el fin separados por un guión (-) o una combinación de rangos y columnas concretas, separadas por comas.

Si se desea que un filtro afecte a todos los chequeos existentes, se puede usar la expresión regular “.” para el parámetro “checks”. Para incluir paquetes completos de ficheros mediante el parámetro “files”, es necesario tener en cuenta que para incluir el carácter de barra (/) este debe indicarse mediante caracteres de escape de la forma “[\\/]”. Así, para indicar que desea suprimirse el paquete “org/dominio/abc/xyz”, la expresión regular debería ser “org[\\/]dominio[\\/]abc[\\/]xyz”.

Un ejemplo de fichero de definición de filtros de supresión podría ser el siguiente:

<?xml version="1.0"?>
<!DOCTYPE suppressions PUBLIC
"-//Puppy Crawl//DTD Suppressions 1.0//EN"
"http://www.puppycrawl.com/dtds/suppressions_1_0.dtd">
<suppressions>
<suppress checks="JavadocStyleCheck"
files="GeneratedObject.java"
lines="50-9999"/>
<suppress checks="MagicNumberCheck"
files="LegacyDatasetConvertor.java"
lines="221,250-295"/>
</suppressions>

Contenidos relacionados

Pautas
Área: Verificación » Verificación de Entrega Software
Código Título Tipo Carácter
PAUT-0295 Filtros de supresión Pauta Directriz Recomendada