lausek / scssphp

scssphp 是用 PHP 编写的 SCSS 编译器。

v1.8.1 2021-09-18 21:20 UTC

README

https://scssphp.github.io/scssphp

Build License

scssphp 是用 PHP 编写的 SCSS 编译器。

请访问主页,https://scssphp.github.io/scssphp,了解使用说明。

运行测试

scssphp 使用 PHPUnit 进行测试。

从根目录运行以下命令以运行所有测试

vendor/bin/phpunit tests

tests/ 目录中有多项测试

  • ApiTest.php 包含各种单元测试,用于测试 PHP 接口。
  • ExceptionTest.php 包含单元测试,用于测试解析器和编译器抛出的异常。
  • FailingTest.php 包含在 Github 问题上报告的测试,演示兼容性错误。
  • InputTest.php 编译 tests/inputs 目录中的每个 .scss 文件,然后与 tests/outputs 目录中的相应 .css 文件进行比较。
  • SassSpecTest.phpsass/sass-spec 仓库提取测试。

当更改 tests/inputs 中的任何测试时,由于输出已更改,测试很可能会失败。一旦验证输出正确,可以运行以下命令重新构建所有测试

BUILD=1 vendor/bin/phpunit tests

这将编译所有测试,并将结果保存到 tests/outputs 中。它还更新了从 sass-spec 排除的规范列表。

要启用完整的 sass-spec 兼容性测试

TEST_SASS_SPEC=1 vendor/bin/phpunit tests

编码标准

scssphp 源代码符合 PSR12

从根目录运行以下命令以检查代码的 "sniffs"。

vendor/bin/phpcs --standard=PSR12 --extensions=php bin src tests *.php

静态分析

scssphp 使用 phpstan 进行静态分析。

从根目录运行以下命令以分析代码库

make phpstan

由于代码库的大部分是遗留代码,无法完全进行类型检查,设置中包含一个基线文件,其中包含我们希望忽略的所有错误。特别是,我们忽略与数组中未指定类型相关的所有错误,这些数组对应于解析器和编译器中 Sass 值和 Sass AST 节点的表示。在贡献时,处理静态分析的正确过程如下

  1. 在代码库中进行更改
  2. 运行 make phpstan
  3. 在可能的情况下修复 phpstan 报告的错误
  4. 重复步骤 2 和 3,直到在步骤 3 中不再有任何错误可以修复
  5. 运行 make phpstan-baseline 以重新生成 phpstan 基线

将对基线添加进行审查,以避免忽略应已修复的错误。