Jaký používáte nástroj pro sjednocení coding standards v týmu? rubrika: Programování: PHP

4 chikeet
položil/-a 2.3.2018

Ahoj, hledám nástroj pro sdílení a sjednocení coding standards v týmu (obecný nebo zaměřený na PHP). Co by měl splňovat:

1) Integrovatelný do PhpStorm (ideálně i do NetBeans)
2) Umožňovat konfiguraci na projekt (když má programátor další projekty - své nebo pro jiné klienty - ať si je píše, jak chce)
3) Automatické přeformátování při uložení souboru
4) Manuální přeformátování adresáře
5) Definovat i takové věci, jako např. že otevírací složená závorka bude u tříd a metod na novém řádku, ale u if, foreach apod. na stejném
6) Jednoduše exportovatelný (ideálně v jednom souboru, který bude na gitu)
7) Rozumně rozšířený a podporovaný (ne obskurní projekt závislý na jednom člověku s těžko předvídatelnou budoucností)

Cílem nasazení nástroje má být to, abychom měli jednotný coding standard, aniž bychom na to museli neustále myslet a kontrolovat, jestli náhodou nemáme někde místo tabů mezery a podobně.

Existuje něco takového, nebo hledám bílého jednorožce? Dobře se mi jevil EditorConfig, ale ten neumí právě ta nastavení týkající se složených závorek a obecně jsou configy velkých projektů dost stručné na to, co hledám.

odkaz
6 Tomáš Votruba
odpověděl/-a 3.3.2018

Mé oblíbené téma :) Disclaimer: jsem autor EasyCodingStandardu, který zjednodušuje API dvou zmíněných nástrojů a využívá oba jejich sety.

K tvým dotazům:

1) Proč to potřebuješ? Dnes tyto programují za tebe. Už nepřidělávají práci v editoru, tím, že vývojář přejíždí přes všechny vlnovky co najde a luští, co ta error message asi znamená. Něco jako učitelka, co ti podrthne všechny chyby v diktátu vs. autocorrect, který to udělá za tebe.

2) Ano

3) Jde to udělat, ale doporučuju to dělat spíše ručně před commitem, nebo max. pre-commit hookem. Automatizace je fajn, ale tvorba WTF na uložení souborů už ne.

4) Co tím myslíš přesně? Že to fixne všechny coding standard chyby v určitém adresáři? Pokud jo, tak ano

5) Přesně tyhle "custom" styly sežerou více času než nastavení všech ostatních 90 pravidel. V jedné firmě, kde jsem coding standard pomáhal nasazovat se to na 3 měsíci zaseklo jen na tomto pravidlu. Pak kluci dospěli k tomu, že to zkusí dělat standartně a udělali si týdenní experiment, jestli to zvládnout. A za týden byl PR konečně úspěšně uzavřen :)

6) Jasný, to je základ

7) Takový není, vždycky je jeden maintainer, který se o projekt stará. Spíš mě zajímá, proč zrovna takovýto požadavek? Z čeho máš obavy?

EasyCodingStandard

Používají ho:

First Run

  1. Doporučuju mrknout do .travis.yml, kde najdeš instalaci.

  2. Pak stačí vytvořit config s pravidly

  3. A spustit ho

Nebo mrkni do README :)

Těším se na další dotazy

Komentáře

  • chikeet : Díky, to vypadá dobře. 1) Autocorrect mě trochu děsí, pokud nevím, co a proč mi přesně opraví (pokud se mi automaticky děje něco, co neumím moc předvídat). Což indikuje, že mám nejspíš sama v tomhle trochu rezervy, na kterých by stálo za to zapracovat. 3) Díky za feedback, snažím se najít nějakou rozumnou míru automatizace, která nebude klást na lidi nereálné nároky, co se týká pozornosti. 4) Přesně tak. 5) Když těch custom věcí bude jen pár, snad to půjde zvládnout i bez automatizace - viz 3. 7) Jsme maličká firma a každý režijní náklad dost zvažujeme, hlavně dost trvá si na režijní záležitosti najít čas mezi vývojem. Ale je fakt, že jistotu, že nám něco vydrží napořád, nebudem mít prostě nikdy. 5.3.2018
  • Tomáš Votruba : 1) 3) 5) 7) Chápu, jak to myslíš. Zkus začít s 1 pravidlem - nejjednodušší je short array fix: https://github.com/Symplify/Symplify/blob/master/packages/EasyCodingStan... Až v tom budeš komfortní, zkus druhé, co ti padne do oka. Obvykle to, které u code review nejčastěji komentuješ. Sám bych neskákal dál, kdybych zkoušel nový tool :) 5.3.2018
  • Tomáš Votruba : Jestli budeš chtít obejít porodní bolesti, tady je kontakt: https://www.tomasvotruba.cz/contact/ Rad tě/vás zaškolím, zdarma 5.3.2018
  • Kit : To nahrazování [] za array() se mi líbí, už jsem si ho vyzkoušel naostro. 5.3.2018
  • rmaslo : @Kit: To by se mi asi moc nelíbilo, já to střídám, aby se mi u vnořených nepletly závorky. Střídám ve smyslu: $arr = ['a'=>array('b'=>[$x])] 10.3.2018
  • Tomáš Votruba : @rmaslo: Coding standards je hlavně pro týmy, aby si lidi rozuměly a kód nevypadal jak od 50 různých lidí. Jinak na to, co píšeš, je taky pravidlo, které ti to zpřehlední ještě líp: https://github.com/Symplify/CodingStandard#indexed-php-arrays-should-hav... 10.3.2018
  • Kit : @rmaslo: Vnořování polí se vyhýbám, není tedy co střídat a neplete se to. 10.3.2018
  • Kit : @Tomáš Votruba: Na uvedeném odkazu jsem to pravidlo nenašel. Pomůžeš mi? 10.3.2018
  • Tomáš Votruba : @Kit: Vede na něj přímo ten odkaz - je to kotva, líp už to nejde. Odsazuje elementy veškeré elementy asociativního pole na nový řádek. 10.3.2018
  • Kit : Zajímavé, teď mi už ten odkaz funguje. Zkusím, jestli to umí i php-cs-fixer, protože tohle pravidlo se mi líbí a používám ho. 10.3.2018
  • Tomáš Votruba : @Kit: Občas to blbne na mobilu. Tohle je zrovna Fixer, takže ho tam můžeš jednoduše přidat. 10.3.2018

Pro zobrazení všech 3 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.