PHPMD est un projet dérivé de PHP Depend et vise à être un équivalent PHP du célèbre outil Java PMD. PHPMD peut être considéré comme une application frontale conviviale pour le flux de métriques brutes mesuré par PHP Depend.
https://phpmd.org
Voir https://phpmd.org/download/index.html
Tapez phpmd [filename|directory[,filename|directory[,...]]] [report format] [ruleset file]
, c'est à dire :
mapi@arwen ~ $ phpmd php/PDepend/DbusUI/ xml Rulesets.xml
Alors que le fichier d'ensemble de règles rulesets.xml
pourrait ressembler à ceci :
<? 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 >
Le rapport XML ressemblerait à ceci :
<? 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 >
Vous pouvez transmettre une chaîne séparée par des virgules avec une liste de noms de fichiers ou des noms de répertoires, contenant le code source PHP à PHPMD.
La distribution PHPMD Phar inclut les fichiers d'ensemble de règles dans son archive, même si le paramètre "rulesets/codesize.xml" ci-dessus ressemble à une référence de système de fichiers.
Notez que la sortie par défaut est au format XML, vous pouvez donc la rediriger vers un fichier et la XSLT ou autre.
Vous pouvez également utiliser des noms abrégés pour faire référence aux ensembles de règles intégrés, comme ceci :
phpmd PHP/Depend/DbusUI/taille du code xml
L'interface de ligne de commande accepte également les arguments facultatifs suivants :
--verbose, -v, -vv, -vvv
- Le niveau de verbosité de sortie. Imprimera plus d'informations sur ce qui est en cours de traitement ou mis en cache. Sera envoyé à STDERR
pour ne pas interférer avec la sortie du rapport. la sortie text
aura également sous chaque erreur un lien vers la documentation de la règle et formatera l'emplacement de manière à ce que la plupart des IDE se convertissent en un lien pour ouvrir le fichier à la ligne de l'erreur lorsque vous cliquez dessus.--minimumpriority
- Le seuil de priorité de la règle ; les règles ayant une priorité inférieure à celle-ci ne seront pas utilisées.--reportfile
- Envoie la sortie du rapport au fichier spécifié, au lieu de la cible de sortie par défaut STDOUT
.--suffixes
- Chaîne d'extensions de nom de fichier de code source valides, séparées par des virgules, par exemple php, phtml.--exclude
- Chaîne de modèles séparés par des virgules et utilisés pour ignorer les répertoires. Utilisez des astérisques pour exclure par modèle. Par exemple *src/foo/*.php
ou *src/foo/*
--strict
- Signale également ces nœuds avec une annotation @SuppressWarnings.--ignore-errors-on-exit
- se terminera avec un code zéro, même en cas d'erreur.--ignore-violations-on-exit
- se terminera avec un code zéro, même si des violations sont détectées.--cache
- activera le cache des résultats. Sera par défaut .phpmd.result-cache.php
dans le répertoire de travail actuel.--cache-file
- en coopération avec --cache
remplacera le chemin du fichier de cache de résultats par défaut de .phpmd.result-cache.php
par le chemin de fichier donné.--cache-strategy
- définit la stratégie de mise en cache pour déterminer si un fichier est encore récent. Soit le contenu pour le baser sur le contenu du fichier, soit l'horodatage pour le baser sur l'horodatage modifié du fichier.--generate-baseline
- générera un phpmd.baseline.xml
pour les violations existantes à côté du fichier de définition de l'ensemble de règles. Les chemins de fichiers des violations seront relatifs au répertoire de travail actuel.--update-baseline
- supprimera toutes les violations d'un phpmd.baseline.xml
existant qui n'existe plus. Les nouvelles violations ne seront _pas_ ajoutées. Le chemin du fichier des violations sera relatif au répertoire de travail actuel.--baseline-file
- le chemin d'accès à un fichier XML de base personnalisé. S'il est absent, la valeur par défaut sera phpmd.baseline.xml
--color
- active la couleur dans la sortie, par exemple le rendu de texte affichera le nom de la règle en jaune et la description de l'erreur en rouge.--extra-line-in-excerpt
- spécifiez le nombre de lignes supplémentaires ajoutées à un extrait de code au format HTMLUn exemple de ligne de commande :
phpmd PHP/Depend/DbusUI xml codesize --reportfile "phpmd.xml" --suffixes "php,phtml"
Les options peuvent être avant ou après les arguments. Ils peuvent être séparés de leur valeur soit par un espace, soit par un signe égal ( =
). Ainsi, la syntaxe suivante est équivalente à la précédente :
phpmd --reportfile="phpmd.xml" --suffixes="php,phtml" Taille du code xml PHP/Depend/DbusUI
Les chaînes commençant par -
seront reconnues comme noms d'options. Si vous avez des arguments commençant par -
, définissez d'abord les options, puis utilisez --
pour marquer le début explicite ou la liste des arguments :
phpmd --reportfile "phpmd.xml" --suffixes "php,phtml" -- -foo/Folder xml taille du code
PHPMD utilise ce qu'on appelle des ensembles de règles qui configurent/définissent un ensemble de règles qui seront appliquées à la source testée. La distribution par défaut de PHPMD est déjà livrée avec quelques ensembles par défaut, qui peuvent être utilisés directement. Vous pouvez appeler l'outil cli de PHPMD avec le nom d'un ensemble pour appliquer cette configuration :
~ $ phpmd /chemin/vers/taille du code du texte source
Mais que se passe-t-il si vous souhaitez appliquer plusieurs règles définies par rapport à votre source ? Vous pouvez également transmettre une liste de noms d'ensembles de règles, séparés par une virgule à l'outil cli de PHPMD :
~ $ phpmd /path/to/source text codesize,unusedcode,naming
Vous pouvez également mélanger des fichiers d'ensembles de règles personnalisés avec des ensembles de règles intégrés :
~ $ phpmd /chemin/vers/codesize du texte source,/my/rules.xml
C'est ça. Avec ce comportement, vous pouvez spécifier votre propre combinaison d'ensembles de règles qui vérifieront le code source.
PHPMD vous permet également de spécifier plusieurs répertoires sources au cas où vous souhaiteriez créer une sortie pour certaines parties de votre code.
~ $ phpmd /path/to/code,index.php,/another/place/with/code texte taille du code
Ou utilisez le modèle global :
~ $ phpmd src/main/php/*/*/*{Renderer,Node}.php texte my/rules.xml
PHPMD peut également lire l'entrée standard stdin :
~ $ cat src/MonService.php | phpmd - envoyez un SMS à mon/rules.xml
Ainsi, le code PHP à analyser peut être généré par un autre programme et ne doit pas nécessairement être stocké dans un fichier.
L'outil de ligne de commande de PHPMD définit actuellement quatre codes de sortie différents.
--ignore-violations-on-exit
, qui donnera la valeur 0 même si des violations sont détectées.Pour le moment, PHPMD est livré avec les moteurs de rendu suivants :
Pour les projets existants, une ligne de base de violation peut être générée. Toutes les violations de cette référence seront ignorées lors d’inspections ultérieures.
L'approche recommandée serait un phpmd.xml
à la racine du projet. Pour générer le phpmd.baseline.xml
à côté :
~ $ phpmd /chemin/vers/texte source phpmd.xml --generate-baseline
Pour spécifier un chemin de fichier de référence personnalisé pour l'exportation :
~ $ phpmd /chemin/vers/source texte phpmd.xml --generate-baseline --baseline-file /chemin/vers/source/phpmd.baseline.xml
Par défaut, PHPMD recherchera phpmd.xml
à côté de phpmd.baseline.xml
. Pour remplacer ce comportement :
~ $ phpmd /chemin/vers/source texte phpmd.xml --baseline-file /chemin/vers/source/phpmd.baseline.xml
Pour nettoyer un fichier de référence existant et supprimer uniquement les violations qui ne sont plus existantes :
~ $ phpmd /chemin/vers/texte source phpmd.xml --update-baseline
Disponible dans le cadre de l’abonnement Tidelift.
Les responsables de PHPMD
et de milliers d'autres packages travaillent avec Tidelift pour fournir un support commercial et une maintenance pour les dépendances open source que vous utilisez pour créer vos applications. Gagnez du temps, réduisez les risques et améliorez la santé du code, tout en rémunérant les responsables des dépendances exactes que vous utilisez. Apprendre encore plus.
Si vous souhaitez contribuer à PHPMD, veuillez consulter le guide de contribution.