Consulte el uso de supressionCommentFilter en http://checkstyle.sourceforge.net/config_filters.html#SuppressionCommentFilter . Deberá agregar el módulo a su checkstyle.xml
<module name="SuppressionCommentFilter"/>
Y es configurable. Por lo tanto, puede agregar comentarios a su código para desactivar el estilo de verificación (en varios niveles) y luego volver a activarlo mediante el uso de comentarios en su código. P.ej
//CHECKSTYLE:OFF
public void someMethod(String arg1, String arg2, String arg3, String arg4) {
//CHECKSTYLE:ON
O incluso mejor, use esta versión más ajustada:
<module name="SuppressionCommentFilter">
<property name="offCommentFormat" value="CHECKSTYLE.OFF\: ([\w\|]+)"/>
<property name="onCommentFormat" value="CHECKSTYLE.ON\: ([\w\|]+)"/>
<property name="checkFormat" value="$1"/>
</module>
que le permite desactivar comprobaciones específicas para líneas de código específicas:
//CHECKSTYLE.OFF: IllegalCatch - Much more readable than catching 7 exceptions
catch (Exception e)
//CHECKSTYLE.ON: IllegalCatch
* Nota: también deberá agregar FileContentsHolder
:
<module name="FileContentsHolder"/>
Ver también
<module name="SuppressionFilter">
<property name="file" value="docs/suppressions.xml"/>
</module>
debajo de la SuppressionFilter
sección en esa misma página, que le permite desactivar las comprobaciones individuales para recursos de patrones coincidentes.
Entonces, si tiene en su checkstyle.xml:
<module name="ParameterNumber">
<property name="id" value="maxParameterNumber"/>
<property name="max" value="3"/>
<property name="tokens" value="METHOD_DEF"/>
</module>
Puede desactivarlo en su archivo xml de supresión con:
<suppress id="maxParameterNumber" files="YourCode.java"/>
Otro método, ahora disponible en Checkstyle 5.7 es suprimir violaciones a través de la @SuppressWarnings
anotación java. Para hacer esto, necesitará agregar dos nuevos módulos ( SuppressWarningsFilter
y SuppressWarningsHolder
) en su archivo de configuración:
<module name="Checker">
...
<module name="SuppressWarningsFilter" />
<module name="TreeWalker">
...
<module name="SuppressWarningsHolder" />
</module>
</module>
Luego, dentro de su código puede hacer lo siguiente:
@SuppressWarnings("checkstyle:methodlength")
public void someLongMethod() throws Exception {
o, para múltiples supresiones:
@SuppressWarnings({"checkstyle:executablestatementcount", "checkstyle:methodlength"})
public void someLongMethod() throws Exception {
NB: El checkstyle:
prefijo " " es opcional (pero recomendado). Según los documentos, el nombre del parámetro debe estar en minúsculas, pero la práctica indica que cualquier caso funciona.
//CHECKSTYLE.OFF:
y luego olvida volver a encenderlo, ¿permanecerá marcado solo en el archivo que contiene//CHECKSTYLE.OFF:
o también en todos los archivos procesados posteriormente?@SuppressWarnings("checkstyle:VariableDeclarationUsageDistance")
funcionó tan bien para mí como el equivalente en minúsculas.TreeWalker
y elFileContentHolder
no es necesario (disponible) nunca más.Si prefiere usar anotaciones para silenciar selectivamente las reglas, ahora es posible usar la
@SuppressWarnings
anotación, comenzando con Checkstyle 5.7 (y compatible con Checkstyle Maven Plugin 2.12+).Primero, en su
checkstyle.xml
, agregue elSuppressWarningsHolder
módulo aTreeWalker
:A continuación, habilite
SuppressWarningsFilter
there (como un hermano paraTreeWalker
):Ahora puede anotar, por ejemplo, el método que desea excluir de una determinada regla de Checkstyle:
El
checkstyle:
prefijo en el argumento@SuppressWarnings
es opcional, pero me gusta como recordatorio de dónde vino esta advertencia. El nombre de la regla debe estar en minúscula.Por último, si está utilizando Eclipse, se quejará de que el argumento es desconocido para él:
Puede deshabilitar esta advertencia de Eclipse en las preferencias si lo desea:
fuente
Lo que también funciona bien es SuppressWithNearbyCommentFilter, que utiliza comentarios individuales para suprimir eventos de auditoría.
Por ejemplo
Para configurar un filtro para que CHECKSTYLE IGNORE verifique para las SIGUIENTES líneas var evite activar cualquier auditoría para la verificación dada para la línea actual y las siguientes líneas var (para un total de líneas var + 1):
http://checkstyle.sourceforge.net/config.html
fuente
CHECKSTYLE IGNORE (\w+) FOR NEXT (\d+) LINES?
que hará que el comando ignorar sea más legible. (Podrá utilizar "CHECKSTYLE IGNORE check para NEXT 1 LINE" y "CHECKSTYLE IGNORE check para NEXT 3 LINES").CHECKSTYLE IGNORE (\w+) FOR NEXT (\d+) LINE
también funciona para mí (coincide con ambosline
ylines
).A cada respuesta que se refiere a SuppressWarningsFilter le falta un detalle importante. Solo puede usar la identificación en minúsculas si está definida como tal en su checkstyle-config.xml. Si no, debe usar el nombre del módulo original.
Por ejemplo, si en mi checkstyle-config.xml tengo:
No puedo usar:
Sin embargo, debo usar:
Para que la primera sintaxis funcione, el checkstyle-config.xml debería tener:
Esto es lo que funcionó para mí, al menos en la versión CheckStyle 6.17.
fuente
Tuve dificultades con las respuestas anteriores, posiblemente porque configuré las advertencias checkStyle como errores. Lo que funcionó fue SuppressionFilter: http://checkstyle.sourceforge.net/config_filters.html#SuppressionFilter
El inconveniente de esto es que el rango de línea se almacena en un archivo suppresssions.xml separado, por lo que un desarrollador desconocido puede no hacer la conexión de inmediato.
fuente
Para configurar un filtro para suprimir los eventos de auditoría entre un comentario que contiene la línea CÓDIGO INICIADO GENERADO y un comentario que contiene la línea CÓDIGO FINALIZADO:
Ver más
fuente
Puede probar https://checkstyle.sourceforge.io/config_filters.html#SuppressionXpathFilter
Puedes configurarlo como:
Genere supresiones Xpath usando la CLI con la opción -g y especifique la salida usando el interruptor -o.
https://checkstyle.sourceforge.io/cmdline.html#Command_line_usage
Aquí hay un fragmento de hormiga que lo ayudará a configurar su generación automática de supresiones Checkstyle:
Suppressions-xpath.xml se especifica como la fuente de supresiones Xpath en la configuración de las reglas de Checkstyle. En el fragmento anterior, estoy cargando la ruta de clase Checkstyle desde un archivo cs.cp en una propiedad. Puede elegir especificar el classpath directamente.
O puede usar groovy dentro de Maven (o Ant) para hacer lo mismo:
El único inconveniente con el uso de supresiones Xpath --- además de las comprobaciones que no admite --- es si tiene un código como el siguiente:
Checkstyle no ingiere la supresión de Xpath generada en este caso y el corrector falla con una excepción:
Se recomienda generar supresiones Xpath cuando haya solucionado todas las demás violaciones y desee suprimir el resto. No le permitirá seleccionar instancias específicas en el código para suprimir. Sin embargo, puede elegir y eliminar supresiones del archivo generado para hacer precisamente eso.
SuppressionXpathSingleFilter es más adecuado para identificar y suprimir una regla específica, archivo o mensaje de error. Puede configurar múltiples filtros identificando cada uno por el atributo id.
https://checkstyle.sourceforge.io/config_filters.html#SuppressionXpathSingleFilter
fuente