Twig的Checkstyle自动化工具

6.4.0 2023-12-05 07:36 UTC

README

Integrate

Code Coverage Type Coverage

Latest Stable Version Total Downloads Monthly Downloads

缺失的 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