Как пропустить определенные файлы при расчете строк кода?

У меня есть пользовательский случай, когда мне нужно рассчитать строки кода для каждого BUC-ID. Я добился того же, используя

           git log --shortstat --grep=BUC3565-EPIC16 |grep -E "fil(e|es) changed" | awk -v BUC=$i '{ inserted+=$4; deleted+=$6; delta+=$4-$6i } END {printf "%s, %s,  %s,  %s \n",BUC, inserted, deleted, delta }'

Теперь у меня есть BUC-ID с несколькими файлами. Есть ли способ, которым я могу просто пропустить несколько файлов/папок и по-прежнему иметь возможность вычислить код строки для этого BUC-ID?

Basically, I need to exclude some files/folders while calculating Lines of Code. I am not able to do so because each commit has multiple files. Some should be included and some excluded...Any idea how to achieve that?

Предоставляет ли CLOC какую-либо функцию для исключения файлов?


person user3256114    schedule 13.09.2017    source источник


Ответы (3)


  1. Найдите все коммиты, связанные с BUC-ID.

    git log --pretty=%H --grep=BUC3565-EPIC16

  2. Для каждой фиксации перечислите все измененные файлы, за исключением некоторых файлов/папок.

    git show $commit --pretty=format:"" --name-only | grep -ve "foo.txt" -ve "bar/"

  3. Для каждого файла из остальных вычислите его insertions, deletions и delta.

    git show $commit --pretty=format:"" --short-stat -- $file | grep -E "fil(e|es) changed" | awk

  4. Подведите итоги.

person ElpieKay    schedule 13.09.2017

cloc имеет несколько механизмов для исключения файлов; выполните поиск по слову «исключить» на странице https://github.com/AlDanial/cloc, чтобы узнать подробности.

Вкратце, --exclude-list-file позволяет вам передать файл, содержащий имена файлов, которые вы хотите исключить, --exclude-dir позволяет пропускать указанные каталоги, --exclude-ext пропускает файлы с заданным расширением файла, --exclude-lang игнорирует заданные языки программирования, --not-match-f позволяет указать регулярное выражение, совпадения с которым пропускаются. .

person AlDanial    schedule 14.09.2017

Лучший способ, который я нашел для этого, - использовать cloc и игнорировать те же самые файлы, которые игнорируются системой контроля версий.

Ex:

cloc --vcs=git .

person John Culviner    schedule 14.12.2020