GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - worksome/coding-style: Worksomes coding style

BranchesTags
Open more actions menu

Latest commit

 

History

294 Commits
294 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
docker
docker
 
 
src
src
 
 
stubs
stubs
 
 
testResources/Sniffs
testResources/Sniffs
 
 
tests
tests
 
 
.editorconfig
.editorconfig
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
composer.json
composer.json
 
 
docker-compose.yml
docker-compose.yml
 
 
ecs.php
ecs.php
 
 
extension.php
extension.php
 
 
larastan-strict-rules.neon
larastan-strict-rules.neon
 
 
larastan.neon
larastan.neon
 
 
phpstan.neon
phpstan.neon
 
 
phpunit.xml.dist
phpunit.xml.dist
 
 
project.dic
project.dic
 
 
rector.php
rector.php
 
 

Repository files navigation

Worksome Coding Style

Latest Stable Version Total Downloads Latest Unstable Version License

This repository contains the coding style followed by Worksome.

It includes configuration for ECS, PHPStan, and Rector.

Setup

Install this Composer package:

composer require --dev worksome/coding-style

Run the generate command for generating the config files:

composer generate-coding-style-stubs

Add the following section to your composer.json file:

"scripts": {
    "ecs": "vendor/bin/ecs",
    "ecs:fix": "vendor/bin/ecs --fix",
    "phpstan": "vendor/bin/phpstan analyse",
    "rector": "vendor/bin/rector process --dry-run --ansi",
    "rector:fix": "vendor/bin/rector process --ansi"
},

PHPStan

PHPStan extensions are registered via phpstan/extension-installer, which is installed alongside this package. Allow the plugin when prompted by Composer, or add it to your composer.json file:

"config": {
    "allow-plugins": {
        "phpstan/extension-installer": true
    }
}

The Worksome rules, along with the PHPStan extensions this package depends on, are then loaded automatically.

Laravel projects should also install Larastan and the Larastan strict rules:

composer require --dev larastan/larastan canvural/larastan-strict-rules

The Laravel rules (and Larastan within the Rector config) are only loaded when Larastan is installed, and the strict rules are only loaded when both packages are installed. Packages listed in the extension installer's ignore option are treated as not installed.

Note: Do not include the configuration files of any PHPStan extension that is registered with the extension installer (e.g. vendor/larastan/larastan/extension.neon or vendor/worksome/coding-style/larastan.neon) in your phpstan.neon file. PHPStan will fail if a file is included more than once.

Usage

To use it, simply run one of the scripts added to composer.

$ composer ecs
$ composer ecs:fix
$ composer phpstan
$ composer rector
$ composer rector:fix

ECS Rules

The Worksome code style extends the PSR-12 base rule set.

Additional / Customised Rules

Note: Customised rules have a ⚙️ icon.

PhpCsFixer

  • ArraySyntaxFixer
  • BinaryOperatorSpacesFixer ⚙️
  • BlankLineBeforeStatementFixer ⚙️
  • ClassAttributesSeparationFixer
  • ClassDefinitionFixer
  • LineEndingFixer
  • ListSyntaxFixer
  • NoEmptyCommentFixer
  • NoEmptyPhpdocFixer
  • OperatorLinebreakFixer ⚙️
  • OrderedImportsFixer ⚙️
  • PhpdocAlignFixer ⚙️
  • PhpdocNoUselessInheritdocFixer
  • PhpdocSeparationFixer
  • PhpdocTrimFixer
  • SingleQuoteFixer
  • SingleTraitInsertPerStatementFixer
  • ShortScalarCastFixer
  • StandardizeNotEqualsFixer
  • NoEmptyStatementFixer
  • NoUnneededImportAliasFixer
  • NoUnusedImportsFixer
  • TrailingCommaInMultilineFixer
  • TypesSpacesFixer
  • UnaryOperatorSpacesFixer

PHP CodeSniffer

  • CommentedOutCodeSniff ⚙️
  • ForbiddenFunctionsSniff ⚙️
  • SpaceAfterNotSniff
  • EndFileNewlineSniff
  • MethodDeclarationSniff
  • SpaceAfterCastSniff
  • LowercaseDeclarationSniff
  • InlineControlStructureSniff
  • LowerCaseKeywordSniff
  • LanguageConstructSpacingSniff

Slevomat Coding Standard

  • ClassConstantVisibilitySniff
  • ClassMemberSpacingSniff
  • DisallowGroupUseSniff
  • EmptyLinesAroundClassBracesSniff ⚙️
  • ForbiddenAnnotationsSniff ⚙️
  • MethodSpacingSniff
  • ModernClassNameReferenceSniff
  • NamespaceDeclarationSniff
  • ParameterTypeHintSpacingSniff
  • PropertyDeclarationSniff
  • PropertySpacingSniff
  • RequireMultiLineCallSniff
  • RequireMultiLineConditionSniff
  • RequireMultiLineMethodSignatureSniff
  • RequireMultiLineTernaryOperatorSniff ⚙️
  • RequireOneNamespaceInFileSniff
  • RequireShortTernaryOperatorSniff
  • RequireTrailingCommaInDeclarationSniff
  • ReturnTypeHintSpacingSniff
  • UselessConstantTypeHintSniff
  • UselessInheritDocCommentSniff

Symplify Coding Standard

  • LineLengthFixer ⚙️

Worksome

  • ConfigFilenameKebabCaseSniff
  • DisallowBladeOutsideOfResourcesDirectorySniff
  • DisallowCompactUsageSniff
  • DisallowEnvUsageSniff
  • DisallowHasFactorySniff
  • DisallowParamNoTypeOrCommentSniff
  • DisallowTodoCommentsSniff
  • EventListenerSuffixSniff
  • ExceptionSuffixSniff
  • PropertyDollarSignSniff
  • PascalCasingEnumCasesSniff
  • SpaceInGenericsFixer

Custom PHPStan rules

The Worksome code style includes the following custom PHPStan rules.

Generic

Rules that are applied to all projects.

DeclareStrictTypes

Identifier: worksome.declareStrictTypes

This rule is used to ensure that all PHP files include with the declare(strict_types=1) statement.

DisallowPHPUnit

Identifier: worksome.disallowPhpunit

This rule prevents PHPUnit tests in favour of Pest PHP. It will allow abstract TestCase classes.

NamespaceBasedSuffix

Identifier: worksome.namespaceBasedSuffix

Sets up configuration for suffixing the following namespaces

  • App\Events: Event
  • App\Listener: Listener
  • App\Policies: Policy
  • App\Jobs: Job

This makes sures events, listeners, policies and jobs has the same suffix.

Laravel

Rules that are only applied in a Laravel context.

DisallowEnvironmentCheckRule

Identifier: worksome.laravel.disallowEnvironmentCheck

This rule will prevent checking the application environment, instead preferring that a driver based approach is used.

EnforceKebabCaseArtisanCommandsRule

Identifier: worksome.laravel.kebabCaseArtisanCommands

This rule will enforce the use of kebab-case for Artisan commands.

RequireWithoutTimestampsRule

Identifier: worksome.laravel.requireWithoutTimestamps

This rule enforces that all update, insert, save, saveQuietly, delete, restore, method calls within Laravel migration files are properly enclosed in a withoutTimestamps() context.

Custom PHP_CodeSniffer sniffs

The Worksome code style includes various custom PHP_CodeSniffer sniffs where auto-fixers via PHP CS Fixer are not possible.

Generic

Pascal-casing enum cases

This ensures that all enum cases use pascal-casing (e.g. Case::PascalCase).

Laravel

All custom sniffs specific to Laravel.

Config filename kebab case

Checks if all config files are written in kebab case.

Disallow compact usage

Makes sure that compact() isn't used in code.

Disallow env usage

Makes sure that you don't use env helper in your code, except for config files.

Disallow HasFactory usage

Ensures that the HasFactory trait is not used on models, this ensures that the factory class is called directly.

Event listener suffix

Enforces event listeners to end with a specific suffix, this suffix is defaulted to Listener.

parameters defaults
suffix Listener

Disallow blade outside the resources directory

Makes sure no .blade.php files exist outside of Laravel's resources directory.

parameters defaults
resourcesDirectory {YOUR_PROJECT}/resources

Exception suffix

This ensures that all Exception classes should have a suffix of Exception.

PhpDoc

All custom sniffs which are not specific to Laravel.

Property dollar sign

Makes sure that you always have a dollar sign in your properties defined in phpdoc.

/**
* @property string $name
 */
class User {}

Param tags with no type or comment

This removes all @param tags which has not specified a type or comment.

/**
 * @param string $name
 * @param $type some random type
 * @param $other // <-- will be removed
 */
public function someMethod($name, $type, $other): void
{}

This is mainly because PHPStan requires this before it sees the property as valid.

Disallow TODO comments

This ensures that all to-do comments are blocked from use. Jira should be used instead.

Space in generics

This ensures that generics types in PHPDoc comments contain a single space after the comma.

Custom Rector rules

The Worksome code style includes custom Rector rules for automatically refactoring code.

Generic

Disallowed Attributes

This ensures that specified PHP attributes are automatically removed when they are not allowed.

Credits

  • Worksome
  • Kuba Werłos for the initial code for SpaceInGenericsFixer
  • All Contributors

About

Worksomes coding style

Topics

hacktoberfest

Resources

Readme
MIT license
Activity
Custom properties

Stars

49 stars

Watchers

15 watching

Forks

4 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.