spryker/architecture-sniffer

Spryker 架构嗅探器


README

CI Coverage Latest Stable Version Minimum PHP Version License Total Downloads

为 Spryker 核心、生态系统和应用程序提供架构嗅探器。

优先级级别

  • 1: API 和关键
  • 2: 非关键(最好有)
  • 3: 实验(检查的代码需要进一步修复)

默认情况下,我们使用并推荐最低优先级 2 用于本地和 CI 检查。

注意:较低优先级(较高数字)始终包括较高优先级(较低数字)。

使用方法

确保将嗅探器作为 require-dev 依赖项包括在内

composer require --dev spryker/architecture-sniffer

Spryker 使用

使用 Spryker 时,您可以使用 Spryker CLI 控制台命令

console code:sniff:architecture [-m ModuleName] [optional-sub-path] -v [-p priority]

建议在此处使用详细输出。

手动使用

您还可以通过控制台使用以下命令手动运行架构嗅探器:

vendor/bin/phpmd src/Pyz/ (xml|text|html) vendor/spryker/architecture-sniffer/src/ruleset.xml --minimumpriority=2

注意:在验证过程中,较低优先级始终包括较高优先级。

将嗅探器包含在 PHPStorm 中

编辑 -> 检查 -> PHP -> PHP Mess Detector 验证 之下添加一个新的自定义规则集。例如,将其命名为 Architecture Sniffer

客户规则集定义在 vendor/spryker/architecture-sniffer/src/ruleset.xml

检查 Mess Detector 设置

框架 & 语言 -> PHP -> Mess Detector 之下,您需要定义配置并设置 phpmd(vendor/bin/phpmd)的路径。使用本地并运行 验证 来查看是否正常工作。

编写新的嗅探器

将它们添加到 src 文件夹内部,并在 tests 中添加具有相同文件夹结构的测试。不要忘记更新 ruleset.xml

每个嗅探器都需要一个完整的句子描述

    protected const RULE = 'Every Foo needs Bar.';

    /**
     * @return string
     */
    public function getDescription(): string
    {
        return static::RULE;
    }

每个嗅探器需要实现 ClassAwareFunctionAwareInterfaceAwareMethodAware 接口才能被识别。为了验证嗅探器是否识别您的规则,请检查您的规则是否列在 Zed UI > 维护 > 架构嗅探器中。

另外注意

  • 规则名称必须在规则集中是唯一的。
  • 每个规则应只包含一个 "检查"。
  • 每个规则始终输出原因(违规),而不仅仅是发生。

设置

运行

./setup.sh

php composer.phar install

测试

不要忘记测试您的更改

php phpunit.phar

在此项目上运行代码嗅探器

确保此存储库符合 Spryker 编码标准

php composer.phar cs-check

如果您想修复可修复的错误,请使用

php composer.phar cs-fix

一旦一切正常,您就可以提交带有您更改的 PR。