Если я запускаю phploc
против одного из моих проектов PHP (с открытым исходным кодом), я вижу этот вывод.
phploc 1.6.4 by Sebastian Bergmann. Directories: 3 Files: 33 Lines of Code (LOC): 2358 Cyclomatic Complexity / Lines of Code: 0.08 Comment Lines of Code (CLOC): 903 Non-Comment Lines of Code (NCLOC): 1455 Namespaces: 0 Interfaces: 3 Classes: 28 Abstract: 1 (3.57%) Concrete: 27 (96.43%) Average Class Length (NCLOC): 49 Methods: 149 Scope: Non-Static: 128 (85.91%) Static: 21 (14.09%) Visibility: Public: 103 (69.13%) Non-Public: 46 (30.87%) Average Method Length (NCLOC): 9 Cyclomatic Complexity / Number of Methods: 1.69 Anonymous Functions: 0 Functions: 3 Constants: 9 Global constants: 0 Class constants: 9
С помощью этого статического анализа, как определить, хорошая ли эта кодовая база хорошая или плохая? Или как хорошо или плохо написано?
3.57%
абстрактный класс хорош или плох? 14.09%
статические методы. Должно ли оно быть ниже на базе кода ООП? Последний вопрос Как вы анализируете базу кода с выходом phploc?
Низкая цикломатическая сложность хорошая, высокая – плохая; статикам трудно провести единичный тест , но (хотя некоторые считают их плохими, как eval), они служат цели; другие меры от phploc подлежат интерпретации.
Но вы действительно должны использовать phploc наряду с другими инструментами, такими как pdepend и phpmd . В частности, сайт pdepend объясняет большую часть используемой аналитики, а вывод phpmd довольно понятен
РЕДАКТИРОВАТЬ
Для сравнения, код, над которым я сейчас работаю ( https://github.com/MarkBaker/PHPGeodetic ): Я достаточно доволен уровнем абстрактных / конкретных классов, хотя это может пойти немного выше; У меня есть один метод с более высокой циклической сложностью, которого достаточно, чтобы немного перекосить эти фигуры, но это нелегко поддается слому; и несколько более длинных методов (но недостаточно долго, чтобы вызывать предупреждения phpmd).
Lines of Code (LOC): 4003 Cyclomatic Complexity / Lines of Code: 0.07 Comment Lines of Code (CLOC): 1580 Non-Comment Lines of Code (NCLOC): 2423 Namespaces: 0 Interfaces: 1 Traits: 0 Classes: 25 Abstract: 4 (16.00%) Concrete: 21 (84.00%) Average Class Length (NCLOC): 103 Methods: 160 Scope: Non-Static: 129 (80.62%) Static: 31 (19.38%) Visibility: Public: 131 (81.88%) Non-Public: 29 (18.12%) Average Method Length (NCLOC): 16 Cyclomatic Complexity / Number of Methods: 2.12 Anonymous Functions: 2 Functions: 0 Constants: 66 Global constants: 0 Class constants: 66
В целом, я испытываю соблазн работать с правилом 80:20 для публичных / частных, нестатических / статических и для конкретных / абстрактных; но многое зависит от того, что вы на самом деле кодируете
Вероятно, более важным является Cyclomatic Complexity / Number of Methods … Мне не нравится, что эта фигура слишком высока; но если он встанет выше среднего, я буду смотреть на статистику phpmd намного ближе