All Projects → friendsoftwig → Twigcs

friendsoftwig / Twigcs

Licence: mit
The missing checkstyle for twig!

Projects that are alternatives of or similar to Twigcs

phpPgAdmin6
PHP7+ Based administration tool for PostgreSQL 9.3+
Stars: ✭ 45 (-72.89%)
Mutual labels:  composer, twig
Bitrix Project
Заготовка 1C Bitrix проекта: автозагрузка, композер, базовые ООП компоненты, миграции, модели, современный фронтенд стек, инструменты для деплоя.
Stars: ✭ 207 (+24.7%)
Mutual labels:  twig, composer
Html Compress Twig
Twig extension for compressing HTML and inline CSS/JS using WyriHaximus/HtmlCompress
Stars: ✭ 72 (-56.63%)
Mutual labels:  twig, composer
yaf-example
A example of yaf
Stars: ✭ 53 (-68.07%)
Mutual labels:  composer, twig
framework
Cygnite PHP Framework- A Modern Toolkit For Web Developers
Stars: ✭ 43 (-74.1%)
Mutual labels:  composer, twig
Lara Eye
Filter your Query\Builder using a structured query language
Stars: ✭ 39 (-76.51%)
Mutual labels:  library, composer
Laravel Paket
Composer GUI. Manage Laravel dependencies from web interface without switching to command line!
Stars: ✭ 143 (-13.86%)
Mutual labels:  library, composer
Command
A library to build command line applications using PHP
Stars: ✭ 164 (-1.2%)
Mutual labels:  twig
Slidingsquareloaderview
Marvelous sliding square loader view
Stars: ✭ 166 (+0%)
Mutual labels:  library
Aim Ik
A Unity-3D library, to procedural orientate character head (and chest) in a direction without using any animation data.
Stars: ✭ 164 (-1.2%)
Mutual labels:  library
Brackeys Ide
👨‍💻 Brackeys IDE is a fast and free multi-language code editor for Android.
Stars: ✭ 154 (-7.23%)
Mutual labels:  library
Gifenc
small C GIF encoder
Stars: ✭ 164 (-1.2%)
Mutual labels:  library
React Trading Ui
Component library for trading applications 😰📉💸
Stars: ✭ 166 (+0%)
Mutual labels:  library
Uriparser
🔪 Strictly RFC 3986 compliant URI parsing and handling library written in C89; moved from SourceForge to GitHub
Stars: ✭ 163 (-1.81%)
Mutual labels:  library
React Messenger
Chat UX components built with React, inspired by Facebook Messenger
Stars: ✭ 167 (+0.6%)
Mutual labels:  library
Cms
Modular CMS powered by CakePHP
Stars: ✭ 163 (-1.81%)
Mutual labels:  composer
Foregroundappchecker
Foreground application detection library for android.
Stars: ✭ 167 (+0.6%)
Mutual labels:  library
Bt
BitTorrent library and client with DHT, magnet links, encryption and more
Stars: ✭ 2,011 (+1111.45%)
Mutual labels:  library
Cdt
C++ library for constrained Delaunay triangulation (CDT)
Stars: ✭ 165 (-0.6%)
Mutual labels:  library
Angular Google Maps
Angular 2+ Google Maps Components
Stars: ✭ 1,982 (+1093.98%)
Mutual labels:  library

Twigcs

The missing checkstyle for twig!

Twigcs aims to be what phpcs is to php. It checks your codebase for violations on coding standards.

How to install

composer global require friendsoftwig/twigcs

How to run

Basically, just run:

twigcs /path/to/views

On Symfony projects, you can run, for instance:

twigcs /project/dir/app/Resources/views

You will get a summary of the violations in the console. The exit code of the command is based on the severity of any violation found. By default, twigcs only tolerates notices, this can be changed at run time:

twigcs /path/to/views --severity error # Allows notices and warnings
twigcs /path/to/views --severity notice # Disallows notices
twigcs /path/to/views --severity ignore # Allows everything

With the example above, notices are still displayed but not altering the exit code.

You can also exclude relative subfolders of path like this:

twigcs /path/to/views --exclude vendor

Tips: You can use multiple exclude parameters.

Restricting output

By default TwigCS will output all lines that have violations regardless of whether they match the severity level specified or not. If you only want to see violations that are greater than or equal to the severity level you've specified you can use the --display option. For example.

twigcs /path/to/views --severity error --display blocking

Would only display errors and not warnings.

Alternatively you can use --display all which is the default behaviour as described above.

Continuous Integration

Twigcs can be used with your favorite CI server. The command itself will return a consistent exit code telling the CI job if it failed or succeeded. You can also have a nice xml report (checkstyle format):

twigcs /path/to/views --reporter checkstyle > /path/to/report.xml

Using older twig versions

By default twigcs is using Twig 3. This means that features like filter tags or filtered loops using if are not supported anymore. You can use an older twig version using the twig-version option:

twigcs /path/to/views --twig-version 2

Custom coding standard

At the moment the only available standard is the official one from twig.

You can create a class implementing RulesetInterface and supply it as a --ruleset option to the CLI script:

twigcs /path/to/views --ruleset \MyApp\TwigCsRuleset

Note: twigcs needs to be used via composer and the ruleset class must be reachable via composer's autoloader for this feature to work. Also note that depending on your shell, you might need to escape backslashes in the fully qualified class name:

twigcs /path/to/views --ruleset \\MyApp\\TwigCsRuleset

For more complex needs, have a look at the custom ruleset documentation.

File-based configuration

Using configuration, you can easily store per-project settings:

// ~/.twig_cs.dist
<?php

return \FriendsOfTwig\Twigcs\Config\Config::create()
    ->setName('my-config')
    ->setSeverity('warning')
    ->setReporter('json')
    ->setRuleSet(FriendsOfTwig\Twigcs\Ruleset\Official::class)
    ->setSpecificRuleSets([ // Every file matching the pattern will use a different ruleset.
        '*/template.html.twig' => Acme\Project\CustomRuleset::class,
    ])
;

This configuration will be applied if you call twigcs from the ~/ directory. If you run twigcs from outside this directory, you must use the --config option:

cd ~/dirA
twigcs --config ~/dirB/.twig_cs.dist # Will lint templates in ~/dirA with the config of ~/dirB

By default, the files .twig_cs and .twig_cs.dist are looked up in your current working directory (CWD).

You can also provide finders inside config files, they will completely replace the path in the CLI:

// ~/.twig_cs.dist
<?php

$finderA = FriendsOfTwig\Twigcs\Finder\TemplateFinder::create()->in(__DIR__.'/dirA');
$finderB = FriendsOfTwig\Twigcs\Finder\TemplateFinder::create()->in(__DIR__.'/dirB');

return \FriendsOfTwig\Twigcs\Config\Config::create()
    // ...
    ->addFinder($finderA)
    ->addFinder($finderB)
    ->setName('my-config')
;

In this case, calling twigcs from the ~/ directory of the config will run the linter on the directories pointed by the finders. If you explicitly supply a path to the CLI, it will be added to the list of linted directories:

twigcs ~/dirC # This will lint ~/dirA, ~/dirB and ~/dirC using the configuration file of the current directory.

Upgrading

If you're upgrading from 3.x to 4.x or later, please read the upgrade guide.

Community

Join us on Symfony Devs via the twigcs channel.

Contributing

The master is the development branch, if you find any bug or false positive during style checking, please open an issue or submit a pull request.

When creating or changing a class, don't forget to add you as an @author at the top of the file.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].