2012-09-06 21 views
5

Estoy usando Jenkins (Hudson) CI, y todas las noches analizo el código usando una cantidad de herramientas para el informe, incluyendo informes de Codesniffer para Checkstyle. No quiero ignorar el directorio ./framework/*, pero insiste en incluirlo, independientemente de mi esfuerzo con el parámetro --ignore.¿Por qué CodeSniffer no incluye las carpetas --no especificado?

El informe se crea y analiza correctamente, pero en realidad no nos sirve de nada debido a la cantidad extrema de violaciones de los estándares de Pera Codificación en el marco.

CodeSniffer se llama de mi generación Ant-script como el siguiente:

<target name="phpcs-ci" description="Find coding standard violations using PHP_CodeSniffer creating a log file for the continuous integration server"> 
<exec executable="phpcs" dir="${basedir}" output="${basedir}/build/logs/checkstyle.xml" failonerror="off"> 
    <arg line="--report=checkstyle --standard=${basedir}/build/phpcs.xml --extensions=php --ignore=*/framework/* ${basedir}" /> 
</exec> 
</target> 

he intentado --ignore=framework, --ignore=framework/, y el que está en la línea de arriba, todos de los ejemplos que he encontrado en la web.

También intenté usar una línea diferente para cada argumento (using < arg value"..." />), pero fue en vano.

¿Alguna idea? muy apreciada :)

Editar: El argumento --ignore es ahora:

--ignore=${basedir}/framework/ 

... Y, sin embargo, se está incluyendo la carpeta marco. ¿Hay alguien por ahí que tenga una configuración PhpCodeSniffer en funcionamiento, con un argumento --ignore, funcionando?

dedos de la travesía aquí

Respuesta

3

Usando * no funcionará ya que la cáscara se expandirá ellos.

Dependiendo de su versión php_codesniffer, debe pasar la ruta completa al directorio para ignorar (versiones anteriores), o la ruta relativa desde el directorio de compilación para hacer que el trabajo ignore (desde php_codesniffer versión 1.3.6):

Extracto del Changelog:

    patrones
  • ignorar ahora comprobar la ruta relativa de un archivo basado en el directorio que se comprueba
+0

Gracias, voy a tratar de inmediato – Julian

+0

Nogo:/arg La línea actual es: Julian

6

Estaba teniendo el mismo problema en Jenkins y la respuesta anterior me ayudó en cierta medida. Esto es lo que tengo ahora (y funciona en mi sistema).

Si el sistema es el siguiente:

/ 
/build.xml 
/foo 
/foo/bar 

Esto es lo que tengo en mi build.xml

<target name="phpcs" description="Find coding standard violations using PHP_CodeSniffer and print human readable output. Intended for usage on the command line before committing."> 
<exec executable="phpcs"> 
    <arg value="--standard=${basedir}/build/phpcs.xml" /> 
    <arg value="--ignore=foo/bar" /> 
    <arg path="${basedir}" /> 
</exec> 

El truco no era utilizar $ {} y basedir perder la barra final del directorio.

Espero que ayude

1

Gracias por las entradas.Terminé resolviéndolo así

<target name="phpcs-ci" description="Find coding standard violations using PHP_CodeSniffer creating a log file for the continuous integration server"> 
    <exec executable="phpcs" failonerror="off"> 
     <arg line="-v --report-checkstyle=${basedir}/build/logs/checkstyle.xml --standard=${basedir}/build/phpcs.xml --extensions=php --ignore=extensions,library ./protected" /> 
    </exec> 
    </target> 

¡Trabajos!

4

También es posible colocar estas exclusiones en build/phpcs.xml. Trabajando bien aquí en Jenkins.

Ejemplos para excluir todos los archivos en js/facebook dir, coincidencia de comodines para js/jquery * y un nombre de archivo especificado.

<exclude-pattern>lib/facebook</exclude-pattern> 
<exclude-pattern>js/jquery*</exclude-pattern> 
<exclude-pattern>lib/Postmark.php</exclude-pattern> 
Cuestiones relacionadas