2017 © Pedro Peláez
 

library coding-standard

Coding standard used in LMC projects

image

lmc/coding-standard

Coding standard used in LMC projects

  • Thursday, July 19, 2018
  • by OndraM
  • Repository
  • 7 Watchers
  • 7 Stars
  • 4,721 Installations
  • PHP
  • 9 Dependents
  • 0 Suggesters
  • 3 Forks
  • 2 Open issues
  • 6 Versions
  • 130 % Grown

The README.md

Alma Career Czechia Coding Standard for PHP

Latest Stable Version, (*1)

PHP coding standard used in Alma Career Czechia (formerly LMC) products., (*2)

The standard is based on PSR-12 and partially PER 2.0 and adds various checks to make sure the code is readable, follows the same conventions, and does not contain common mistakes., (*3)

We use EasyCodingStandard to define and execute checks created for both PHP-CS-Fixer and PHP_CodeSniffer., (*4)

Installation

composer require --dev lmc/coding-standard

Usage

  1. Create ecs.php file in the root directory of your project and import the code-style rules:
<?php declare(strict_types=1);

use Symplify\EasyCodingStandard\Config\ECSConfig;

return ECSConfig::configure()
    ->withPaths([__DIR__ . '/src', __DIR__ . '/tests']) // optionally add 'config' or other directories with PHP files
    ->withRootFiles() // to also check ecs.php and all other php files in the root directory
    ->withSets(
        [
            __DIR__ . '/vendor/lmc/coding-standard/ecs.php',
        ]
    );
  1. Run the check command
vendor/bin/ecs check
  1. Optionally we recommend adding this to scripts section of your composer.json:
    "scripts": {
        "analyze": [
            "vendor/bin/ecs check --ansi",
            "[... other scripts, like PHPStan etc.]"
        ],
        "fix": [
            "...",
            "vendor/bin/ecs check --ansi --fix"
        ],
    }

Now you will be able to run the fix using composer analyze and execute automatic fixes with composer fix., (*5)

Add custom checks or override default settings

On top of the default code-style rules, you are free to add any rules from PHP-CS-Fixer or PHP_CodeSniffer. If needed, you can also override any default settings., (*6)

Below find examples of some more opinionated checks you may want to add depending on your needs:, (*7)

<?php declare(strict_types=1);

use PHP_CodeSniffer\Standards\Generic\Sniffs\Files\LineLengthSniff;
use PhpCsFixer\Fixer\PhpUnit\PhpUnitTestAnnotationFixer;
use Symplify\EasyCodingStandard\Config\ECSConfig;

return ECSConfig::configure()
    /* (...) */
    ->withSets(
        [
            __DIR__ . '/vendor/lmc/coding-standard/ecs.php',
        ]
    )
    ->withRules(
        [
            // PHPUnit attributes must be used over their respective PHPDoc-based annotations. (Use with PHPUnit 10+.)
            PhpUnitAttributesFixer::class,
            // Single-line comments must have proper spacing (one space after `//`).
            SingleLineCommentSpacingFixer::class,
            // Convert multiline string to heredoc or nowdoc.
            MultilineStringToHeredocFixer::class,
        ]
    )
    // Enforce line-length to 120 characters.
    ->withConfiguredRule(LineLengthSniff::class, ['absoluteLineLimit' => 120])
    // Tests must have @test annotation.
    ->withConfiguredRule(PhpUnitTestAnnotationFixer::class, ['style' => 'annotation'])
    // Specify elements separation.
    ->withConfiguredRule(ClassAttributesSeparationFixer::class, ['elements' => ['const' => 'none', 'method' => 'one', 'property' => 'none']])
    /* (...) */

See EasyCodingStandard docs for more configuration options., (*8)

Exclude (skip) checks or files

You can configure your ecs.php file to entirely skip some files, disable specific checks, or suppress specific errors., (*9)

<?php declare(strict_types=1);

use PHP_CodeSniffer\Standards\Generic\Sniffs\PHP\ForbiddenFunctionsSniff;
use PHP_CodeSniffer\Standards\Squiz\Sniffs\Arrays\ArrayDeclarationSniff;
use Symplify\EasyCodingStandard\Config\ECSConfig;

return ECSConfig::configure()
    /* (...) */
    ->withSkip(
        [
            // Ignore specific check only in specific files
            ForbiddenFunctionsSniff::class => [__DIR__ . '/src-tests/bootstrap.php'],
            // Disable check entirely
            ArrayDeclarationSniff::class,
            // Skip one file
            __DIR__ . '/file/to/be/skipped.php',
            // Skip entire directory
            __DIR__ . '/ignored/directory/*',
        ]
    )
    /* (...) */

See EasyCodingStandard docs for more configuration options., (*10)

IDE integration

For integration with PHPStorm and other IDEs, follow instructions in EasyCodingStandard README., (*11)

Changelog

For the latest changes, see CHANGELOG.md file. This library follows Semantic Versioning., (*12)

License

This library is open-source software licensed under the MIT license., (*13)

The Versions

09/04 2018

1.0.1

1.0.1.0

Coding standard used in LMC projects

  Sources   Download

MIT

The Requires

 

The Development Requires

03/04 2018

1.0.0

1.0.0.0

Coding standard used in LMC projects

  Sources   Download

MIT

The Requires

 

The Development Requires