sirbrillig / phpcs-variable-analysis
一个PHPCS嗅探器,用于检测变量问题。
Requires
- php: >=5.4.0
- phpcsstandards/phpcsutils: ^1.0
- squizlabs/php_codesniffer: ^3.5
Requires (Dev)
- limedeck/phpunit-detailed-printer: ^3.1 || ^4.0 || ^5.0
- phpstan/phpstan: ^0.11.8
- phpunit/phpunit: ^5.0 || ^6.5 || ^7.0 || ^8.0
- sirbrillig/phpcs-import-detection: ^1.1
- dev-master
- v3.0.0-beta.8
- v3.0.0-beta.7
- v3.0.0-beta.6
- v3.0.0-beta.5
- v3.0.0-beta.4
- v3.0.0-beta.3
- v3.0.0-beta.2
- v3.0.0-beta.1
- 2.x-dev
- v2.11.19
- v2.11.18
- v2.11.18-beta.2
- v2.11.18-beta.1
- v2.11.17
- v2.11.16
- v2.11.15
- v2.11.14
- v2.11.13
- v2.11.12
- v2.11.11
- v2.11.10
- v2.11.9
- v2.11.8
- v2.11.7
- v2.11.6
- v2.11.5
- v2.11.4
- v2.11.3
- v2.11.2
- v2.11.1
- v2.11.0
- 2.10.x-dev
- v2.10.3-beta.1
- v2.10.2
- v2.10.2-beta.1
- v2.10.1
- v2.10.0
- v2.10.0-beta.3
- v2.10.0-beta.1
- v2.9.0
- v2.8.3
- 2.8.2.x-dev
- v2.8.2
- v2.8.2-beta.1
- v2.8.1
- v2.8.0
- v2.7.0
- v2.6.4
- v2.6.3
- v2.6.2
- v2.6.1
- v2.6.0
- v2.5.0
- v2.4.0
- v2.3.0
- v2.2.0
- v2.1.3
- v2.1.2
- v2.1.1
- v2.1.0
- v2.0.7
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0
- v1.0
- dev-feature/composer-psalm
- dev-feature/allow-for-phpunit-11
- dev-2.x-legacy
- dev-test-branch-for-failures
- dev-warn-reassign
This package is auto-updated.
Last update: 2024-09-10 14:16:00 UTC
README
PHP_CodeSniffer静态分析工具的插件,增加了对问题变量的分析。
- 如果变量未定义就被使用,则发出警告。(嗅探器代码:
VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedVariable
) - 如果变量在未定义的情况下使用
unset()
,则发出警告。(嗅探器代码:VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedUnsetVariable
) - 如果变量被设置或声明但从未使用,则发出警告。(嗅探器代码:
VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
) - 如果
$this
、self::$static_member
、static::$static_member
在类作用域外使用,则发出警告。(嗅探器代码:VariableAnalysis.CodeAnalysis.VariableAnalysis.SelfOutsideClass
或VariableAnalysis.CodeAnalysis.VariableAnalysis.StaticOutsideClass
)
安装
要求
VariableAnalysis需要PHP 5.4或更高版本以及PHP CodeSniffer版本3.5.6或更高。
使用PHPCS Composer Installer
这是最简单的方法。
首先,如果您还没有,请为您的项目安装phpcodesniffer-composer-installer。这将也会安装PHPCS。
composer config allow-plugins.dealerdirect/phpcodesniffer-composer-installer true
composer require --dev dealerdirect/phpcodesniffer-composer-installer
然后安装这些标准。
composer require --dev sirbrillig/phpcs-variable-analysis
您可以通过将以下行添加到您的 phpcs.xml 文件中来包含嗅探器。
<rule ref="VariableAnalysis"/>
之后应该就可以正常使用了!
独立安装
-
按照安装说明(通过Composer、Phar文件、PEAR或Git检出)安装PHP_CodeSniffer(PHPCS)。
确保PHP_CodeSniffer的版本与我们的要求相匹配。
-
安装VariableAnalysis。从VariableAnalysis最新发布页面下载zip或tar.gz文件。展开文件,将生成的目录重命名为
phpcs-variable-analysis
。将目录移动到您想要存放所有PHPCS标准的目录。 -
将新安装的标准路径添加到PHP_CodeSniffer installed_paths配置中。以下命令应将新标准添加到您的现有标准中(请确保提供上面创建的目录的实际路径)。
phpcs --config-set installed_paths "$(phpcs --config-show|grep installed_paths|awk '{ print $2 }'),/path/to/phpcs-variable-analysis"
如果您没有安装其他标准,您可以更简单地这样做(同样,请确保提供实际的路径)
phpcs --config-set installed_paths /path/to/phpcs-variable-analysis
自定义
VariableAnalysis有多种自定义行为选项,请参阅包含的ruleset.xml.example,了解配置的注释示例。
以下是可以用的选项
allowUnusedFunctionParameters
(布尔值,默认为false
):如果设置为true,则函数参数永远不会被标记为未使用。allowUnusedCaughtExceptions
(布尔值,默认为true
):如果设置为true,则捕获的异常变量永远不会被标记为未使用。allowUnusedParametersBeforeUsed
(布尔值,默认为true
):如果设置为true,则未使用的函数参数将被忽略,如果它们后面跟着使用的函数参数。allowUnusedVariablesBeforeRequire
(布尔值,默认false
): 如果设置为 true,则在require
、require_once
、include
或include_once
之前定义的变量将不会被标记为未使用。它们可能用于所需的文件。allowUndefinedVariablesInFileScope
(布尔值,默认false
): 如果设置为 true,则在文件顶层作用域中未定义的变量将永远不会被标记为未定义。这对于使用许多在其他地方定义的全局变量的模板文件非常有用。allowUnusedVariablesInFileScope
(布尔值,默认false
): 如果设置为 true,则在文件顶层作用域中未使用的变量将永远不会被标记为未使用。当需要定义许多在其他地方使用的全局变量时,这可能非常有帮助。validUnusedVariableNames
(字符串,默认null
): 您想要忽略未使用变量警告的占位符变量名称的空格分隔列表。例如,要忽略变量$junk
和$unused
,可以将其设置为'junk unused'
。ignoreUnusedRegexp
(字符串,默认null
): 您想要忽略未使用变量警告的变量的 PHP 正则表达式字符串(注意,这需要显式分隔符)。例如,要忽略变量$_junk
和$_unused
,可以将其设置为'/^_/'
。validUndefinedVariableNames
(字符串,默认null
): 您想要忽略未定义变量警告的占位符变量名称的空格分隔列表。例如,要忽略变量$post
和$undefined
,可以将其设置为'post undefined'
。这可以与validUndefinedVariableRegexp
结合使用。validUndefinedVariableRegexp
(字符串,默认null
): 您想要忽略未定义变量警告的变量的 PHP 正则表达式字符串(注意,这需要显式分隔符)。例如,要忽略变量$post
和$undefined
,可以将其设置为'/^(post|undefined)$/'
。这可以与validUndefinedVariableNames
结合使用。allowUnusedForeachVariables
(布尔值,默认true
): 如果设置为 true,则在foreach
循环中key => value
语法中的未使用值将永远不会被标记为未使用。sitePassByRefFunctions
(字符串,默认null
): 一系列自定义函数,这些函数通过引用传递变量(例如preg_match()
),因此不需要在之前定义这些变量。列表以空格分隔,每个条目为functionName:1,2
的形式。函数名称首先出现,后跟一个冒号和一个逗号分隔的参数数字列表(从 1 开始),应视为变量定义。参数列表中的特殊值...
将导致所有参数在最后一个数字之后都被视为变量定义。allowWordPressPassByRefFunctions
(布尔值,默认false
): 如果设置为 true,则将一系列常见的 WordPress 传参引用函数添加到 PHP 函数列表中,因此允许将这些函数(通过引用进行初始化)传递未定义的变量。
要设置这些选项,您必须在规则集中使用 XML。有关详细信息,请参阅 phpcs 可自定义嗅探属性页面。以下是一个示例,该示例忽略所有以下划线开头的变量
<rule ref="VariableAnalysis.CodeAnalysis.VariableAnalysis"> <properties> <property name="ignoreUnusedRegexp" value="/^_/"/> </properties> </rule>
另请参阅
- ImportDetection:一组 phpcs 嗅探器,用于查找未使用或未导入的符号。
- phpcs-changed:在文件上运行 phpcs,但仅报告已更改行的警告/错误。
原始
这来自 https://github.com/illusori/PHP_Codesniffer-VariableAnalysis 中的出色工作。
贡献
请在此存储库中打开问题或 PR。
任何更改都应该伴随测试,并且应该通过代码检查和静态分析。由于必须在PHP 5.4中运行,请使用phpdoc(而不是实际类型)来声明类型。
要运行测试,请确保已安装composer,然后运行
composer install # you only need to do this once
composer test
要运行代码检查,使用
composer lint
要运行静态分析,使用
composer phpstan