Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit c96ae9b

Browse files
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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
custom: https://bit.ly/CodelyTvPro

‎README.md

Lines changed: 60 additions & 0 deletions
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

Lines changed: 1 addition & 0 deletions
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

Lines changed: 12 additions & 0 deletions
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

Lines changed: 3 additions & 1 deletion
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

Lines changed: 69 additions & 63 deletions
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)

AltStyle によって変換されたページ (->オリジナル) /