StyleCI und PHPStorm

In PHP Storm kann man ja ein Reformat Code drüber laufen lassen. Macht es dann irgendwie Sinn nochmals StyleCI drüber laufen zu lassen, wenn doch schon PHP Storm den Code gesetzt hat und vor jedem Commit den Code sowieso reformatiert? Wenn man tatsächlich beides nutzen wollen würde, wie muss man da StyleCI konfigurieren, das StyleCI den Code von PHP Storm auch akzeptiert?

Ich meine Reformat ordnet den Code nur hübsch an, also wenn man Leerzeichen vergessen hat oder ein Zeichen in die nächste Zeile gehört.

StyleCI prüft den Code und schlägt auch einen anderen Codeblock vor, d.h. der Code wird ersetzt, bzw. zunächst vorgeschlagen, Reformat macht nur hübsch.

Uli

Gesendet von iPad mit Tapatalk

Kennst Du denn eine sinnvolle Möglichkeit beides zu nutzten? Also PHP Storm formartiert den Code und von mir aus schaut dann StyleCI noch mal drauf, habe nur keine Lust das dann PHP Storm beim nächsten Reformat wieder alles was StyleCI an Änderungen vorgenommen hat rückgänig macht. Die Frage wäre also was muss man in PHP Storm einstellen bzw. kann man StyleCI so konfigutieren das sich beide vertragen?

So weit bin ich noch nicht vorgedrungen.

Ich mache es so, wenn StyleCI etwas ändert und ich die comitte, bzw. merge, dann mache ich einen pull in PhpStorm, um die Änderungen zu übernehmen. Beim nächsten push, bzw. commit geht das Spiel wieder von vorne los.

Uli

Gesendet von iPhone mit Tapatalk

Das sehe ich auch so. StyleCI ist mehr als „Reformat Code“. Es beinhaltet zusätzlich „Inspect Code“.

StyleCI und PHP Reformat/Inspect verfolgen aber den gleichen Zweck: den Code auf einen definierten Style Guide zu prüfen. Der Unterschied ist, dass PHP es lokal macht, StyleCI dagegen nachgelagert im Rahmen eines Continuous Integration Checks. Damit ergänzen sich beide sehr gut.

Die Schwierigkeit ist jedoch, sich auf einen CodeStyle zu einigen. Hier fände ich es sehr hilfreich, wenn - gerade in Bezug auf die Modulentwicklung - das Symcon Team einen Vorschlag machen würde.

Irgendwo habe ich mal den folgenden Vorschlag abgegriffen:

preset: recommended

enabled:
 - concat_with_spaces
 - declare_strict_types
 
disabled:
 - trailing_comma_in_multiline_array
 - concat_without_spaces
 - blank_line_before_return
 - no_useless_return
 - simplified_null_return
 
finder:
  not-path:
    - "lib"

Ich weiß aber nicht mehr wo und auch nicht, ob er überhaupt noch aktuell ist. Die Presets sind übrigens hier beschrieben.

Wenn der StyleGuide festliegt, dann muss man „nur noch“ die PHPStorm Einstellungen entsprechend einstellen …

Gruß

Burkhard

Nun ich kenne mich mit Addons in PHP Strom nicht aus, aber ich fände es hilfreich wenn es da vielleicht im Rahmen des Add Ons in PHP Strom Hilfestellung gäbe, so das man dann nur noch einen vordefiniertes Scheme unter Code Style auswählen muss, der mit StyleCI kompatibel ist. So könnte man zumindest beides nutzten.

Also falls von Euch jemand ein passendes Schema in PHP Strom hat das mit StyleCI kompatibel ist würde ich mich freuen wenn er das exportieren könnte und teilen.Desweiteren müsste ich dann halt noch wissen wo genau man dann noch in StyleCI die passenden Einstellungen vornimmt für den Preset.

Hallo Fonzo,

das schwierigste Thema ist sicherlich, sich auf einen gemeinsamen Preset an Regeln in StyleCI zu einigen. Wenn ich es recht in Erinnerung habe, hat sich das Symcon Team auf den Preset ‚Recommended‘ festgelegt.

Da der Preset aber für IP-Symcon und die Zusammenarbeit mit PHPStorm nicht perfekt ist, müssen einzelne Abweichungen und Ergänzungen dazu (enabled, disabled, finder) in StyleCI definiert werden. Dann im nächsten Schritt sind die PHPStorm Settings daraufhin anzupassen. Das ist ein durchausaus kniffliger Vorgang, da in beiden Systemen die passenden Pendants gefunden werden müssen und beide manchmal unterschiedliche Vorstellungen von der Umsetzung haben.

Ich habe das für mich mal aufeinander abgestimmt und kann es gerne zur Verfügung stellen.

StyleCI

Ausgangssituation ist das Preset „recommended“ von StyleCi, ergänzt um einige wenige Einstellungen.

IP-Symcon StyleCI Basis Preset Recommended 1.0.txt (363 Bytes)

Die Einstellungen werden in StyleCI unter den Einstellungen des einzelnen Projekts in ‚Configure Repo‘ eingefügt.

PHPStorm

Im nächsten Schritt habe ich das CodeStyle Scheme und die Inspections Settings in PHPStorm angepasst. Hier die unter „Settings->Editor->CodeStyle“ bzw. „…Inspections“ zu importierenden XML-Dateien.

PHPStorm.zip (1.36 KB)

Ich hoffe, du kannst damit etwas anfangen.

Gruß

Burkhard

Vielen Dank erstmal, ich werde mal schauen ob ich damit zurecht komme.

Ich habe das Problem mit Deinem Preset das PHPStorm Sachen in " " setzt und StyleCI diese in ’ ’
setzten will. Weist Du zufällig an welcher Stelle man das in PHP Storm ändern kann, wird das bei Dir nicht bemängelt von StyleCI?

Welche Sachen? Strings:eek:
Hast du mal ein Beispiel?


 $this->SendDebug('blablub', 'Password: ' . $password, 0);

Da macht „“ ja gar keinen Sinn und da beschwert sich PHPStorm bei mir auch nicht. Das muss in deinen Einstellungen drin sein.

Da mir dieses Problem mit StyleCI ebenfalls nicht gefällt evaluiere ich gerade das PHP-CS-Fixer Projekt. Dort kann man Regeln definieren, die von PHPStorm oder Visual Studio Code direkt beim Speichern angewendet werden. Damit kann man sich immer sicher sein, dass der Stil stimmt. Hier meine aktuelle Version, falls jemand mal testen möchte: StylePHP/.php_cs at 3828f66b5e632e0596249f14a8ac9d1c5c8e97f3 · symcon/StylePHP · GitHub

Ich habe zusätzlich Beispielsweise das HomeKit Modul vom Travis-CI/StyleCI auf GitHub Actions umgebaut (welche letzte Woche als Beta angekündigt wurde (Link zum Blog)) wodurch man gar keinen externen Dienst mehr braucht. Schaut euch mal den .github/workflow Order an. Da ist quasi alles an „Magie“ drin. Github aktiviert die Checks dann vollautomatisch.

Da ich die .php_cs Datei nicht im Hauptorder habe, sonder als Submodul integriert habe, musste ich die Einstellung bei VSC so anpassen:

paresy

Guten Morgen Michael,

klingt sehr interessant, ich habe es mir heute morgen mal kurz angesehen, heute Abend habe ich mehr Zeit.

Es wird aber zusätzlich ein AWS Server oder Docker zum testen benötigt?

Uli

Gesendet von iPad mit Tapatalk

Hi Uli,

eigentlich gar nicht. Du musst dich bei github nur für die Actions Beta anmelden. (Siehe Link) Für öffentliche Repositories ist der Dienst dann kostenlos.

paresy

Hi Michael,

okay, habe mich mal für die beta registriert… muss jetzt warten :slight_smile:

Uli

Gesendet von iPhone mit Tapatalk

Falls mal wieder ein Webinar von Euch angeboten wird, wäre das Thema testen ja mal etwas, nur so als Vorschlag.

+1

Gesendet von iPhone mit Tapatalk

blöde Nachfrage, aber in den Regeln zum Einreichen für den Modul-store steht

Repositories mit Submodulen werden leider auch nicht unterstützt.

Bedeutet das, das der Modul-Store einfach die Submodule nicht mit übernimmt (das wäre ja kein Problem für die .style-Informationen, die man ja zur Laufzeit nicht braucht) oder störe sich der Modulestore daran, das es ein Submodul gibt?

Der php-cs-fixer scheint auf jede Fall sehr interessant zu sein, da man ihn auch manuell aufrufen kann, was mir sehr entgegen kommt, da ich keine IDE benutze sondern auf der Shell mit vi arbeite und jetzt erst nach einen git push die Refomatierung bekomme.

Prima
demel

Dieser Satz ist mittlerweile nicht mehr korrekt. Wir unterstützen Submodule im Store sofern diese nicht zu riesig sind. Ich glaube das haben wir noch nirgends offiziell angekündigt.

Genau das gefällt mir auch am CS Fixer… fast jede IDE kann den automatisch beim Speichern aufrufen.

paresy