HervéRenault.fr

Logo de PHP Mess Detector

Ignorer temporairement une règle de phpmd

Normalement, il ne faut pas. Mais, parfois…

Il suffit d'ajouter au-dessus de la ligne ou méthode problématique un commentaire de la forme :

    /** @SuppressWarnings(PHPMD.ExitExpression) */
    public function maMethode()
    {
        faitQuelqueChose();

        wp_redirect('quelque-part');
        // XXX WordPress oblige 🤷 https://developer.wordpress.org/reference/functions/wp_redirect/
        exit;
    }

Sans ce commentaire (au format doc, avec deux astérisques au début) on aurait l'erreur suivante :

exemple.php:11	The method maMethode() contains an exit expression.

Pour trouver l'identifiant de la règle à ignorer, identifiant que phpmd n'affiche pas au format texte, il faut exécuter phpmd avec le paramètre xml ou json :

$ phpmd exemple.php xml cleancode,codesize,design,unusedcode
<?xml version="1.0" encoding="UTF-8" ?>
<pmd version="@project.version@" timestamp="2021-10-19T16:12:21+00:00">
  <file name="exemple.php">
    <violation beginline="11" endline="11" rule="ExitExpression" ruleset="Design Rules" externalInfoUrl="https://phpmd.org/rules/design.html#exitexpression" priority="1">
      The method maMethode() contains an exit expression.
    </violation>
  </file>
</pmd>
$ phpmd exemple.php json cleancode,codesize,design,unusedcode
{
    "version": "@project.version@",
    "package": "phpmd",
    "timestamp": "2021-10-19T16:13:30+00:00",
    "files": [
        {
            "file": "exemple.php",
            "violations": [
                {
                    "beginLine": 11,
                    "endLine": 11,
                    "package": null,
                    "function": null,
                    "class": null,
                    "method": null,
                    "description": "The method maMethode() contains an exit expression.",
                    "rule": "ExitExpression",
                    "ruleSet": "Design Rules",
                    "externalInfoUrl": "https:\/\/phpmd.org\/rules\/design.html#exitexpression",
                    "priority": 1
                }
            ]
        }
    ]
}