boesing/psalm-plugin-stringf

Psalm 插件,用于与 `sprintf`、`printf`、`sscanf` 和 `fscanf` 一起工作。

安装数: 157,837

依赖者: 28

建议者: 0

安全性: 0

星标: 11

关注者: 1

分支: 1

开放性问题: 16

类型:psalm-plugin


README

Build Status

此插件为内置的 sprintfprintfsscanffscanf 函数使用提供额外的检查。

安装

需要 composer 开发依赖

composer require --dev boesing/psalm-plugin-stringf

运行 Psalm-Plugin 二进制文件

vendor/bin/psalm-plugin enable boesing/psalm-plugin-stringf

功能

  • 解析 sprintfprintf 的参数,以验证传入的参数数量是否与指定符的数量匹配
  • 验证 sprintf 的返回值是否可能是一个 非空字符串
  • 验证 sprintfprintf 的可能无效参数(实验性
  • 验证 sprintfprintf 的不必要函数调用(实验性

实验性

此插件还提供实验性功能。

可以通过以下方式扩展插件配置以启用实验性功能

<?xml version="1.0"?>
<psalm>
    <plugins>
        <pluginClass class="Boesing\PsalmPluginStringf\Plugin">
            <experimental>
                <NameOfExperimentalFeature/>
            </experimental>
        </pluginClass>
    </plugins>
</psalm>

报告指定符的可能无效参数

<pluginClass class="Boesing\PsalmPluginStringf\Plugin">
    <experimental>
        <ReportPossiblyInvalidArgumentForSpecifier allowIntegerForString="yes" />
    </experimental>
</pluginClass>

实验性功能 ReportPossiblyInvalidArgumentForSpecifier 将报告使用 sprintfprintf 的参数的 PossiblyInvalidArgument 错误。以下是一些示例

printf('%s', 1);
PossiblyInvalidArgument: Argument 1 inferred as "int" does not match (any of) the suggested type(s) "string"
printf('%d', 'foo');
PossiblyInvalidArgument: Argument 1 inferred as "string" does not match (any of) the suggested type(s) "float\|int\|numeric-string"

报告不必要的函数调用

<pluginClass class="Boesing\PsalmPluginStringf\Plugin">
    <experimental>
        <ReportUnnecessaryFunctionCalls/>
    </experimental>
</pluginClass>

实验性功能 ReportUnnecessaryFunctionCalls 将报告可以省略的 sprintfprintf 函数调用为 UnnecessaryFunctionCall 错误。以下是一些示例

printf('Some text without any placeholder');
sprintf('Some text without any placeholder');
UnnecessaryFunctionCall: Function call is unnecessary as there is no placeholder within the template.

发布版本声明

即使版本号声明为语义版本控制兼容,此插件也不会遵循语义版本控制。此插件的源代码不打算像库代码一样使用,因此 必须 作为内部代码处理。

  • 此包将在必要时提高依赖要求。
  • 如果有新的 Psalm 主版本,此插件 可能 迁移到该版本,但不会是早期采用者。
  • 如果有新的 PHP 小版本/主版本不支持此库,此库 可能 迁移到该版本,但不会是早期采用者。

总结来说:如果你的项目依赖于 Psalm 或 PHP 的最新版本,则此插件不适合你。如果你能忍受这一点,请随意安装。任何要求都将被忽略或在我愿意花时间处理的时候处理。