Такая потребность может возникнуть не только при создании и для поддержания собственного проекта, но и для анализа уже существующих. Чтобы оценить эффективность проведенной оптимизации, вести статистику собственной производительности, или чтобы оценить трудозатраты. Разумеется, оценивать таким образом эффективность и функциональность кода, а значит и труд программиста в общем нельзя, один и тот же фрагмент кода можно написать и короче, и длиннее. А вот, к примеру, сравнивать уязвимость программного продукта косвенным образом уже можно (чем меньше кода имеет проект, тем меньше потенциальных ошибок в нём содержится). В общем, задача данного аспекта метрики ПО зачастую возникает.
Как известно, помимо пустых и непустых строк, следует разделять физические строки кода и логические (первые могут быть комментарием, вторые отражают количество операторов). Для этой задачи хорошо подходит утилита 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
-------------------------------------------------------------------------------
Как известно, помимо пустых и непустых строк, следует разделять физические строки кода и логические (первые могут быть комментарием, вторые отражают количество операторов). Для этой задачи хорошо подходит утилита 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
-------------------------------------------------------------------------------
Вот таким образом можно приблизительно оценить объём кода, или выполнить какие-то более сложные манипуляции (обрезать все комментарии, сравнить две версии одного и того же исходника и т.д.)
Комментариев нет:
Отправить комментарий