From 6dad9f736e6fbcf999227db9f611d5e68eaf01b0 Mon Sep 17 00:00:00 2001 From: Dmitriy Date: Wed, 29 Nov 2023 00:49:36 +0100 Subject: [PATCH] Add README.md with rule description and examples of work --- README.md | 62 +++++++++++++++++++++++++++++++++++++++++++++++ diff-example.png | Bin 0 -> 22440 bytes 2 files changed, 62 insertions(+) create mode 100644 README.md create mode 100644 diff-example.png diff --git a/README.md b/README.md new file mode 100644 index 0000000..eb3003c --- /dev/null +++ b/README.md @@ -0,0 +1,62 @@ +PHP Line Length Checker +======================= + +Custom rule for [PHP-CS-Fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer). +Checks that the length of lines does not exceed 120 characters. +Doesn't fix anything. + +### How it works +Searches for the line that exceed max length limit and mark it by adding comment: +``` # Line too long``` + +To see which lines violates the rule you should run the command with the`--diff` flag. + +DIff example: +

+ Diff Example +

+ +Works only for `check` command and `fix` command with `--dry-run` flag. Does nothing in other cases. + + +### Installation +Install package: +```console +composer require --dev gordinskiy/line-length-checker +``` +Register rule in PHP-CS-Fixer config file: +```php +registerCustomFixers([ + new Gordinskiy\LineLengthChecker\Rules\LineLengthLimit() + ]) +; +``` + +Enable rule in PHP-CS-Fixer config file: +```php +setRules([ + 'Gordinskiy/line_length_limit' => true, + ]) +; +``` + +### Configuration +Default limitation is 120, but it can be configured by `max_length` option: +```php +setRules([ + 'Gordinskiy/line_length_limit' => ['max_length' => 115], + ]) +; +``` diff --git a/diff-example.png b/diff-example.png new file mode 100644 index 0000000000000000000000000000000000000000..33f342ff94a0bc148168faa311c5e6907005ec16 GIT binary patch literal 22440 zcmb@u1yq#L_cl6+3JMBHiKHNnpoBvV4AMwk|99Q97Q;JxojK>c`#kS{_kPYkCs;-{9(LIKIH-cXaLe;?^WGC?k~9hpy*5mqg*f66H^EIq>`&2 zvwpiTa!*#mPdEs->prIZ^roGV@9t2>N}ipttq;UW*LHZeZ2z(rSBRPg4&{7Vrpbu_)hR=klMg&@ zpJ^mc2ZwBFZY2iYmF;%3fpCmOcV$U&)5GyHPk}EYk=i;go3QakUk77dHKE(i7~0p( zlo6LMlCY|yCa(6tv_$l&J}Y2alK%!>cb*guW$^qni?KHow?M5gS)!PRnuEG zL(?<4O=_G{VhT6YX>-Hak;SeCtJ3d=gUkNjBrToc;bPA`LdrF@n{kERviWp%@w~i< zFCg}}lud-byXr5_#47at_@;=xvV-3)19O^O-0s-fXe1fnxx4H@?EZk)Zgd7XrDY@Z zVm4viBNzX%A0fU%rMtYBAid&t9mfD4ZkQ zWU~>RU+q}E6#&oFztZD-^dtLs=K}G`Z%TN#cZk_ogeOS)pO%6cT904phMHv0Mo?6A zw%0bA$jp4(kVs*iSaMFZEx)aY=Pbpx%n8&pIq;HPjcX6AHv zbZ!K*b=4{{Ctf6WPXD-82M~$LTpyVly0u@(|nVC<}XzwwG$eAPo z-ZZ}eC1yo>zFR=Sf8myvr+wIYJEC^TtQQe9NX+y)N-tHEx?X{;ZpRP;%y0{=Vl3I3 zKl2Q6Y`ekX9}?u7)!N%h@C(W_4s>*A<1@E^xmqx@lCmGv{SLvOs67wO=3J*xBL+l| z)ipiCa?QSF;KPX0wpHniK8*GjYCUwUQTA75w1#(Z3Nn+OKH$$b?3QVGkT9`$ zK``1-x18ub+2kLv5rgLVSGe&cBJ6upgw6%6b-?oa$>nZB}rwxs=e zkb=U3c6WDIz(!rWvvVve=wqqLX$~IsIBE{{rAFv()nb9yu{HeBj8A4(xMZAy8sDF3 zAdm~72LfHM@d$P+O^PkF;w*RetHracu?eR98xgz&JKm!R*DI3tQ@1b!fVhH7218aCq)ZDm5Xs zjeq8?;w@g@-|h(pKL#wNNc@w+|5rxue_{v!yP|=Rop32WVas&0?U|0wTC^MQCYz4)4p~t`UpUyq$aA&u@9)ktOnV0h z<=B$nim?$n6SMQJt=8mi&T)~H>VC93nm@bT)O(`W+MyQwr{Qf;1yv0V#`wWEZE6ju zQXO@Vb|`SZPQNY^ukf!PqBF?QGvv{=hyWdpD?#)g<1XovQ-9(Nm(Zub*y4Y0a%m;9T@k65Gd}yRX91UB0saU%YevySn~wPUW{d6ap)()T=hw zA+BpBK=1RU3(|CN3vr41irijO1zmIH>V2G+>r~c-IUx1Zo(|*g*dEXo&Jz4oQX^== zmU5rG+1&Glug>Ri90-B>EaW77R9%^Csu42MPD^1vDvPh%>|bh`Z?SgN!}pU$Fb1^x zJR05=IJ()=;n4By?IcaB^DvJtDXOjI0=>_Fc!7VXlTlnlIkq3cVtqU5H

GV8l#O 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 literal 0 HcmV?d00001