Skip to content

Commit e9c99cd

Browse files
authored
PHPCS: switch to phpcsdevcs (#259)
* Composer: require PHPCSDevCS * PHPCS: switch to using the PHPCSDev standard This commit: * Switches out the `PSR2` ruleset in favour of the `PHPCSDev` ruleset. The PHPCSDev ruleset checks the following: > * Compliance with PSR-12, with a few select exceptions. > * Use of camelCase variable and function names. > * Use of normalized arrays. > * All files, classes, functions and properties are documented with a docblock and contain the minimally needed information. > * A number of arbitrary additional code style and QA checks. > * PHP cross-version compatibility, while allowing for tokens back-filled by PHPCS itself. * For the PHP cross-version compatibility check, the minimum supported PHP version (`testVersion`) is set to PHP 5.4, in line with the `require`ment for this package per the `composer.json` file. * In contrast to `PHPCSDev`/PSR12, the ruleset for the VariableAnalysis package will: - Enforce tabs instead of spaces. - Disallow a blank line at the start of a class. Note: this complies with PSR12. PHPCSDev already had the blank line enforcement in place prior to this being forbidden via the PSR12 standard, which is why it excludes the rule. - Not enforce most documentation checks. - Not enforce assignment operator alignment. * Additionally, for the time being, the PSR12 line length guidelines will not be enforced. Enforcing those needs additional (manual) adjustments to the codebase which can be done at a later point in time. * Adds some extra documention to the ruleset. Refs: * https://github.com/PHPCSStandards/PHPCSDevCS * https://github.com/PHPCSStandards/PHPCSDevCS/blob/main/PHPCSDev/ruleset.xml * CS: various minor whitespace fixes Minimal changes needed to comply with the PSR12/PHPCSDev whitespace rules. Most notably this commit adds a blank line between a PHP open tag and the namespace declaration as per the PSR12 file header rules. * CS: minor code restructuring [1] The `VariableAnalysisSniff::processVariableAsSuperGlobal()` method checks a variable name against a fixed array of names using `in_array()`. To comply with the updated CS rules, each parameter in the function call would need to be placed on a new line and the function call itself as well, making this a very drawn out condition. By restructuring the code to declare the array prior to the `in_array()` function call, this is no longer needed. Additional notes: * I've also changed the `in_array()` call to a _strict_ comparison by adding the third parameter and setting it to `true`. * I've simplified the `return` by removing the unnecessary condition and double return statements. * The array could/should probably be declared as a property instead of within the function. I've not done so at this time, as it could also be considered to switch over to using the PHPCSUtils `Variables::isSuperglobal()` or `Variables::isSuperglobalName()` methods in the future. Ref: * https://www.php.net/manual/en/function.in-array.php * https://phpcsutils.com/phpdoc/classes/PHPCSUtils-Utils-Variables.html#property_phpReservedVars * CS: minor code restructuring [2] Similar to the previous commit, the `VariableAnalysisSniff::processVariableAsStaticDeclaration()` method declares an array within a function call. This commit moves the array declaration out of the function call and leverages a pre-defined array from the PHPCS native `Tokens` class to retrieve a number of the tokens (heredoc and nowdoc tokens). Note: this commit does **not** fix known shortcomings of this method as reported in 158 and 253. Co-authored-by: jrfnl <[email protected]>
1 parent 8f68af0 commit e9c99cd

18 files changed

+114
-34
lines changed

.github/workflows/test.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,8 @@ jobs:
147147

148148
- name: 'Composer: adjust dependencies'
149149
run: |
150-
# Remove dev dependencies which are not compatible with all supported PHP versions.
151-
composer remove --dev --no-update sirbrillig/phpcs-import-detection phpstan/phpstan
150+
# Remove dev dependencies which are not compatible with all supported PHP/PHPCS versions.
151+
composer remove --dev --no-update phpcsstandards/phpcsdevcs sirbrillig/phpcs-import-detection phpstan/phpstan
152152
composer require --no-update squizlabs/php_codesniffer:"${{ matrix.phpcs_version }}"
153153
154154
- name: Install Composer dependencies

Tests/BaseTestCase.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
23
namespace VariableAnalysis\Tests;
34

45
use PHPUnit\Framework\TestCase;

Tests/VariableAnalysisSniff/ArrayAssignmentShortcutTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
23
namespace VariableAnalysis\Tests\VariableAnalysisSniff;
34

45
use VariableAnalysis\Tests\BaseTestCase;

Tests/VariableAnalysisSniff/ArrowFunctionTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
23
namespace VariableAnalysis\Tests\VariableAnalysisSniff;
34

45
use VariableAnalysis\Tests\BaseTestCase;

Tests/VariableAnalysisSniff/ClosingPhpTagsTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
23
namespace VariableAnalysis\Tests\VariableAnalysisSniff;
34

45
use VariableAnalysis\Tests\BaseTestCase;

Tests/VariableAnalysisSniff/GlobalScopeTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
23
namespace VariableAnalysis\Tests\VariableAnalysisSniff;
34

45
use VariableAnalysis\Tests\BaseTestCase;

Tests/VariableAnalysisSniff/IfConditionTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
23
namespace VariableAnalysis\Tests\VariableAnalysisSniff;
34

45
use VariableAnalysis\Tests\BaseTestCase;

Tests/VariableAnalysisSniff/IssetTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
23
namespace VariableAnalysis\Tests\VariableAnalysisSniff;
34

45
use VariableAnalysis\Tests\BaseTestCase;

Tests/VariableAnalysisSniff/UnsetTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
23
namespace VariableAnalysis\Tests\VariableAnalysisSniff;
34

45
use VariableAnalysis\Tests\BaseTestCase;

Tests/VariableAnalysisSniff/UnusedFollowedByRequireTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
23
namespace VariableAnalysis\Tests\VariableAnalysisSniff;
34

45
use VariableAnalysis\Tests\BaseTestCase;

0 commit comments

Comments
 (0)