Wie kann ich PHPCS-Warnungen mit Kommentaren unterdrücken?

Lesezeit: 3 Minuten

Benutzer-Avatar
Gremo

Mein TestMyClass.php hat zwei Klassendefinitionen in derselben Datei (Unit-Testing-Klasse), und PHP Code Sniffer beschwert sich darüber Jede Klasse muss sich in einer eigenen Datei befinden. Wie kann ich diese Warnung unterdrücken?

class MyClassImpl implements MyInterface
{
    // ...
}

class MyClassTest extends \PHPUnit_Framework_TestCase
{
    // ...
}

Sie können PHP_CodeSniffer dazu bringen, bestimmte Dateien oder Zeilen in einer Datei mithilfe von Kommentaren zu ignorieren: https://github.com/squizlabs/PHP_CodeSniffer/wiki/Advanced-Usage#ignoring-files-and-folders

In diesem Fall wird der Fehler in Ihrer zweiten Klassendefinition generiert, sodass Sie Ihre zweite Definition wie folgt schreiben müssen:

// @codingStandardsIgnoreStart
class MyClassTest extends \PHPUnit_Framework_TestCase
{
    // @codingStandardsIgnoreEnd
    // ...
}

Sie können sich aber auch dafür entscheiden, die gesamte Datei einfach zu ignorieren, wenn sie nicht überprüft werden soll, entweder mit dem @codingStandardsIgnoreFile-Kommentar oder durch Angabe von Ausschlüssen in der Befehlszeile (Informationen finden Sie unter dem vorherigen Link).

Wenn Sie feststellen, dass Sie dies häufig tun und Ihrem Code keine Kommentare hinzufügen möchten, können Sie auch Ihren eigenen benutzerdefinierten Codierungsstandard erstellen. Angenommen, Sie verwenden derzeit den PSR2-Standard, erstellen Sie eine XML-Datei (z. B. mystandard.xml) und fügen Sie den folgenden Inhalt ein:

<?xml version="1.0"?>
<ruleset name="MyStandard">
 <description>My custom coding standard.</description>
 <rule ref="PSR2" />
 <rule ref="PSR1.Classes.ClassDeclaration.MultipleClasses">
   <severity>0</severity>
 </rule>
</ruleset>

Führen Sie dann PHP_CodeSniffer wie folgt aus: phpcs --standard=/path/to/mystandard.xml /path/to/code

Wenn Sie Ihren eigenen Regelsatz haben, können Sie viele Dinge tun, einschließlich des Änderns von Fehlermeldungen, des Änderns des Schweregrads oder des Typs einer Nachricht, einschließlich der Überprüfung von anderen Standards, und des Festlegens globaler Ignorierregeln. Mehr Infos hier: https://github.com/squizlabs/PHP_CodeSniffer/wiki/Annotated-ruleset.xml

  • +1 zum Überspringen der Testdateien. Oder vielleicht könnten Sie die verwenden PHPUnitStandard für diejenigen 🙂

    – cmbuckley

    17. April 2013 um 23:19 Uhr


  • Von dem Dokumentation: Sie können auch eine einzelne Zeile mit ignorieren @codingStandardsIgnoreLine Kommentar. Dieser Kommentar ignoriert die Zeile, in der sich der Kommentar befindet, und die folgende Zeile.

    – JSmitty

    9. Juni 2017 um 14:48 Uhr


  • Beachten Sie, dass sich die Syntax jetzt geändert hat. Das @codingStandards Notation ist veraltet und wurde durch ersetzt //phpcs:disable usw. Die Originallink oben funktioniert noch und diskutiert die neue Syntax.

    – Spudley

    27. September 2018 um 15:40 Uhr


Benutzer-Avatar
Piscator

Mit den folgenden Kommentaren können Sie beliebige Teile einer Datei ignorieren.

Ignorieren Sie alle Sniffs für die Datei:

<?php
// phpcs:ignoreFile

Nur die aktuelle und nächste Zeile ignorieren:

// phpcs:ignore
public function store($myArray)

Ignoriere die aktuelle Zeile:

public function store($myArray) // phpcs:ignore

Ignorieren Sie eine bestimmte Anzahl von Zeilen in einer Datei:

// phpcs:disable
public function store($myArray): void
{
    if (count($myArray) > 3) {
        // Humongous amount of legacy code you don't want to look at
    }

    return;
}
// phpcs:enable

Mit // phpcs:ignore und // phpcs:disable Sie können auch angeben, welche Nachrichten, Sniffs, Kategorien oder Standards Sie deaktivieren möchten, zum Beispiel:

// phpcs:ignore Squiz.Arrays.ArrayDeclaration.SingleLineNotAllowed
$foo = [1,2,3];

Wenn Sie mehr zu diesem Thema lesen möchten, besuchen Sie die wiki. Einige der Beispiele wurden von dort übernommen.

Benutzer-Avatar
Werden

Das @codingStandards Syntax ist ab Version veraltet 3.2.0verwenden phpcs stattdessen.

Einige Beispiele:

// phpcs:disable
// phpcs:ignore
// phpcs:enable

Weitere Informationen finden Sie auf dieser Seite: https://github.com/squizlabs/PHP_CodeSniffer/wiki/Advanced-Usage#ignoring-parts-of-a-file

Obwohl ich die Top-Antwort mag, würde ich diese auch vorschlagen, wenn Sie sich nicht für bestimmte Dateien interessieren.

Führen Sie diesen Befehl aus:

phpcs --config-set show_warnings 0

wie hier zu sehen:
https://github.com/squizlabs/PHP_CodeSniffer/wiki/Configuration-Options#hiding-warnings-by-default

Ein Hinweis zum Festlegen von Konfigurationen auf diese Weise ist, dass sie gelöscht werden, wenn Sie den Herstellerordner löschen oder die Bibliothek aktualisieren, und Sie sie erneut festlegen müssen.

1351510cookie-checkWie kann ich PHPCS-Warnungen mit Kommentaren unterdrücken?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy