вторник, 2 июля 2013 г.

Подсчёт количества строк кода

Такая потребность может возникнуть не только при создании и для поддержания собственного проекта, но и для анализа уже существующих. Чтобы оценить эффективность проведенной оптимизации, вести статистику собственной производительности, или чтобы оценить трудозатраты. Разумеется, оценивать таким образом эффективность и функциональность кода, а значит и труд программиста в общем нельзя, один и тот же фрагмент кода можно написать и короче, и длиннее. А вот, к примеру, сравнивать уязвимость программного продукта косвенным образом уже можно (чем меньше кода имеет проект, тем меньше потенциальных ошибок в нём содержится). В общем, задача данного аспекта метрики ПО зачастую возникает.

Как известно, помимо пустых и непустых строк, следует разделять физические строки кода и логические (первые могут быть комментарием, вторые отражают количество операторов). Для этой задачи хорошо подходит утилита cloc ("Cout lines of code"), которую кстати можно найти и в портах FreeBSD. Комментарии не учитываются, как и пустые строки, имеется возможность не учитывать копии файлов. Утилита умеет обрабатывать файлы, директории и архивы. Установки никакой не требует и состоит из одного файла, поддерживает большое количество систем и языков. Конкретно под Windows использование заключается в запуске утилиты из командной строки с определенными параметрами.

На примере моего рабочего проекта (программа для мониторинга и прослушивания icecast радиостанций на C#), получилось следующее:

c:\Users\admin\Downloads>cloc-1.58.exe "C:\Users\admin\Docu
ments\Visual Studio 2010\Projects\RegionsMonitoring\RegionsMonitoring"
      28 text files.
      25 unique files.
      24 files ignored.

http://cloc.sourceforge.net v 1.58  T=1.0 s (13.0 files/s, 17430.0 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
XML                              2             15              0          13979
C#                              10            148            436           2741
MSBuild scripts                  1              0              7            104
-------------------------------------------------------------------------------
SUM:                            13            163            443          16824
-------------------------------------------------------------------------------


Можно обрабатывать только файлы с определённым расширением:

c:\Users\admin\Downloads>cloc-1.58.exe --match-f="\.cs$" "C:\Users\admin\Documen
ts\Visual Studio 2010\Projects\RegionsMonitoring\RegionsMonitoring"
      10 text files.
      10 unique files.
       0 files ignored.

http://cloc.sourceforge.net v 1.58  T=0.5 s (20.0 files/s, 6650.0 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
C#                              10            148            436           2741
-------------------------------------------------------------------------------
SUM:                            10            148            436           2741
-------------------------------------------------------------------------------

Здесь, разумеется, часть кода является сгенерированной самой IDE, для более точного анализа можно исключить из анализа Program.cs:
c:\Users\admin\Downloads>cloc-1.58.exe --match-f="\.cs$" --not-match-f="Program"
 "C:\Users\admin\Documents\Visual Studio 2010\Projects\RegionsMonitoring\Regions
Monitoring"
       9 text files.
       9 unique files.
       0 files ignored.

http://cloc.sourceforge.net v 1.58  T=0.5 s (18.0 files/s, 6606.0 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
C#                               9            147            433           2723
-------------------------------------------------------------------------------
SUM:                             9            147            433           2723
-------------------------------------------------------------------------------

Вот таким образом можно приблизительно оценить объём кода, или выполнить какие-то более сложные манипуляции (обрезать все комментарии, сравнить две версии одного и того же исходника и т.д.)

Комментариев нет:

Отправить комментарий