friendsoftwig / twigcs
Twig的Checkstyle自动化工具
Requires
- php: ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0
- ext-ctype: *
- ext-hash: *
- ext-json: *
- ext-mbstring: *
- ext-simplexml: *
- symfony/console: ^4.4 || ^5.3 || ^6.0 || ^7.0
- symfony/filesystem: ^4.4 || ^5.3 || ^6.0 || ^7.0
- symfony/finder: ^4.4 || ^5.3 || ^6.0 || ^7.0
Requires (Dev)
- phpunit/phpunit: ^9.6.15
- symfony/phpunit-bridge: ^7.0.1
- dev-master
- dev-main
- 6.4.0
- 6.3.0
- 6.2.0
- v6.1.0
- v6.0.0
- 5.2.0
- v5.1.0
- v5.0.0
- v4.1.0
- v4.0.0
- v4.0-BETA4
- v4.0-BETA3
- v4.0.BETA2
- v4.0-BETA
- 3.2.x-dev
- v3.2.2
- v3.2.1
- v3.2.0
- v3.1.3
- v3.1.2
- v3.1.1
- v3.1.0
- v3.0.1
- v3.0.0
- v2.1.0
- v2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 1.x-dev
- 1.0.0
- dev-dependabot/composer/phpunit/phpunit-tw-11.3.6
- dev-dependabot/composer/phpunit/phpunit-tw-11.3.5
- dev-dependabot/composer/symfony/phpunit-bridge-tw-7.1.4
- dev-revert-codecov
- dev-phar
This package is auto-updated.
Last update: 2024-09-19 20:50:28 UTC
README
缺失的 twig 检查风格!
Twigcs旨在成为php中的phpcs。它检查您的代码库中违反编码标准的情况。
如何安装
运行
composer require --dev friendsoftwig/twigcs
使用composer
安装friendsoftwig/twigcs
。
运行
phive install friendsoftwig/twigcs
使用phive
安装friendsoftwig/twigcs
。
如何运行
基本上,只需运行
twigcs /path/to/views
在Symfony项目中,例如
twigcs /project/dir/app/Resources/views
您将在控制台中看到违规的摘要。命令的退出代码基于找到的任何违规的严重程度。默认情况下,twigcs只容忍信息,这可以在运行时更改
twigcs /path/to/views --severity error # Allows info and warnings twigcs /path/to/views --severity warning # Allows info twigcs /path/to/views --severity info # Disallows info twigcs /path/to/views --severity ignore # Allows everything
在上面的示例中,信息仍然显示,但不会改变退出代码。
您还可以排除路径的相对子文件夹,例如
twigcs /path/to/views --exclude vendor
提示:您可以使用多个exclude参数。
限制输出
默认情况下,TwigCS将输出所有有违规的行,无论它们是否匹配指定的严重程度级别。如果您只想看到严重程度等于或高于您指定的违规,可以使用--display
选项。例如。
twigcs /path/to/views --severity error --display blocking
将仅显示错误,而不是警告。
或者您可以使用--display all
,这是如上所述的默认行为。
持续集成
Twigcs可以与您最喜欢的CI服务器一起使用。该命令将返回一个一致的退出代码,告诉CI作业是否失败或成功。您还可以有一个漂亮的xml报告(检查风格格式)
twigcs /path/to/views --reporter checkstyle > /path/to/report.xml
报告器
Twigcs目前支持以下报告器
twigcs /path/to/views --reporter console twigcs /path/to/views --reporter checkstyle twigcs /path/to/views --reporter junit twigcs /path/to/views --reporter emacs twigcs /path/to/views --reporter json twigcs /path/to/views --reporter csv twigcs /path/to/views --reporter githubAction twigcs /path/to/views --reporter gitlab
使用较旧的twig版本
默认情况下,twigcs使用Twig 3。这意味着像filter
标签或使用if
进行过滤的循环等功能不再支持。您可以使用twig-version
选项使用较旧的twig版本。
twigcs /path/to/views --twig-version 2
自定义编码标准
目前唯一可用的标准是twig的官方标准。
您可以创建一个实现RulesetInterface
的类,并将其作为--ruleset
选项提供给CLI脚本
twigcs /path/to/views --ruleset \MyApp\TwigCsRuleset
注意: twigcs
需要通过composer使用,并且规则集类必须可以通过composer的自动加载器访问,这样该功能才能工作。另外,根据您的shell,您可能需要在完全限定的类名中使用转义反斜杠。
twigcs /path/to/views --ruleset \\MyApp\\TwigCsRuleset
对于更复杂的需求,请参阅自定义规则集文档。
基于文件的配置
使用配置,您可以轻松存储每个项目的设置
// ~/.twig_cs.dist.php <?php declare(strict_types=1); use FriendsOfTwig\Twigcs; return Twigcs\Config\Config::create() ->setName('my-config') ->setSeverity('warning') ->setReporter('json') ->setRuleSet(Twigcs\Ruleset\Official::class) ->setSpecificRuleSets([ // Every file matching the pattern will use a different ruleset. '*/template.html.twig' => Acme\Project\CustomRuleset::class, ]) ;
如果您从~/
目录调用twigcs,将应用此配置。如果您从该目录外部运行twigcs,则必须使用--config
选项
cd ~/dirA
twigcs --config ~/dirB/.twig_cs.dist.php # Will lint templates in ~/dirA with the config of ~/dirB
默认情况下,以下文件
.twig_cs.php
.twig_cs
.twig_cs.dist.php
.twig_cs.dist
将按当前工作目录(CWD)查找。
您还可以在配置文件中提供查找器,它们将完全替换CLI中的路径。
// ~/.twig_cs.dist.php <?php declare(strict_types=1); use FriendsOfTwig\Twigcs; $finderA = Twigcs\Finder\TemplateFinder::create()->in(__DIR__.'/dirA'); $finderB = Twigcs\Finder\TemplateFinder::create()->in(__DIR__.'/dirB'); return Twigcs\Config\Config::create() // ... ->addFinder($finderA) ->addFinder($finderB) ->setName('my-config') ;
在这种情况下,从配置的~/
目录调用twigcs
将在查找器指向的目录上运行代码检查器。如果您明确为CLI提供路径,则该路径将被添加到代码检查的目录列表中。
twigcs ~/dirC # This will lint ~/dirA, ~/dirB and ~/dirC using the configuration file of the current directory.
模板解析
使用基于文件的配置,您可以提供一种让twigcs解析模板的方法。这可以更好地检测未使用的变量/宏。以下是在只有一个模板目录的情况下最简单的示例。
<?php declare(strict_types=1); use FriendsOfTwig\Twigcs; return Twigcs\Config\Config::create() // ... ->setTemplateResolver(new Twigcs\TemplateResolver\FileResolver(__DIR__)) ->setRuleSet(FriendsOfTwig\Twigcs\Ruleset\Official::class) ;
以下是一个更复杂的示例,它使用链式解析器和命名空间解析器来处理供应商模板。
<?php declare(strict_types=1); use FriendsOfTwig\Twigcs; return Twigcs\Config\Config::create() ->setFinder($finder) ->setTemplateResolver(new Twigcs\TemplateResolver\ChainResolver([ new Twigcs\TemplateResolver\FileResolver(__DIR__ . '/templates'), new Twigcs\TemplateResolver\NamespacedResolver([ 'acme' => new Twigcs\TemplateResolver\FileResolver(__DIR__ . '/vendor/Acme/AcmeLib/templates') ]), ])) ;
这处理了形式为@acme/<templatepath>
的twig命名空间。
升级
如果您是从3.x升级到4.x或更高版本,请阅读升级指南。
社区
通过twigcs
频道加入我们吧,请访问Symfony Devs。
变更日志
请查看CHANGELOG.md
。
贡献
main
分支是开发分支。如果在样式检查过程中发现任何错误或误报,请打开一个问题或提交一个pull请求。
在创建或修改类时,不要忘记在文件顶部添加@author
。
请查看CONTRIBUTING.md
。