boesing / psalm-plugin-stringf
Psalm 插件,用于与 `sprintf`、`printf`、`sscanf` 和 `fscanf` 一起工作。
1.4.0
2022-12-10 15:57 UTC
Requires
- php: ^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0
- ext-simplexml: *
- vimeo/psalm: ^4.30 || ^5.0
- webmozart/assert: ^1.11
Requires (Dev)
- codeception/codeception: ^4.1
- codeception/module-asserts: ^2.0
- codeception/module-phpbrowser: ^2.0
- doctrine/coding-standard: ^10.0
- symfony/console: ^5.4
- symfony/finder: ^5.4
- symfony/yaml: ^5.4
- weirdan/codeception-psalm-module: ^0.14.0
- 1.5.x-dev
- 1.4.x-dev
- 1.4.0
- 1.3.x-dev
- 1.3.0
- 1.2.x-dev
- 1.2.0
- 1.1.x-dev
- 1.1.0
- 1.0.x-dev
- 1.0.0
- dev-feature/php-8.3
- dev-dependabot/github_actions/ridedott/merge-me-action-2.10.51
- dev-dependabot/composer/vimeo/psalm-5.14.1
- dev-dependabot/composer/symfony/finder-5.4.27
- dev-dependabot/composer/symfony/yaml-5.4.23
- dev-dependabot/composer/doctrine/coding-standard-12.0.0
- dev-dependabot/composer/guzzlehttp/psr7-2.5.0
- dev-bugfix/union-literal-string-template-argument
- dev-qa/maintenance-20230306
- dev-bugfix/concatenated-string-sprintf
- dev-bugfix/constants-exceeding-maximum-string-length
This package is auto-updated.
Last update: 2024-09-11 00:10:50 UTC
README
此插件为内置的 sprintf
、printf
、sscanf
和 fscanf
函数使用提供额外的检查。
安装
需要 composer 开发依赖
composer require --dev boesing/psalm-plugin-stringf
运行 Psalm-Plugin 二进制文件
vendor/bin/psalm-plugin enable boesing/psalm-plugin-stringf
功能
- 解析
sprintf
和printf
的参数,以验证传入的参数数量是否与指定符的数量匹配 - 验证
sprintf
的返回值是否可能是一个非空字符串
- 验证
sprintf
和printf
的可能无效参数(实验性) - 验证
sprintf
和printf
的不必要函数调用(实验性)
实验性
此插件还提供实验性功能。
可以通过以下方式扩展插件配置以启用实验性功能
<?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
将报告使用 sprintf
或 printf
的参数的 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
将报告可以省略的 sprintf
或 printf
函数调用为 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 的最新版本,则此插件不适合你。如果你能忍受这一点,请随意安装。任何要求都将被忽略或在我愿意花时间处理的时候处理。