流行PHP项目的phpmetrics分析(译)

原文:phpmetrics of popular php projects

译者:youngsterxyf

之前我偶然发现一个名为phpmetrics的新工具,可用于计算及展示php的度量指标。我当时立马喜欢上了这个工具,并决定用它分析我认为重要的一些php项目。 我知道这个项目列表还远远不够完善,但应该仍然值得一看。我特别喜欢其中的“可维护性”报告,我发现视觉上那些红色的斑点就和丑陋的代码一样令人厌恶。

这个工具貌似还有点小bug,我会尽力尽快修复这个工具项目的这些小问题。

一些重要的说明

  • 目前我还无法得到Cakephp和Typo3的分析报告,之后我会尽快调查一下这个问题。
  • 我是在完整的代码库或下载的源码包上执行这个工具的,这意味着某些情况下还分析了项目的外部依赖库。之后我可能会调整,但目前不在计划之内。
  • 有些项目包含很多代码库,所以我无法确保测试的都是正确的那个代码库。Joomla尤其可能这样。
  • 某些项目并非非常知名,但在github上呈现关注度上升趋势。
  • dm-mailer这个项目无足轻重,只是我最新的个人兴趣项目。我将它与phpmetrics一起归到Backfire一节。
  • 注意:php-yaf和phalcon都是非常有意思的php框架,但多数代码是C实现的,因此没有包含进来。

说明:阅读该报告的一点小提示:

  • 更多的斑点只是意味着更多的类
  • 红色意味着不可维护,黄色表示可接受,绿色则表明良好、可维护的代码。

分析结果

框架

项目:agavi

可维护性:agavi-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交(均指master分支上的):4个月内


项目:aura

可维护性:aura-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:1周内


项目:cakephp

可维护性:cakephp-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:1周内


项目:codeigniter

可维护性:codeigniter-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:1周内


项目:deano

可维护性:deano-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:10个月内


项目:fatfree

可维护性:fatfree-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:1个月内


项目:flight

可维护性:flight-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:2周内


项目:fuelphp

可维护性:fuelphp-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:2个月内


项目:laravel

可维护性:laravel-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:2周内


项目:limonade

可维护性:limonade-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:2个月内


项目:nette

可维护性:nette-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:1周内


项目:phavour

可维护性:phavour-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:6个月内


项目:php-mvc(advanced)

可维护性:php-mvc-advanced-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:2周内


项目:phpixie

可维护性:phpixie-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:5个月内


项目:popphp2

可维护性:popphp2-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:3周内


项目:silex

可维护性:silex-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:1周内


项目:slim

可维护性:slim-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:5个月内


项目:symfony1

可维护性:symfony1-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:2年内


项目:symfony2

可维护性:symfony2-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:1周内


项目:typo3

可维护性:typo3-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:1周内


项目:yii1

可维护性:yii1-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:2周内


项目:yii2

可维护性:yii2-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:1周内


项目:zf1

可维护性:zf1-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:1周内


项目:zf2

可维护性:zf2-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:2周内


CMS

项目:drupal

可维护性:drupal-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:1周内


项目:joomla

可维护性:joomla-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:5个月内


项目:grav

可维护性:grav-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:1周内


项目:pagekit

可维护性:pagekit-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:1周内


项目:os webasyst projects

可维护性:os-webasyst-projects-phpmetrics

分析报告:戳这里

代码库:N/A

最近提交:N/A


项目:wordpress

可维护性:wordpress-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:1周内


电子商务

项目:magento1(1.8 copy)

可维护性:magento1-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:N/A


项目:magento2

可维护性:magento2-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:1周内


项目:opencart

可维护性:opencart-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:1周内


项目:oscommerce

可维护性:oscommerce-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:2年内


项目:prestashop

可维护性:prestashop-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:1周内


项目:sylius

可维护性:sylius-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:10个月内


项目:virtuemart

可维护性:virtuemart-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:N/A


项目:zencart

可维护性:zencart-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:1周内


开发工具

项目:codeception

可维护性:codeception-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:1周内


项目:phpunit

可维护性:phpunit-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:1周内


其他

项目:piwik

可维护性:piwik-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:1周内


Backfire

项目:dm-mailer

可维护性:dm-mailer-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:7个月内


项目:phpmetrics

可维护性:phpmetrics-phpmetrics

分析报告:戳这里

代码库:戳这里

最近提交:1周内


问题(Issues)

Cakephp

594/666 [========================>---]  89%

[Exception]                         
Closure detected instead of method

Deano

2/9 [======>---------------------]  22%file /home/peter/dev/php/opensource/deano/views/layout/layout.php is not valid and has been skipped
9/9 [============================] 100%file /home/peter/dev/php/opensource/deano/deano.php is not valid and has been skipped

Limonade

 9/16 [===============>------------]  56%file /home/peter/dev/php/opensource/limonade/examples/example02/index.php is not valid and has been skipped
16/16 [============================] 100%file /home/peter/dev/php/opensource/limonade/examples/example06/index.php is not valid and has been skipped

Magento

3361/9868 [=========>------------------]  34%file ../../opensource/magento2/lib/internal/Zend/Mail/Protocol/Pop3.php is not valid and has been skipped

Pagekit

102/215 [=============>--------------]  47%file /home/peter/dev/php/opensource/pagekit/extensions/system/src/System/Console/skeleton/extension/src/Controller/SiteController.php is not valid and has been skipped
103/215 [=============>--------------]  47%file /home/peter/dev/php/opensource/pagekit/extensions/system/src/System/Console/skeleton/extension/src/DefaultExtension.php is not valid and has been skipped
105/215 [=============>--------------]  48%file /home/peter/dev/php/opensource/pagekit/extensions/system/src/System/Console/skeleton/theme/src/DefaultTheme.php is not valid and has been skipped

Symfony1

199/1320 [====>-----------------------]  15%file /home/peter/dev/php/opensource/symfony1/lib/task/generator/skeleton/module/module/actions/actions.class.php is not valid and has been skipped
205/1320 [====>-----------------------]  15%file /home/peter/dev/php/opensource/symfony1/lib/task/generator/skeleton/app/web/index.php is not valid and has been skipped
206/1320 [====>-----------------------]  15%file /home/peter/dev/php/opensource/symfony1/lib/task/generator/skeleton/app/app/config/ApplicationConfiguration.class.php is not valid and has been skipped
397/1320 [========>-------------------]  30%file /home/peter/dev/php/opensource/symfony1/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/skeleton/lib/helper.php is not valid and has been skipped
398/1320 [========>-------------------]  30%file /home/peter/dev/php/opensource/symfony1/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/skeleton/lib/configuration.php is not valid and has been skipped
399/1320 [========>-------------------]  30%file /home/peter/dev/php/opensource/symfony1/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/skeleton/actions/actions.class.php is not valid and has been skipped
445/1320 [=========>------------------]  33%file /home/peter/dev/php/opensource/symfony1/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/skeleton/actions/actions.class.php is not valid and has been skipped
652/1320 [=============>--------------]  49%file /home/peter/dev/php/opensource/symfony1/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/skeleton/lib/helper.php is not valid and has been skipped
653/1320 [=============>--------------]  49%file /home/peter/dev/php/opensource/symfony1/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/skeleton/lib/configuration.php is not valid and has been skipped
654/1320 [=============>--------------]  49%file /home/peter/dev/php/opensource/symfony1/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/skeleton/actions/actions.class.php is not valid and has been skipped
700/1320 [==============>-------------]  53%file /home/peter/dev/php/opensource/symfony1/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/skeleton/actions/actions.class.php is not valid and has been skipped

Typo3

76/2583 [>---------------------------]   2%

[Exception]                         
Closure detected instead of method