2010-05-25 24 views
6

estoy tratando de utilizar sloccount desde dentro hudson para recopilar estadísticas en nuestra base de código, sin embargo, de forma predeterminada sloccount recoge información sobre todas las archivos, incluso aquellos que están "ocultos" (. Ej .hideme). Esto significa que las estadísticas están sesgadas ya que incluyen números de archivos dentro de los directorios .svn.¿Cómo puedo ignorar los directorios .svn cuando uso sloccount?

¿Hay alguna manera en que pueda decir sloccount para ignorar correctamente cualquier archivo/directorio que comience con .?

Respuesta

4

Mi aproximación final era eliminar los directorios .svn de la salida sed:

sloccount --wide --details $DIR | sed "/\/\.svn\//d" > sloccount.sc 
+0

La solución de Dave no pierde tiempo en los archivos en los directorios '.svn' en primer lugar. –

6

Puede editar el código fuente de sloccount para no buscar en directorios que comiencen con un punto. De lo contrario, aquí hay algo que cociné en la línea de comando. Básicamente, puede especificar una lista de rutas de archivos en la línea de comando como argumentos para sloccount y analizará solo esos archivos. De modo que encontrará todos los archivos en PWD, excluyendo los archivos ocultos, y luego los pasará como argumento a sloccount.

find . \(! -regex '.*/\..*' \) -type f | \ 
tr '\n' ' ' | \ 
xargs sloccount 
+0

¿Seguro de que necesita el comando 'tr'? ¿Qué hay de pasar el indicador '-print0' a' encontrar' y el indicador '-0' a' xargs' para manejar rutas y nombres de archivo con espacios? –

+0

Utilice la compatibilidad con xargs de find-contained: '-exec sloccount {} \ +' –

1

estoy usando la siguiente tarea ant para construir un "sloccount.sc" sin archivos en" Svn ":

<target name="sloccount"> 
    <echo message="build sloccount report" /> 
    <exec executable="sloccount" failonerror="true"> 
     <arg value="--details" /> 
     <arg value="--wide" /> 
     <arg value="source_folder" /> 
     <redirector output="sloccount.sc"> 
      <outputfilterchain> 
       <linecontains negate="true"> 
        <contains value=".svn" /> 
       </linecontains> 
      </outputfilterchain> 
     </redirector> 
    </exec> 
</target> 

Basta con sustituir 'source_folder' por el nombre de la carpeta de origen que desea escanear y decirle a Jenkins para construir hormiga objetivo 'sloccount'.

Tenga en cuenta que esto requiere la hormiga 1.7.1 o posterior.

4

Utilice esta:

find . -path '*/.*' -prune -o -type f -exec sloccount {} \+ 

-exec evita los cortes xargs visto en algunas de las otras respuestas. Este es el soporte de xargs de find-included. No es necesario ejecutar regexps, globbing es suficiente. Poda subdires es también más eficiente.

Actualización: también, es posible que desee actualizar a una subversión más reciente. El nuevo formato de pago (después de svn upgrade) utiliza solo un único directorio .svn, por lo que generalmente puede hacer ahora sloccount src.

1

Uno puede ignorar .svn directorios mediante la recopilación de archivos de todos los otros directorios usando hallazgo:

find . -not -wholename '*/.svn/*' -type f | xargs sloccount 
7

Esta sintaxis es más fácil de mantener y extender (lo cual es muy importante cuando se necesita para excluir varios directorios):

sloccount --duplicates --wide --details . | grep -v -e '.svn' > sloccount.sc 

Ejemplo de cadena de exclusiones:

sloccount --duplicates --wide --details . | grep -v -e '.svn' -e 'thirdparty' > sloccount.sc 


NB: lo uso y funciona en mi Jenkins

+0

Debe tener cuidado con esto, realmente solo filtra la salida sin actualizar ningún total. –

Cuestiones relacionadas