Предположим, у меня есть какой-то программный проект, над которым я работаю, и я хочу вычислить некоторую статистику по нему:
Конечно, я соглашусь только на некоторые из них — чем больше, тем лучше. Я не гарантирую, что репозиторий имеет какую-либо форму контроля версий (хотя лично я сейчас работаю с mercurial); и это не клон онлайн-репозитория (так что ничего похожего на gitstats).
Требования:
hg diff --stat
)Желательная функция:
CLOC — Count Lines of Code — делает некоторые (не все) из этих вещей, отвечая всем требованиям. Он также быстрый, маленький и зависит только от Perl и пары Perl-библиотек.
Выход образца:
http://cloc.sourceforge.net v 1.60 T=0.46 s (354.6 files/s, 64728.0 lines/s)
--------------------------------------------------------------------------------
Language files blank comment code
--------------------------------------------------------------------------------
C/C++ Header 108 2761 2452 10226
C++ 47 1626 772 9703
make 1 476 193 931
Bourne Again Shell 3 50 25 346
CMake 2 48 68 225
XML 1 0 0 11
YAML 1 1 6 8
Bourne Shell 1 1 2 5
--------------------------------------------------------------------------------
SUM: 164 4963 3518 21455
--------------------------------------------------------------------------------
Существует кросс-платформенная библиотека метрик Python, которая дает вам метрики либо в одном файле, либо может рекурсивно использовать дерево каталогов. Он доступен в исходном проекте или в моем форке добавлен рекурсивный вариант на github.
Запуск старого проекта, который мне нужно передать с опцией рекурсии:
Files Language SLOC Comment McCabe
----- ------------------------------ ----------- ------- ------
102 XML 10601 2415 0
7 VGL 4837 14 49
588 C 441797 135164 11715
302 D 7750 0 0
27 XSLT 691 313 0
13 Python 881 203 141
4 XML+PHP 21489 0 0
38 Makefile 1747 3948 18
7 Batchfile 45 8 7
2 HTML 9 36 0
17 Text only 0 0 0
1 POVRay 8 19 0
----- ------------------------------ ----------- ------- ------
1108 Total 489855 142120 11930
айнпоклум
Жан-Франсуа Т.