Несколько статей в этом блоге будут посвящены таким тулзам, будут описаны основные возможности утилит. В этом посте я бы хотел рассказать о двух инструментах: Обе утилиты предлагает использовать известный и уважаемый разработчик Sebastian Bergmann, что уже является неплохой рекомендацией. Phploc и Phpcpd особенно актуальны для использования на сервере непрерывной интеграции, но и не будут лишними, находясь под рукой разработчика.
Начнем с Phploc. Эта утилита позволяет померить PHP проект, т.е. это такая своеобразная линейка, lines of code. Опций у phploc совсем мало: помимо указания каталога или файла и других не очень важных параметров, можно установить путь до лог-файла, в который phploc запишет результат измерений в XML или CSV.
Запускаем phploc:
phploc --log-csv reports/phploc.csv application/classes
phploc 1.6.1 by Sebastian Bergmann.
Lines of Code (LOC): 2992
Cyclomatic Complexity / Lines of Code: 0.10
Comment Lines of Code (CLOC): 587
Non-Comment Lines of Code (NCLOC): 2405
Namespaces: 0
Interfaces: 0
Classes: 1
Abstract: 0 (0.00%)
Concrete: 1 (100.00%)
Average Class Length (NCLOC): 2660
Methods: 62
Scope:
Non-Static: 62 (100.00%)
Static: 0 (0.00%)
Visibility:
Public: 27 (43.55%)
Non-Public: 35 (56.45%)
Average Method Length (NCLOC): 42
Cyclomatic Complexity / Number of Methods: 4.94
Anonymous Functions: 0
Functions: 0
Constants: 5
Global constants: 0
Class constants: 5
Два показателя (Cyclomatic Complexity / Lines of Code и Cyclomatic Complexity / Number of Methods) используют такую характеристику кода, как Цикломатическая сложность. Этот показатель характеризует число ветвей в коде и вычисляется путем подсчета операторов цикла, условного перехода и переключений. Цикломатическая сложность была разработана еще в 1976 году, а ее автор Томас Дж. Мак-Кейб предлагал заставлять разработчиков разбивать код на более простые участки, если сложность модуля превышает значение 10.Вторая утилита, о которой будет рассказано в данном посте - это Phpcpd, детектор “копипаста”. Пожалуй, никто не будет спорить, что копипаст дурно пахнет и почти наверняка приведет к ошибкам в приложении, которые проявятся рано или поздно. Утилита phploc ищет такие дурные, повторяющиеся места в коде.
phpcpd --min-tokens 50 --verbose lib
phpcpd 1.3.2 by Sebastian Bergmann.
Processing files
49 / 49 [+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>] 100.00%
Found 3 exact clones with 66 duplicated lines in 4 files:
- foo.class.php:241-252
foo.class.php:285-296
- copy.class.php:12-22
paste.class.php:20-30
- boo.class.php:833-848
foo.class.php:391-406
0.25% duplicated lines out of 26439 total lines of code.
Time: 3 seconds, Memory: 24.25Mb
Параметры min-lines и min-tokens позволяют повышать или понижать планку того, что считать Copy/Paste. Опцией log-pmd результаты можно сохранить в формате PMD-CPD XML.На этом пока все, продолжение следует. Делитесь в комментариях своими тулзами, которые помогают вам!
0 коммент.:
Отправить комментарий