holicz / sarb-php-72
是 dave-liddament/sarb 的分支,已降级以在 PHP 7.2 上运行
此包的官方仓库似乎已消失,因此包已被冻结
Requires
- php: >=7.2 <8.2
- symfony/config: ^3.4 || ^4.0 || ^5.0 || ^6.0
- symfony/console: ^3.4 || ^4.0 || ^5.0 || ^6.0
- symfony/dependency-injection: ^3.4 || ^4.0 || ^5.0 || ^6.0
- symfony/process: ^3.4 || ^4.0 || ^5.0 || ^6.0
- symfony/yaml: ^3.4 || ^4.0 || ^5.0 || ^6.0
- webmozart/assert: ^1.3
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.18
- php-parallel-lint/php-parallel-lint: ~1.2.0
- php-parallel-lint/php-var-dump-check: ^v0.5
- phpstan/phpstan: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpstan/phpstan-strict-rules: ^1.0
- phpstan/phpstan-webmozart-assert: ^1.0
- phpunit/phpunit: ^8.0
- psalm/plugin-phpunit: ^0.15.1
- rector/rector: ^0.13.10
- symfony/filesystem: ^3.4 || ^4.0 || ^5.0
- vimeo/psalm: ^4.13
This package is auto-updated.
Last update: 2024-01-04 15:07:10 UTC
README
为什么选择 SARB?
如果你曾尝试将高级静态分析工具(例如 Psalm, PHPStan)引入遗留项目,这些工具可能已经报告了数千个问题。在继续开发之前,修复所有这些问题,即使是最关键的,也是不现实的。
SARB 用于创建这些结果的基线。随着项目工作的进展,SARB 可以获取最新的静态分析结果,删除基线中的问题,并报告自基线以来提出的问题。SARB 通过跟踪提交之间的代码行来实现这一点。目前 SARB 只支持 git,但可能 添加对其他版本控制系统的支持。
SARB 用 PHP 编写,但它可以用于为任何语言和 任何静态分析工具 创建基线。
为什么不选择 SARB?
SARB 不应用于新项目。如果你有幸在一个新项目中工作,请确保你在进行过程中修复静态分析提出的所有问题。
要求
目前 SARB 只支持使用 git 的项目。
SARB 需要 PHP >= 7.3 来运行。被分析的项目不需要运行 PHP 7.3,甚至根本不需要是 PHP 项目。
安装
您可以直接将其添加到您希望运行分析的项目中
composer require --dev dave-liddament/sarb
或者您可以在全局范围内安装 SARB(例如,如果您想在非 PHP 项目上使用它)
composer global require dave-liddament/sarb
如果您全局安装,请确保 composer 的 bin 目录在您的路径中。
使用 SARB
如果您正在使用 0.x 版本,请参阅 旧版文档 以及如何 升级。
1. 确保当前 git 提交是用于基线的提交
在创建基线时,SARB 需要知道基线的 git 提交 SHA。请确保您的代码处于您希望基线中的状态,并且当前提交代表该状态。
2. 创建基线
运行您选择的静态分析器并将结果管道化到 SARB
例如,使用 Psalm 的 JSON 输出
vendor/bin/psalm --output-format=json | vendor/bin/sarb create --input-format="psalm-json" psalm.baseline
这会创建一个名为 psalm.baseline
的基线文件。您需要将其提交到您的仓库中。
3. 更新代码然后使用SARB去除基线结果
继续编码。然后重新运行静态分析器并将结果管道输入到SARB
vendor/bin/psalm --output-format=json | vendor/bin/sarb remove psalm.baseline
从全局安装运行SARB
如果您从全局安装运行SARB,则需要指定项目根目录(其中包含.git
目录)。上面的内容将变为:
psalm --output-format=json | sarb create --project-root=/path/to/project/root --input-format="psalm-json" psalm.baseline
支持的工具
要查看支持的工具和格式,请使用:
vendor/bin/sarb list-static-analysis-tools
如何为每个支持的工具创建和删除基线
PHP CodeSniffer
vendor/bin/phpcs src --report=json | vendor/bin/sarb create --input-format="phpcodesniffer-json" phpcs.baseline vendor/bin/phpcs src --report=json | vendor/bin/sarb remove phpcs.baseline
Phan
vendor/bin/phan -m json | vendor/bin/sarb create --input-format="phan-json" phan.baseline vendor/bin/phan -m json | vendor/bin/sarb remove phan.baseline
请参阅有关相对路径的说明。
Exakat
php exakat.phar report -p <project> -format sarb | vendor/bin/sarb create --input-format="exakat-sarb" exakat.baseline php exakat.phar report -p <project> -format sarb | vendor/bin/sarb remove exakat.baseline
PHPMD
vendor/bin/phpmd src json <ruleset> | vendor/bin/sarb create --input-format="phpmd-json" phpmd.baseline vendor/bin/phpmd src json <ruleset> | vendor/bin/sarb remove phpmd.baseline
Psalm
vendor/bin/psalm --output-format=json | vendor/bin/sarb create --input-format="psalm-json" psalm.baseline vendor/bin/psalm --output-format=json | vendor/bin/sarb remove psalm.baseline
注意:检查Psalm内置的基线功能。了解它如何与SARB不同。
PHPStan
vendor/bin/phpstan analyse --error-format=json | vendor/bin/sarb create --input-format="phpstan-json" phpstan.baseline vendor/bin/phpstan analyse --error-format=json | vendor/bin/sarb remove phpstan.baseline
注意:检查PHPStan内置的基线功能。了解它如何与SARB不同。
PHP Magic Number Detector
vendor/bin/phpmnd . | vendor/bin/sarb create --input-format="phpmnd" phpmnd.baseline vendor/bin/phpmnd . | vendor/bin/sarb remove phpmnd.baseline
请参阅有关相对路径的说明。
我的工具不受支持...
这没有问题,有3种方法可以将静态分析工具与SARB集成。
输出格式
在去除基线后显示问题的格式可以使用--output-format
选项指定。可能的值有:table
、text
、json
或github
(用于GitHub Actions)。
SARB与GitHub Actions
如果您使用actions/checkout@v2
来检出代码,则需要将fetch-depth
设置为0
。默认情况下,checkout
只会获取代码的最新状态,而不会获取任何历史记录。SARB使用git,它需要完整的git历史记录来跟踪自基线以来的文件更改。要获取完整历史记录,请使用以下方法:
- uses: actions/checkout@v2
with:
fetch-depth: 0
此外,别忘了使用SARB选项--output-format=github
。它将注释PR中自基线以来添加的任何问题。