2010-05-25 4 views
6

Я пытаюсь использовать sloccount изнутри hudson для сбора статистики на нашем кодовом, однако по умолчанию sloccount собирает информацию о всех файлов, даже те, которые являются «скрытыми» (например. .hideme). Это означает, что статистика искажена, поскольку они включают числа из файлов в каталогах .svn.Как игнорировать каталоги .svn при использовании sloccount?

Есть ли способ сообщить sloccount, чтобы правильно игнорировать любые файлы/каталоги, которые начинаются с .?

ответ

4

Мой последний подход был удалить .svn каталоги с SED выхода:

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

Решение Dave не тратит время на файлы в каталогах '.svn' в первую очередь. –

6

Вы можете отредактировать исходный код sloccount, чтобы не искать в каталогах, начинающихся с периода. В противном случае, вот что я приготовил в командной строке. В принципе, вы можете указать список путей файла в командной строке в качестве аргументов sloccount и проанализировать только те файлы. Таким образом, он найдет все файлы в PWD, исключая скрытые файлы, а затем передаст их в качестве аргумента sloccount.

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

Вы уверены, что вам нужно 'tr' команду? Как передать флаг '-print0' в' find' и флаг '-0' в' xargs' обрабатывать пути и имена файлов с пробелами? –

+0

Использовать поддержку xargs для поиска: '-exec sloccount {} \ +' –

1

Я использую следующий муравей цель построить «sloccount.sc» без файлов в».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> 

Просто замените„source_folder“по имени папки источника вы хотите сканировать и сказать Дженкинс построить муравей целевой„sloccount“.

Обратите внимание, что для этого требуется ant 1.7.1 или новее.

4

Используйте это:

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

-exec избегает xargs хаков видели в некоторых других ответах. Это поддержка xargs, включенная для поиска. Нет необходимости запускать регулярные выражения, достаточно глотания. Также более эффективны подрезки подрезки.

Обновление: Также вы можете перейти на более позднюю подрывную деятельность. Новый формат выписки (после svn upgrade) использует только один каталог .svn, поэтому обычно вы можете просто сделать sloccount src.

1

можно игнорировать .svn каталоги, собирая файлы из всех других каталогов, используя поиск:

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

Этот синтаксис легче поддерживать и расширять (что очень важно, когда необходимо исключить несколько каталогов):

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

Пример исключений цепи:

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


NB: Я использую его, и он работает на моем Дженкинс

+0

Должно быть осторожным с этим, он действительно просто фильтрует выход, не обновляющий никаких итогов. –

Смежные вопросы