一.什麼是PHPMD
PHPMD是一個成熟的項目,並提供了多種預定義的規則集(儘管可能不如Java兄弟PMD那麼多),以檢測代碼氣味和所分析的源代碼中可能的錯誤。查看規則部分,以瞭解有關所有已實施規則的更多信息。
官方網站
二.怎麼安裝
githup 上發佈的最新下載包連接:https://github.com/phpmd/phpmd/releases/tag/2.8.2
windows下面直接下載phpmd.phpar
把這個包放到你本地php安裝目錄裏面
將這個你本地php安裝目錄配置windows下面的系統環境變量path當中
打開命令行執行phpmd
到這裏基本上phpmd就安裝好了
三.這個工具怎麼用呢
PHPMD中文手冊:https://www.kancloud.cn/bajiao/phpmd/128475
語法:
phpmd.phpar [filename|directory] [report format] [ruleset file]:
開始一個新規則集最簡單的方式是拷貝一個現有文件然後從文件體中去掉所有規則標籤。或者你可以使用模板作爲規則集文件。記得修改@name和的內容。
在項目的跟目錄中添加一個phpmd.xml的配置文件
接下來做啥呢?參考手冊創建自定義規則集,先自定義添加規則集
自定義規則集內容
<?xml version="1.0"?>
<ruleset name="customer/php"
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"
>
<rule ref="rulesets/codesize.xml/TooManyFields" />
<!--- 一個類中不能有太多fields字段,默認值15 -->
<rule ref="rulesets/codesize.xml/NPathComplexity" />
<!--- 一個方法中NPath複雜性,默認值200 -->
<rule ref="rulesets/codesize.xml/ExcessiveMethodLength" />
<!--- 相同的方法執行同一功能,默認值100 -->
<rule ref="rulesets/codesize.xml/ExcessiveClassLength" />
<!--- 一個類的最大行數,默認值1000 -->
<rule ref="rulesets/codesize.xml/TooManyMethods" />
<!--- 一個類的最大方法數,默認值25 -->
<rule ref="rulesets/controversial.xml/CamelCaseClassName" />
<!--- 以駝峯式命名類 -->
<rule ref="rulesets/controversial.xml/CamelCaseParameterName" />
<!--- 以駝峯式命名參數名字 -->
<rule ref="rulesets/controversial.xml/CamelCaseVariableName" />
<!--- 以駝峯式命名變量名字 -->
<rule ref="rulesets/design.xml/DevelopmentCodeFragment" />
<!-- 代碼中不要有var_dump(), print_r()等這種調試輸出結構 -->
<rule ref="rulesets/design.xml/EvalExpression" />
<!-- 代碼中不要有eval()這種結構 -->
<rule ref="rulesets/design.xml/GotoStatement" />
<!-- 代碼中不要有goto這種結構 -->
<rule ref="rulesets/naming.xml/BooleanGetMethodName" />
<!-- 返回值爲布爾型而以'getX()'格式命名的方法改寫成'isX()' 或者 'hasX()'-->
<rule ref="rulesets/naming.xml/ConstantNamingConventions" />
<!-- 類/接口常量必須用大寫字母定義-->
<rule ref="rulesets/unusedcode.xml/UnusedLocalVariable" />
<!-- 存在已聲明或賦值的局部變量,但是卻未使用-->
<rule ref="rulesets/unusedcode.xml/UnusedPrivateField" />
<!-- 存在已聲明或賦值的局部變量,但是卻未使用-->
</ruleset>
打開一個cmd命令行,切換到項目命令行
我這裏先建一個不符合要求的Test_tt的文件,具體內容如下
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2020/3/23
* Time: 15:52
*/
class Test_tt
{
const a=1;
public function index()
{
$i=5;
echo 1;
}
}
我們運行一哈phpmd代碼檢測工具
我們首先進入到項目目錄
cd E:/phpcode/test
phpmd ./application text codesize,unusedcode,naming,./phpmd.xml --exclude application/cache,vendor > phpmd.html
這樣代碼質量就體現出來了
參考文章:
https://www.kancloud.cn/bajiao/phpmd/128475
https://blog.csdn.net/wu15010861923/article/details/89158240