用于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毛细血管分析。selfoutsideclass或VariableAnalysis.CodeAnalysis.VariableAnalysis.StaticOutsideClass 。 可变分析需要PHP 5.4或更高的PHP和PHP CODESNIFFER版本3.5.6或更高版本。
这是最简单的方法。
首先,如果尚未安装项目,请安装phpcodesniffer-composser-installer。这也将安装PHPC。
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 File,Pear或Git Checkout)安装PHP_CodesNiffer(PHPC)。
请确保php_codesniffer的版本符合我们的要求。
安装变量分析。从variableanaliss最新版本页面下载zip或tar.gz文件。将文件扩展并将结果目录重命名为phpcs-variable-analysis 。将目录移至您想要保持所有PHPC标准的地方。
将新安装标准的路径添加到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
有多种选择可以自定义可变分析的行为,请查看随附的uluneet.xml.xml.xample,以获取配置的注释示例。
可用选项如下:
allowUnusedFunctionParameters (bool,默认false ):如果设置为true,则函数参数永远不会被标记为未使用的。allowUnusedCaughtExceptions (bool,默认为true ):如果设置为true,则永远不会将异常变量标记为未使用。allowUnusedParametersBeforeUsed (bool,默认为true ):如果设置为true,则未使用的函数参数,如果遵循使用的函数参数,将忽略它们。allowUnusedVariablesBeforeRequire (bool,默认为false ):如果设置为true,则在require之前定义的变量, require_once , include或include_once将不会标记为未使用。它们可能是针对所需的文件的。allowUndefinedVariablesInFileScope (bool,默认为false ):如果将文件的顶级范围中的不确定变量设置为true,则永远不会将其标记为未定义。这对于使用其他地方定义的许多全局变量的模板文件可能很有用。allowUnusedVariablesInFileScope (bool,默认为false ):如果将文件的顶级范围中的未使用变量设置为True,则永远不会将其标记为未使用。当定义许多在其他地方使用的全局变量时,这可能会有所帮助。validUnusedVariableNames (字符串,默认为null ):要分隔空间占位符变量名称的列表,您希望从未使用的变量警告中忽略。例如,要忽略变量$junk和$unused ,可以将其设置为'junk unused' 。ignoreUnusedRegexp (字符串,默认为null ):php Regexp String(请注意,这需要明确的定界数),您需要从未使用的变量警告中忽略的变量。例如,要忽略变量$_junk和$_unused ,可以将其设置为'/^_/' 。validUndefinedVariableNames (字符串,默认为null ):一个空间分隔的占位符变量名称的列表,您希望从未定义的变量警告中忽略。例如,要忽略变量$post和$undefined ,可以将其设置为'post undefined' 。这可以与validUndefinedVariableRegexp结合使用。validUndefinedVariableRegexp (字符串,默认为null ):php regexp字符串(请注意,这需要明确的分界符),以便您从未定义的变量警告中忽略的变量。例如,要忽略变量$post和$undefined ,可以将其设置为'/^(post|undefined)$/' 。可以将其与validUndefinedVariableNames结合使用。allowUnusedForeachVariables (bool,默认为true ):如果将foreach循环中的key => value语法设置为true,则永远不会将其标记为未使用。sitePassByRefFunctions (字符串,默认为null ):自定义功能的列表,这些函数通过参考来初始化的变量(例如preg_match() ),因此不应要求提前定义这些变量。该列表是空间分开的,每个条目均为表单functionName:1,2 。该功能名称首先出现,然后是结肠和逗号分隔的参数编号列表(从1开始),该列表应视为可变定义。特殊值...在参数列表中,将导致最后一个数字之后的所有参数被视为可变定义。allowWordPressPassByRefFunctions (bool,默认false ):如果设置为true,则将添加通用WordPress通过引用函数列表中的PHP列表,以便将允许将未定义的变量传递给这些函数(供参考初始化)。要设置这些选项,您必须在规则集中使用XML。有关详细信息,请参阅PHPCS可自定义的嗅探属性页面。这是一个示例,忽略了以下划线开头的所有变量:
< rule ref = " VariableAnalysis.CodeAnalysis.VariableAnalysis " >
< properties >
< property name = " ignoreUnusedRegexp " value = " /^_/ " />
</ properties >
</ rule >这是从https://github.com/illusori/php_codesniffer-variaibleanalysis中的出色工作中分配的
请在此存储库上打开问题或PR。
任何更改都应伴随测试,并应通过伸缩和静态分析。请使用PHPDOC(而不是实际类型)进行声明类型,因为这必须在PHP 5.4中运行。
要运行测试,请确保已安装作曲家,然后运行:
composer install # you only need to do this once
composer test
要运行绒毛,请使用:
composer lint
要运行静态分析,请使用:
composer phpstan