Как можно игнорировать каталоги .svn при использовании sloccount? - PullRequest
7 голосов
/ 25 мая 2010

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

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

Ответы [ 6 ]

7 голосов
/ 18 сентября 2013

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

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

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

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


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

6 голосов
/ 25 мая 2010

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

find . \( ! -regex '.*/\..*' \) -type f | \
tr '\n' ' ' | \
xargs sloccount
4 голосов
/ 17 января 2012

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

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

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

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

4 голосов
/ 09 сентября 2010

Мой последний подход заключался в удалении каталогов .svn из вывода sed:

sloccount --wide --details $DIR | sed "/\/\.svn\//d" > sloccount.sc
1 голос
/ 20 сентября 2012

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

find . -not -wholename '*/.svn/*' -type f | xargs sloccount
1 голос
/ 27 августа 2011

Я использую следующую цель ant для создания файла «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" на имя исходной папки, которую вы хотите отсканировать, и скажите Jenkins, что нужно создать целевую муравьиную "sloccount".

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...