holicz/sarb-php-72

是 dave-liddament/sarb 的分支,已降级以在 PHP 7.2 上运行

此包的官方仓库似乎已消失,因此包已被冻结

维护者

详细信息

github.com/Holicz/sarb

源代码

安装: 111

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 19

类型:项目

1.4.1 2022-08-04 12:05 UTC

This package is auto-updated.

Last update: 2024-01-04 15:07:10 UTC


README

PHP versions: 7.3 to 8.1 Latest Stable Version License Total Downloads

Continuous Integration Scrutinizer Code Quality Type coverage PHPStan level 8 PHPStan level 8 Code Coverage Infection MSI

为什么选择 SARB?

如果你曾尝试将高级静态分析工具(例如 PsalmPHPStan)引入遗留项目,这些工具可能已经报告了数千个问题。在继续开发之前,修复所有这些问题,即使是最关键的,也是不现实的。

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选项指定。可能的值有:tabletextjsongithub(用于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中自基线以来添加的任何问题。

进一步阅读

作者