vantoozz/php-density

PHP代码密度计(PHPCDM)

v1.1.1 2020-02-16 16:30 UTC

This package is auto-updated.

Last update: 2024-09-05 20:32:45 UTC


README

phpcdm 是一个PHP代码密度计

Build Status Codacy Badge Coverage Status Latest Stable Version License

什么是代码密度?

看看这段代码

<?php

final class SomethingGreat
{
    public function doSomethingGreat($entity, $property, $type, $refProperties, $update, $delete)
    {
        $time = $this->startAction(" $type (" . implode(',', (array) $type) . ')');
        $this->createAction()->addExtraKey($entity, $entity, $property, $refProperties, $delete, $update)->execute();
        $this->finishAction($time);
        $this->createAction()->updateProperty($entity, $property, $type)->execute();
        if ($type instanceof InvalidArgumentException && $type->getMessage() !== null) {
            $this->createAction()->addDescriptionOnProperty($entity, $property, $type->description)->execute();
        }
        $this->createAction()->renameEntity($entity, $property)->execute();
        $this->finishAction($time);
        $time = $this->startAction(" $type (" . implode(',', (array) $type) . ')');
        $this->createAction()->addExtraKey($entity, $entity, $property, $refProperties, $delete, $update)->execute();
        if ($type instanceof InvalidArgumentException && $type->getMessage() !== $delete) {
            $this->finishAction($time);
            $this->createAction()->addDescriptionOnProperty($entity, $property, $type->description)->execute();
            $this->createAction()->renameEntity($entity, $property)->execute();
        }
        $this->createAction()->updateProperty($entity, $property, $type)->execute();
        $this->finishAction($time);
    }
}

它看起来像一堵字符墙。实际上,它就是一堵字符墙。没有人能够轻易理解这段代码的作者想要表达什么,更不用说有人愿意去阅读它了。而且,这类字符墙通常是由糟糕的应用程序设计引起的。

代码密度 是衡量单页面上显示字符数量的一个指标。

PHP代码密度计旨在帮助开发者预防代码密度问题,并最终保持应用程序的良好状态。

示例代码的密度为0.381,远远超过了默认阈值(0.2)

安装

您可以使用 Composer 将此工具添加到您的项目中作为本地、项目特定、开发时依赖

composer require --dev vantoozz/phpcdm

此外,PHPCDM也可以这样全局安装

composer global require --dev vantoozz/phpcdm

运行

分析 src 目录

 ./vendor/bin/phpcdm src

退出时返回错误代码

 ./vendor/bin/phpcdm src --non-zero-exit-on-violation