sirbrillig/phpcs-variable-analysis

一个PHPCS嗅探器,用于检测变量问题。

安装次数: 30,561,934

依赖项: 86

建议者: 0

安全性: 0

星标: 135

关注者: 6

分支: 14

开放问题: 21

类型:phpcodesniffer-standard


README

CS and QA Build Status Test Build Status Coverage Status

PHP_CodeSniffer静态分析工具的插件,增加了对问题变量的分析。

  • 如果变量未定义就被使用,则发出警告。(嗅探器代码:VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedVariable
  • 如果变量在未定义的情况下使用unset(),则发出警告。(嗅探器代码:VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedUnsetVariable
  • 如果变量被设置或声明但从未使用,则发出警告。(嗅探器代码:VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
  • 如果$thisself::$static_memberstatic::$static_member在类作用域外使用,则发出警告。(嗅探器代码:VariableAnalysis.CodeAnalysis.VariableAnalysis.SelfOutsideClassVariableAnalysis.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"/>

之后应该就可以正常使用了!

独立安装

  1. 按照安装说明(通过Composer、Phar文件、PEAR或Git检出)安装PHP_CodeSniffer(PHPCS)。

    确保PHP_CodeSniffer的版本与我们的要求相匹配。

  2. 安装VariableAnalysis。从VariableAnalysis最新发布页面下载zip或tar.gz文件。展开文件,将生成的目录重命名为phpcs-variable-analysis。将目录移动到您想要存放所有PHPCS标准的目录。

  3. 将新安装的标准路径添加到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,则在 requirerequire_onceincludeinclude_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