#count #language-agnostic #lines-of-code
#подсчитайте #не зависит от языка #строки кода
Вопрос:
Используя команду:
wc -l `find . -name * -print`
Вы можете получить общее количество строк всех файлов внутри папки.
Но представьте, что у вас есть несколько папок (например, библиотеки), в которых вы не хотите подсчитывать их строки, потому что вы их не писали.
Итак, как бы вы подсчитали строки в проекте, исключая определенные папки?
Ответ №1:
cloc всегда был отличным другом, когда мне нужно было подсчитать строки src-кода. Используя ядро Linux 2.6.29 в качестве примера:
$ cloc .
26667 text files.
26357 unique files.
2782 files ignored.
http://cloc.sourceforge.net v 1.50 T=168.0 s (140.9 files/s, 58995.0 lines/s)
--------------------------------------------------------------------------------
Language files blank comment code
--------------------------------------------------------------------------------
C 11435 1072207 1141803 5487594
C/C Header 10033 232559 368953 1256555
Assembly 1021 35605 41375 223098
make 1087 4802 5388 16542
Perl 25 1431 1648 7444
yacc 5 447 318 2962
Bourne Shell 50 464 1232 2922
C 1 205 58 1496
lex 5 222 246 1399
HTML 2 58 0 378
NAnt scripts 1 85 0 299
Python 3 62 77 277
Bourne Again Shell 4 55 22 265
Lisp 1 63 0 218
ASP 1 33 0 136
awk 2 14 7 98
sed 1 0 3 29
XSLT 1 0 1 7
--------------------------------------------------------------------------------
SUM: 23678 1348312 1561131 7001719
--------------------------------------------------------------------------------
Ответ №2:
С помощью find
вы также можете «отрицать» условия соответствия с помощью !
. Например, если я хочу перечислить все .java
файлы в каталоге, исключая те, которые содержат Test
:
find . -name "*.java" ! -name "*Test*"
Надеюсь, это поможет!
Редактировать:
Кстати, -name
предикат фильтрует только имена файлов. Если вы хотите отфильтровать пути (чтобы вы могли фильтровать каталоги), используйте -path
:
find . -path "*.java" ! -path "*Test*"
Комментарии:
1. как исключить несколько папок?
2. @rclai, вы могли бы просто добавить дополнительные
-path
выражения, подобные этомуfind . -name '*.java' ! -path '*folder1*' ! -path '*folder2*'
Ответ №3:
вы всегда можете исключить их, перечислив файлы с помощью регулярных выражений, например,
*.txt будет включать только текстовые файлы и так далее…
Ответ №4:
Я создал пакет NPM специально для этого использования, который позволяет вам вызывать инструмент CLI и указывать путь к каталогу и папкам / файлам для игнорирования
это выглядит так:
npm i -g @quasimodo147/countlines
чтобы получить $ countlines
команду в вашем терминале
затем вы можете сделать countlines . node_modules build dist