PHPMD es un proyecto derivado de PHP Depend y pretende ser un equivalente PHP de la conocida herramienta Java PMD. PHPMD puede verse como una aplicación frontend fácil de usar para el flujo de métricas sin procesar medidas por PHP Depend.
https://phpmd.org
Ver https://phpmd.org/download/index.html
Escriba phpmd [filename|directory[,filename|directory[,...]]] [report format] [ruleset file]
, es decir:
mapi@arwen ~ $ phpmd php/PDepend/DbusUI/ xml conjuntos de reglas.xml
Mientras que el archivo de conjunto de reglas rulesets.xml
podría tener este aspecto:
<? xml version = " 1.0 " ?>
< ruleset name = " My first PHPMD rule set "
xmlns = " https://phpmd.org/xml/ruleset/1.0.0 "
xmlns : xsi = " http://www.w3.org/2001/XMLSchema-instance "
xsi : schemaLocation = " https://phpmd.org/xml/ruleset/1.0.0
http://phpmd.org/xml/ruleset_xml_schema_1.0.0.xsd "
xsi : noNamespaceSchemaLocation = "
http://phpmd.org/xml/ruleset_xml_schema_1.0.0.xsd " >
< description >
My custom rule set that checks my code...
</ description >
< rule ref = " rulesets/codesize.xml " />
< rule ref = " rulesets/cleancode.xml " />
< rule ref = " rulesets/controversial.xml " />
< rule ref = " rulesets/design.xml " />
< rule ref = " rulesets/naming.xml " />
< rule ref = " rulesets/unusedcode.xml " />
</ ruleset >
El informe xml tendría este aspecto:
<? xml version = " 1.0 " encoding = " UTF-8 " ?>
< pmd version = " 0.0.1 " timestamp = " 2009-12-19T22:17:18+01:00 " >
< file name = " /projects/pdepend/PHP/Depend/DbusUI/ResultPrinter.php " >
< violation beginline = " 81 "
endline = " 81 "
rule = " UnusedFormalParameter "
ruleset = " Unused Code Rules "
externalInfoUrl = " https://phpmd.org/rules/unusedcode.html#unusedformalparameter "
priority = " 3 " >
Avoid unused parameters such as '$builder'.
</ violation >
</ file >
</ pmd >
Puede pasar una cadena separada por comas con una lista de nombres de archivos o nombres de directorio, que contenga el código fuente PHP a PHPMD.
La distribución PHPMD Phar incluye los archivos del conjunto de reglas dentro de su archivo, incluso si el parámetro "rulesets/codesize.xml" anterior parece una referencia del sistema de archivos.
Tenga en cuenta que la salida predeterminada está en XML, por lo que puede redirigirlo a un archivo y convertirlo en XSLT o lo que sea.
También puede utilizar nombres abreviados para hacer referencia a los conjuntos de reglas integrados, como este:
phpmd PHP/Depend/DbusUI/ tamaño de código xml
La interfaz de línea de comando también acepta los siguientes argumentos opcionales:
--verbose, -v, -vv, -vvv
: el nivel de detalle de salida. Imprimirá más información sobre lo que se está procesando o almacenando en caché. Se enviará a STDERR
para no interferir con la salida del informe. La salida text
también tendrá debajo de cada error un enlace a la documentación de la regla y formateará la ubicación de manera que la mayoría de los IDE se conviertan en un enlace para abrir el archivo en la línea del error al hacer clic.--minimumpriority
: el umbral de prioridad de la regla; Las reglas con menor prioridad no se utilizarán.--reportfile
: envía la salida del informe al archivo especificado, en lugar del destino de salida predeterminado STDOUT
.--suffixes
: cadena separada por comas de extensiones de nombre de archivo de código fuente válidas, por ejemplo, php,phtml.--exclude
: cadena de patrones separados por comas que se utilizan para ignorar directorios. Utilice asteriscos para excluir por patrón. Por ejemplo *src/foo/*.php
o *src/foo/*
--strict
: también informa aquellos nodos con una anotación @SuppressWarnings.--ignore-errors-on-exit
: saldrá con un código cero, incluso en caso de error.--ignore-violations-on-exit
: saldrá con un código cero, incluso si se encuentra alguna infracción.--cache
: habilitará el caché de resultados. El valor predeterminado será .phpmd.result-cache.php
en el directorio de trabajo actual.--cache-file
: en cooperación con --cache
anulará la ruta predeterminada del archivo de caché de resultados de .phpmd.result-cache.php
a la ruta del archivo proporcionada.--cache-strategy
: establece la estrategia de almacenamiento en caché para determinar si un archivo aún está actualizado. Ya sea contenido para basarlo en el contenido del archivo o marca de tiempo para basarlo en la marca de tiempo modificada del archivo.--generate-baseline
: generará un phpmd.baseline.xml
para las infracciones existentes junto al archivo de definición del conjunto de reglas. Las rutas de los archivos de las infracciones serán relativas al directorio de trabajo actual.--update-baseline
: eliminará todas las infracciones de un phpmd.baseline.xml
existente que ya no existe. _No_ se agregarán nuevas infracciones. La ruta del archivo de las infracciones será relativa al directorio de trabajo actual.--baseline-file
: la ruta del archivo a un archivo xml de línea de base personalizado. Si está ausente, el valor predeterminado será phpmd.baseline.xml
--color
: habilita el color en la salida; por ejemplo, el procesador de texto mostrará el nombre de la regla en amarillo y la descripción del error en rojo.--extra-line-in-excerpt
: especifica cuántas líneas adicionales se agregan a un fragmento de código en formato htmlUna línea de comando de ejemplo:
phpmd PHP/Depend/DbusUI tamaño de código xml --reportfile "phpmd.xml" --sufijos "php,phtml"
Las opciones pueden estar antes o después de los argumentos. Se pueden separar de su valor con un espacio o con un signo igual ( =
). Así, la siguiente sintaxis es equivalente a la anterior:
phpmd --reportfile="phpmd.xml" --suffixes="php,phtml" Tamaño de código xml PHP/Depend/DbusUI
Las cadenas que comiencen con -
serán reconocidas como nombres de opciones. Si tiene argumentos que comienzan con -
, configure las opciones primero, luego use --
para marcar el inicio explícito o la lista de argumentos:
phpmd --reportfile "phpmd.xml" --suffixes "php,phtml" ---foo/Folder xml codesize
PHPMD utiliza los llamados conjuntos de reglas que configuran/definen un conjunto de reglas que se aplicarán a la fuente bajo prueba. La distribución predeterminada de PHPMD ya viene con algunos conjuntos predeterminados, que se pueden usar de inmediato. Puede llamar a la herramienta cli de PHPMD con el nombre de un conjunto para aplicar esta configuración:
~ $ phpmd /ruta/al/tamaño del código del texto fuente
Pero, ¿qué sucede si desea aplicar más de una regla establecida contra su fuente? También puede pasar una lista de nombres de conjuntos de reglas, separados por comas, a la herramienta CLI de PHPMD:
~ $ phpmd /ruta/al/tamaño del código del texto fuente,código no utilizado,denominación
También puede mezclar archivos de conjuntos de reglas personalizados con conjuntos de reglas integrados:
~ $ phpmd /ruta/al/tamaño del código del texto fuente,/mis/rules.xml
Eso es todo. Con este comportamiento, puede especificar su propia combinación de conjuntos de reglas que verificarán el código fuente.
PHPMD también le permite especificar múltiples directorios fuente en caso de que desee crear una salida para ciertas partes de su código.
~ $ phpmd /ruta/al/código,index.php,/otro/lugar/con/código tamaño del código de texto
O use el patrón global:
~ $ phpmd src/main/php/*/*/*{Renderer,Node}.php texto my/rules.xml
PHPMD también puede leer la entrada estándar stdin:
~ $ cat src/MiServicio.php | phpmd - texto my/rules.xml
Por lo tanto, el código PHP que se va a escanear puede ser generado por otro programa y no necesariamente debe almacenarse en un archivo.
La herramienta de línea de comandos de PHPMD actualmente define cuatro códigos de salida diferentes.
--ignore-violations-on-exit
, que dará como resultado un 0 incluso si se encuentra alguna infracción.Por el momento PHPMD viene con los siguientes renderizadores:
Para proyectos existentes se puede generar una línea base de infracción. Todas las violaciones de esta línea de base serán ignoradas en inspecciones posteriores.
El enfoque recomendado sería un phpmd.xml
en la raíz del proyecto. Para generar el phpmd.baseline.xml
al lado:
~ $ phpmd /ruta/al/texto fuente phpmd.xml --generar-baseline
Para especificar una ruta de archivo de referencia personalizada para exportar:
~ $ phpmd /ruta/al/texto fuente phpmd.xml --generate-baseline --baseline-file /ruta/al/fuente/phpmd.baseline.xml
De forma predeterminada, PHPMD buscará phpmd.xml
junto a phpmd.baseline.xml
. Para sobrescribir este comportamiento:
~ $ phpmd /ruta/al/texto fuente phpmd.xml --baseline-file /ruta/al/fuente/phpmd.baseline.xml
Para limpiar un archivo de referencia existente y eliminar únicamente las infracciones que ya no existen:
~ $ phpmd /ruta/al/texto fuente phpmd.xml --update-baseline
Disponible como parte de la suscripción Tidelift.
Los mantenedores de PHPMD
y miles de otros paquetes están trabajando con Tidelift para brindar soporte comercial y mantenimiento para las dependencias de código abierto que utiliza para crear sus aplicaciones. Ahorre tiempo, reduzca el riesgo y mejore la salud del código, mientras paga a los mantenedores de las dependencias exactas que utiliza. Obtenga más información.
Si desea contribuir a PHPMD, consulte la guía de contribuciones.