rg/phpnsc

6.3.0 2024-04-04 11:10 UTC

README

Test status Latest Stable Version Total Downloads License

PHP命名空间检查器,检查项目中的所有文件以查找无效的类引用。

如果使用了类的简单或相对名称,但该类不在同一命名空间中,或者不在相应的子命名空间中,或者没有相应的use语句,则它将打印错误。

  • 或不在同一命名空间中
  • 或不在相应的子命名空间中
  • 或没有相应的use语句

用法

  • 将JSON配置文件添加到项目根目录中(参见 config.sample.json
  • 运行 phpnsc
phpnsc run path/to/config.json

配置

配置必须位于JSON文件中,通常位于项目的根目录。示例

{
    "sources": [
        {
            "vendor": "vendorNamespace",
            "folders": {
                "root": "path/to/sources",
                "include": [
                    "subpackage",
                    "subpackage_two"
                ],
                "exclude": [
                    "subpackage/excluded"
                ]
            },
            "filetypes": {
                "include": [
                    ".php"
                ],
                "exclude": [
                    ".config.php"
                ]
            }
        }
    ],
    "output": [
        {
            "class": "rg\\tools\\phpnsc\\CheckstyleOutput",
            "parameter": "build/logs/phpnsc.xml"
        },
        {
            "class": "rg\\tools\\phpnsc\\ConsoleOutput",
            "parameter": ""
        }
    ]
}
  • sources: 要扫描的源文件夹列表
    • vendor: 指定项目的根供应商命名空间,请参阅 (https://gist.github.com/1234504)
    • folders/root: 项目的根文件夹
    • include: 应包含项目根目录的哪些子文件夹?
    • exclude: 是否有应该排除的子子文件夹?
    • filetypes: 应包含和排除分析中的文件类型
  • output: 应使用的输出类数组。目前支持
    • CheckstyleOutput (与checkstyle兼容的XML文件,例如用于CI服务器)
    • ConsoleOutput

工作原理

首先,工具将扫描符合配置文件中定义的标准的所有文件。对于每个文件,它将去除所有不必要的元素,如注释、字符串或非PHP内容。然后,它将分析项目中的所有定义的类和接口,以及每个文件中使用的和引用的类和接口。在下一步中,它将使用这些信息来推断所有类和接口是否被正确引用。

当前限制

此工具仍然是alpha版本。它很可能不会找到所有错误,也可能会有误报。此外,它无法处理一个use语句导入多个命名空间,并可能在使用别名时出现问题。