Skip to content
  • Sponsor CodelyTV/php-coding_style-codely

  • Notifications You must be signed in to change notification settings
  • Fork 2

Commit c96ae9b

Browse files
committedOct 23, 2023
feat: improve config
1 parent 521ca89 commit c96ae9b

File tree

6 files changed

+146
-64
lines changed

6 files changed

+146
-64
lines changed
 

‎.github/FUNDING.yml

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
custom: https://bit.ly/CodelyTvPro

‎README.md

+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
<p align="center">
2+
<a href="https://codely.com">
3+
<img src="https://user-images.githubusercontent.com/10558907/170513882-a09eee57-7765-4ca4-b2dd-3c2e061fdad0.png" width="300px" height="92px"/>
4+
</a>
5+
</p>
6+
7+
<h1 align="center">
8+
✍️ Codely's Easy Coding Standards configuration
9+
</h1>
10+
11+
<p align="center">
12+
<a href="https://github.com/CodelyTV"><img src="https://img.shields.io/badge/CodelyTV-OS-green.svg?style=flat-square" alt="Codely Open Source"/></a>
13+
<a href="https://pro.codely.com"><img src="https://img.shields.io/badge/CodelyTV-PRO-black.svg?style=flat-square" alt="CodelyTV Courses"/></a>
14+
</p>
15+
16+
<p align="center">
17+
Opinionated linting configuration considering modern PHP best practices and providing consistency. 👌
18+
<br />
19+
<br />
20+
Take a look, play and have fun with this.
21+
<a href="https://github.com/CodelyTV/php-coding_style-codely/stargazers">Stars are welcome 😊</a>
22+
</p>
23+
24+
## 👀 How to use
25+
26+
1. Install the dependency
27+
```sh
28+
composer require --dev codelytv/coding-style
29+
```
30+
2. Add it to your `ecs.php` file:
31+
```php
32+
use Codelytv\CodingStyle\CodelyRules;
33+
use Symplify\EasyCodingStandard\Config\ECSConfig;
34+
35+
return function (ECSConfig $ecsConfig): void {
36+
$ecsConfig->paths([__DIR__ . '/src',]);
37+
38+
$ecsConfig->sets([CodelyRules::CODING_STYLE]);
39+
};
40+
```
41+
3. Execute it:
42+
```sh
43+
./vendor/bin/ecs check
44+
```
45+
46+
## 🤔 What it does
47+
48+
- Lints PHP using PSR-12
49+
- Extends some config (you can see all the rules [here](src/coding_style.php))
50+
- Use tabs to indent ([reason](https://www.youtube.com/watch?v=yD2T42zsP7c))
51+
52+
## 👌 Codely Code Quality Standards
53+
54+
Publishing this package we are committing ourselves to the following code quality standards:
55+
56+
- 🤝 Respect **Semantic Versioning**: No breaking changes in patch or minor versions
57+
- 🤏 No surprises in transitive dependencies: Use the **bare minimum dependencies** needed to meet the purpose
58+
- 🎯 **One specific purpose** to meet without having to carry a bunch of unnecessary other utilities
59+
- 📖 **Well documented Readme** showing how to install and use
60+
- ⚖️ **License favoring Open Source** and collaboration

‎composer.json

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"description": "PHP Coding Style rules we use in Codely",
44
"type": "library",
55
"keywords": ["static analysis", "code style"],
6+
"license": "AGPL-3.0-or-later",
67
"autoload": {
78
"psr-4": {
89
"Codelytv\\CodingStyle\\": "src/"

‎ecs.php

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
use Codelytv\CodingStyle\CodelyRules;
6+
use Symplify\EasyCodingStandard\Config\ECSConfig;
7+
8+
return function (ECSConfig $ecsConfig): void {
9+
$ecsConfig->paths([__DIR__ . '/src',]);
10+
11+
$ecsConfig->sets([CodelyRules::CODING_STYLE]);
12+
};

‎src/CodelyRules.php

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
<?php
22

3+
declare(strict_types=1);
4+
35
namespace Codelytv\CodingStyle;
46

57
final class CodelyRules
68
{
7-
public const CODING_STYLE = __DIR__ . '/coding_style.php';
9+
public const CODING_STYLE = __DIR__ . '/coding_style.php';
810
}

‎src/coding_style.php

+69-63
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
<?php
22

3+
declare(strict_types=1);
4+
35
use PhpCsFixer\Fixer\ArrayNotation\ArraySyntaxFixer;
46
use PhpCsFixer\Fixer\ArrayNotation\TrimArraySpacesFixer;
57
use PhpCsFixer\Fixer\Basic\SingleLineEmptyBodyFixer;
@@ -52,70 +54,74 @@
5254
use Symplify\EasyCodingStandard\Config\ECSConfig;
5355
use Symplify\EasyCodingStandard\ValueObject\Set\SetList;
5456

57+
return static function (ECSConfig $ecsConfig): void {
58+
$ecsConfig->sets([SetList::PSR_12]);
5559

56-
return static function (ECSConfig $ecsConfig) : void {
57-
$ecsConfig->sets([SetList::PSR_12]);
60+
$ecsConfig->rules([
61+
// Imports
62+
NoUnusedImportsFixer::class,
63+
FullyQualifiedStrictTypesFixer::class,
64+
GlobalNamespaceImportFixer::class,
65+
NoLeadingImportSlashFixer::class,
66+
// Arrays
67+
TrimArraySpacesFixer::class,
68+
// Blank lines
69+
BlankLineAfterStrictTypesFixer::class,
70+
NoBlankLinesAfterClassOpeningFixer::class,
71+
// Spacing
72+
SingleLineEmptyBodyFixer::class,
73+
CastSpacesFixer::class,
74+
TypeDeclarationSpacesFixer::class,
75+
TypesSpacesFixer::class,
76+
// Casing
77+
ClassReferenceNameCasingFixer::class,
78+
LowercaseStaticReferenceFixer::class,
79+
MagicMethodCasingFixer::class,
80+
NativeFunctionCasingFixer::class,
81+
NativeFunctionTypeDeclarationCasingFixer::class,
82+
// Architecture
83+
FinalClassFixer::class,
84+
FinalPublicMethodForAbstractClassFixer::class,
85+
ProtectedToPrivateFixer::class,
86+
VisibilityRequiredFixer::class,
87+
DateTimeImmutableFixer::class,
88+
NoUselessElseFixer::class,
89+
// Operator
90+
AssignNullCoalescingToCoalesceEqualFixer::class,
91+
NoUselessConcatOperatorFixer::class,
92+
NoUselessNullsafeOperatorFixer::class,
93+
ObjectOperatorWithoutWhitespaceFixer::class,
94+
TernaryToElvisOperatorFixer::class,
95+
TernaryToNullCoalescingFixer::class,
96+
// Testing
97+
PhpUnitConstructFixer::class,
98+
PhpUnitDedicateAssertFixer::class,
99+
PhpUnitDedicateAssertInternalTypeFixer::class,
100+
PhpUnitExpectationFixer::class,
101+
// Other
102+
LineLengthFixer::class,
103+
NoNullPropertyInitializationFixer::class,
104+
NoUnneededFinalMethodFixer::class,
105+
SelfAccessorFixer::class,
106+
SelfStaticAccessorFixer::class,
107+
NoUnneededControlParenthesesFixer::class,
108+
NoUnneededCurlyBracesFixer::class,
109+
SimplifiedIfReturnFixer::class,
110+
TrailingCommaInMultilineFixer::class,
111+
DeclareStrictTypesFixer::class,
112+
StrictComparisonFixer::class,
113+
SingleQuoteFixer::class,
114+
StatementIndentationFixer::class,
115+
]);
58116

59-
$ecsConfig->rules([
60-
// Imports
61-
NoUnusedImportsFixer::class,
62-
FullyQualifiedStrictTypesFixer::class,
63-
GlobalNamespaceImportFixer::class,
64-
NoLeadingImportSlashFixer::class,
65-
// Arrays
66-
TrimArraySpacesFixer::class,
67-
// Blank lines
68-
BlankLineAfterStrictTypesFixer::class,
69-
NoBlankLinesAfterClassOpeningFixer::class,
70-
// Spacing
71-
SingleLineEmptyBodyFixer::class,
72-
CastSpacesFixer::class,
73-
TypeDeclarationSpacesFixer::class,
74-
TypesSpacesFixer::class,
75-
// Casing
76-
ClassReferenceNameCasingFixer::class,
77-
LowercaseStaticReferenceFixer::class,
78-
MagicMethodCasingFixer::class,
79-
NativeFunctionCasingFixer::class,
80-
NativeFunctionTypeDeclarationCasingFixer::class,
81-
// Architecture
82-
FinalClassFixer::class,
83-
FinalPublicMethodForAbstractClassFixer::class,
84-
ProtectedToPrivateFixer::class,
85-
VisibilityRequiredFixer::class,
86-
DateTimeImmutableFixer::class,
87-
NoUselessElseFixer::class,
88-
// Operator
89-
AssignNullCoalescingToCoalesceEqualFixer::class,
90-
NoUselessConcatOperatorFixer::class,
91-
NoUselessNullsafeOperatorFixer::class,
92-
ObjectOperatorWithoutWhitespaceFixer::class,
93-
TernaryToElvisOperatorFixer::class,
94-
TernaryToNullCoalescingFixer::class,
95-
// Testing
96-
PhpUnitConstructFixer::class,
97-
PhpUnitDedicateAssertFixer::class,
98-
PhpUnitDedicateAssertInternalTypeFixer::class,
99-
PhpUnitExpectationFixer::class,
100-
// Other
101-
LineLengthFixer::class,
102-
NoNullPropertyInitializationFixer::class,
103-
NoUnneededFinalMethodFixer::class,
104-
SelfAccessorFixer::class,
105-
SelfStaticAccessorFixer::class,
106-
NoUnneededControlParenthesesFixer::class,
107-
NoUnneededCurlyBracesFixer::class,
108-
SimplifiedIfReturnFixer::class,
109-
TrailingCommaInMultilineFixer::class,
110-
DeclareStrictTypesFixer::class,
111-
StrictComparisonFixer::class,
112-
SingleQuoteFixer::class,
113-
StatementIndentationFixer::class,
114-
]);
117+
$ecsConfig->ruleWithConfiguration(ArraySyntaxFixer::class, ['syntax' => 'short']);
118+
$ecsConfig->ruleWithConfiguration(LineLengthFixer::class, [LineLengthFixer::LINE_LENGTH => 120]);
119+
$ecsConfig->ruleWithConfiguration(
120+
YodaStyleFixer::class,
121+
['equal' => false, 'identical' => false, 'less_and_greater' => false]
122+
);
123+
$ecsConfig->ruleWithConfiguration(PhpUnitMethodCasingFixer::class, ['case' => PhpUnitMethodCasingFixer::SNAKE_CASE]);
124+
$ecsConfig->ruleWithConfiguration(OrderedTypesFixer::class, ['null_adjustment' => 'always_last']);
115125

116-
$ecsConfig->ruleWithConfiguration(ArraySyntaxFixer::class, ['syntax' => 'short']);
117-
$ecsConfig->ruleWithConfiguration(LineLengthFixer::class, [LineLengthFixer::LINE_LENGTH => 120]);
118-
$ecsConfig->ruleWithConfiguration(YodaStyleFixer::class, ['equal' => false, 'identical' => false, 'less_and_greater' => false]);
119-
$ecsConfig->ruleWithConfiguration(PhpUnitMethodCasingFixer::class, ['case' => PhpUnitMethodCasingFixer::SNAKE_CASE]);
120-
$ecsConfig->ruleWithConfiguration(OrderedTypesFixer::class, ['null_adjustment' => 'always_last']);
126+
$ecsConfig->indentation('tab');
121127
};

0 commit comments

Comments
 (0)
Please sign in to comment.