tenía este mismo problema con la configuración de supresión Checkstyle cuando iba de ida y vuelta entre Linux y Windows. He aquí cómo lo resolví en mi sistema de construcción basado en Ant:
Básicamente, me inyecto el valor directorio adecuado, específico de la plataforma en el fichero de configuración principal Checkstyle mediante la configuración de un archivo de propiedades Checkstyle con un script de construcción Ant.
Mi fichero de configuración Checkstyle principal tiene una declaración SuppressionFilter
módulo como se muestra a continuación. El valor de la propiedad checkstyle-suppressions-file
proviene de unas propiedades Checkstyle del archivo:
<module name="SuppressionFilter">
<property name="file" value="${checkstyle-suppressions-file}"/>
</module>
El archivo de propiedades Checkstyle no es estática, que es generado por un script de construcción Ant partir de un archivo de propiedades de plantilla llama template-checkstyle.properties
. Esto es lo que la plantilla se parece a la propiedad del archivo supresiones:
[email protected][email protected]/checkstyle_suppressions.xml
Mis Ant script copia acumulación este archivo a un archivo llamado checkstyle.properties
. La copia tiene el testigo especial reemplazado con el valor correcto del directorio en el que se encuentra el archivo supresiones:
<copy file="${scm.dir}/template-checkstyle.properties" tofile="${scm.dir}/checkstyle.properties">
<filterset>
<filter token="SCM_DIR" value="${scm.dir.unix}"/>
</filterset>
</copy>
Ahora, ¿de dónde viene el valor de scm.dir.unix
viene? Bueno, es derivado de una propiedad de mi compilación, sigue leyendo. Deberá especificar dicho valor con los valores de directorio que mencionó.
Tenga en cuenta que hay una cuestión poco no evidentes respecto a la manera en la que se especifica este directorio. Yo digo que el valor scm.dir.unix
se deriva de una característica de la estructura, porque he observado que el archivo de configuración principal Checkstyle no puede contener barras invertidas, es decir, caracteres separador de ruta de Windows, en el valor de la propiedad file
del módulo SuppressionFilter
. Por ejemplo, especificar algo como C:\foo\bar\baz
conduce a un mensaje de error diciendo que Checkstyle C:foobarbaz
no se puede encontrar.Yo trabajo alrededor de esto "convertir" a la característica de la estructura scm.dir
directorio para un formato de "Unix" con pathconvert
tarea de Ant:
<pathconvert targetos="unix" property="scm.dir.unix">
<path location="${scm.dir}"/>
</pathconvert>
Entonces me llaman la tarea Ant checkstyle
así:
<checkstyle config="${scm.dir}/checkstyle_checks.xml"
properties="${scm.dir}/checkstyle.properties">
<!-- details elided -->
</checkstyle>
La llamada a la tarea checkstyle
se inyectan los pares clave/valor contenidos en el archivo checkstyle.properties
en la configuración principal de Checkstyle.
Si se quiere, se puede ver los guiones completos here
Esperanza esto ayuda
Gracias por los consejos, mi construcción de hormigas ahora está bien, ignorando los números mágicos en las clases de prueba (¡es un comienzo!). Tuve que hacer un cambio en el código proporcionado (para referencia de cualquier otra persona que pueda llegar a esto más adelante), a la tarea le falta un "filtrado = verdadero"; al menos cuando se ejecuta con mi versión de hormiga. –