Scoping the code

Natürlich benutzt man in einer idealen Welt im gesamten Code identischen CodeStyle. In der Realität kann es Situationen geben (z.B.: Migration von Legacy-Code in neue Struktur), in denen man in einem Projekt mehrere CodeStyles nutzt. Leider ist es in PhpStorm nicht möglich, verschiedene Bereiche des Codes unterschiedlich zu formatieren. Aber wenigstens kann man in unterschiedlichen Bereichen die Inspections gesondert schalten.

Mein Usecase hierfür sieht so aus: Allgemein importieren wir natürlich unsere Klassen, wer möchte schon \Some\Long\Namespace\with\bells\and\whistles\MyClass im Code stehen haben, wenn MyClass genügt? Eine Ausnahme machen wir in Konfigurationsdateien, z.B. in der ServiceManager-Config. Dort haben wir dann so was:

Das ist nicht schön so!

Um das zu beheben erzeuge ich zuerst mal einen Scope, der alle Config-Dateien beinhaltet:

Also: Alles was irgendwie in einem config-File liegt, soll in den Scope „Config“

Dann will ich die Inspection, die in meinem Code meckert für Config-Files muten. Um die nicht in der langen Inspection-Liste suchen zu müssen, drücke ich Alt-Enter auf angemeckertem Code. Mit Pfeil-Rechts öffne ich die Options zur Inspection und dann Enter auf „Edit inspection profile setting

Hier stelle ich „In All Scopes“ um auf „Config“.

Jetzt kann ich die „Severity“ je nach Scope anders konfigurieren.

Ich könnte die Inspection ganz ausschalten („Enable in file scope“ aus), habe mich aber für „No highlighting, only fix“ entschieden. So wird kein Fehler angezeigt, ich könnte den Quick-Fix aber immer noch mit Alt-Enter aufrufen. Just in case.

Da der CodeSniffer zusätzlich über zu lange Zeilen meckert schalte ich den in Config-Files die Warnings auf die Severity „Typo“ runter.

Hier muss man die Einstellung doppelt machen. UI Magic!

Das funktioniert so semi-gut – er zeigt gar nichts mehr an. In Config-Dateien bin ich damit fein. Resultat: Grüner Haken an der File!

About the author

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.