Einbetten des Codestils in die Entwicklung

    Guten Tag,% username%

    Ich möchte meine erfolgreichen Erfahrungen bei der Implementierung der automatischen Code-Style-Überprüfung im Projekt mitteilen und mitteilen, welcher Rake kommen würde. Veröffentlichen Sie die OpenSource-Community-Tools, die erstellt wurden, um das Problem zu lösen.

    Ein wenig über unser Projekt: Eine PHP-Site, die sich in einem 2-GBit-Git-Repository befindet, besteht aus 20.000 PHP-Dateien. Das Projekt ist 10 Jahre alt. Derzeit haben wir 15 Entwickler. Für die Codeüberprüfung verwenden wir Atlassian Stash . Wir führen die gesamte Entwicklung in separaten Filialen durch, die nach Durchlaufen der Codeüberprüfung in den Master eingegossen und auf das Produkt

    angewendet werden. Warum sich mit Codestilen beschäftigen?
    Die Antwort ist für mich einfach: Der Code wird einmal geschrieben und dann im Laufe der Jahre von Dutzenden von Menschen gelesen. Daher sind die Kosten für die Pflege des Codes um ein Vielfaches höher als die Kosten für das Schreiben. Und wenn ja - dann ist es wert, eine wenig Zeit und es ist niemand zu Formatcode nach dem Standard

    ersten , was wir stießen auf: Welcher Standard wählen? Sie haben dies getan - ihren eigenen Standard geschaffen, der von Symfony geerbt wurde, und dort Änderungen vorgenommen, die unserem Schönheitsbegriff entsprechen. Wir haben in unserem Projekt einfach einige Regeln als unmöglich für alte Klassen ausgegeben (zum Beispiel, dass sich jede Klasse im Namespace befinden sollte). Glücklicherweise bietet phpcs gute Möglichkeiten zur Anpassung des Code-Stils.

    Zweitens: Warum den Code überprüfen? Welche Dienstprogramme gibt es dafür? Nach einer kurzen Suche bei phpcs gestoppt, da es die native Unterstützung in PhpStorm

    Drittens: was zu überprüfen? Unser gesamtes Projekt ist riesig, ein Jahrzehnt wurde von vielen Generationen von Entwicklern geschrieben. Fehler in den dortigen Stilen werden einfach nicht gemessen. Aus diesem Grund haben sie beschlossen, nur die Zeilen zu überprüfen, die der Entwickler im Rahmen dieser Aufgabe geändert hat.

    Drittens: Wie kann der Code tatsächlich überprüft werden?
    Es gab verschiedene Möglichkeiten
    • Wie Sie wissen, unterstützt Git Server-Hooks. Sie können die Stile auf der Serverseite überprüfen und erst ausführen lassen, wenn die Fehler behoben sind. Aber ich mochte diesen Ansatz nicht, da das Pushen mit git in der Konsole nicht sehr praktisch ist :) Außerdem ist es unmöglich, eine Problemumgehung vorzunehmen, wenn es nicht möglich ist, alle Fehler in den Stilen zu beheben (zum Beispiel müssen Sie den Namen der Methode, die verwendet wird, umbenennen) verwendet in 100500 Dateien)
    • Nach einigem Überlegen entschieden sie, dass der Roboter die Pull-Anfrage für die Fehler, die in den vom Entwickler zu korrigierenden Stilen gefunden wurden, am besten abbestellen sollte. Gleichzeitig ließen wir in der ersten Phase zu, dass einige Fehler nicht behoben wurden. Wenn es einer umfassenden Überarbeitung bedurfte, erarbeiteten wir für uns geeignete Überprüfungsregeln. Das Tool war also geboren - phpcs-stash


    Ein wenig über die Architektur des Tools:
    1) Wenn Webhook auf einen Zweig pusht, ruft es phpcs-stash ab und übergibt den Namen des Zweigs, auf den
    gepusht wurde (holt sie auch per API aus dem Stash), prüft Styles und meldet, wo er einen Fehler gefunden hat. Falls keine Fehler vorliegen, wird die Überprüfung bewertet. Der Roboter ist nur in den geänderten Zeilen abgemeldet.
    Das Ergebnis sieht folgendermaßen aus:

    3) Wenn Sie erneut drücken, überprüft der Roboter alle Überprüfungen erneut und entfernt Kommentare zu den korrigierten Fehlern.

    Für Liebhaber von Bildern:


    Mit diesem Ansatz haben wir weiterhin die Möglichkeit, die native Integration zwischen Stash und Jira zu konfigurieren (z. B. das Schließen der Task zu verbieten, wenn die Codeüberprüfung nicht vom Roboter genehmigt wurde). Und es gibt eine großartige Gelegenheit, zu analysieren, welche Fehler am häufigsten auftreten, um die Überprüfungsregeln zu ändern:

    Da das Überprüfungssystem nichts anderes als Atlassian Stash kennt, wurde beschlossen, es in Open Source auszurichten. Ursprünglich wurde es nur für PHP erstellt, aber die Jungs aus der benachbarten Abteilung mochten es und sie unterstützten die Überprüfung von C ++

    - Code.Für schnelles Feedback wird phpstorm verwendet, das sich in phpcs integrieren lässt. Es sieht so aus:


    Was kommt als nächstes?

    Es gibt eine Idee, den Prüfer interaktiv zu gestalten: Um auf den "Fix" -Kommentar des Roboters reagieren zu können, würde der Roboter den Fehler selbst beheben, wenn er behoben werden kann (z. B. ein fehlendes Leerzeichen). Leider habe ich keine Tools gefunden, die Stile in einer bestimmten Zeile korrigieren können. Wenn die Community es mir sagt, freue ich mich

    Links:

    Jetzt auch beliebt: