当前位置: 首页 > 工具软件 > PHPMD > 使用案例 >

php lint,PHP代码lint工具:PHPMD

刘畅
2023-12-01

PHPMD是PHP Depend的一个派生项目,目标是成为一个与著名的Java工具PMD相当的PHP。PHPMD可以被看作是一种用户友好的、易于为PHP Depend度量的原始指标配置前端。

PHPMD所做的是:它以给定的PHP源代码为基础,并在源代码中查找几个潜在的问题。

可能的错误

次优的代码

复杂的表达式

未使用的参数、方法和属性

PHPMD是一个成熟的项目,它提供了一组不同的预定义规则(虽然可能没有它的Java兄弟PMD那么多)来检测分析的源代码中的代码气味和可能的错误。

当前的规则集

每个规则集中包含的规则集和规则列表。

干净代码规则

代码大小规则

有争议的规则

设计规则

命名规则

未使用的代码规则

Demo

PHPMD中的所有规则至少都必须实现\PHPMD\规则接口。您还可以扩展抽象规则基类\PHPMD\AbstractRule,它已经提供了所有必需的基础结构方法和应用程序逻辑的实现,因此留给您的惟一任务就是实现规则的具体验证代码。为了实现这个验证代码,PHPMD规则接口声明了apply()方法,该方法将在源分析阶段由应用程序调用。

class Com_Example_Rule_NumberOfPublicMethods

extends \PHPMD\AbstractRule

implements \PHPMD\Rule\ClassAware

{

const MINIMUM = 1,

MAXIMUM = 10;

public function apply(\PHPMD\AbstractNode $node)

{

$npm = $node->getMetric('npm');

if ($npm < self::MINIMUM || $npm > self::MAXIMUM) {

$this->addViolation($node);

}

}

}

这是基于度量的规则的编码部分。现在我们必须将这个类添加到一个规则集文件中。

xmlns="http://pmd.sf.net/ruleset/1.0.0"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"

xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">

message = "The context class violates the NPM metric."

class="Com_Example_Rule_NumberOfPublicMethods"

externalInfoUrl="http://example.com/phpmd/rules.html#numberofpublics">

3

Run

~ $ phpmd /my/source/example.com text /my/rules/example-rule.xml

/my/source/example.com/functions.php:2 Please do not use functions.

4.0

01

Post Views:

387

 类似资料: