mfn / php-analyzer
用于执行静态PHP代码分析的框架
Requires
- php: >=5.4.0
- mfn/util-simpleorderedmap: 0.0.2
- nikic/php-parser: ~1.0
- psr/log: ~1.0
- symfony/console: ~2.5
Requires (Dev)
- mfn/php-reflection-gen: 0.0.4
- phing/phing: ~2.8
- phpunit/phpunit: ~4.2
This package is auto-updated.
Last update: 2024-09-16 17:32:25 UTC
README
主页: https://github.com/mfn/php-analyzer
简介
一个用于执行静态PHP源代码分析的 框架。模块化概念将分析任务委托给 Analyzers,这些Analyzers报告任何可能的警告/错误。
安装
通过 composer
composer require mfn/php-analyzer 0.0.1
用法
提供了一个命令行工具: php_analyzer.php analyze <文件或目录>
有关更多信息,请参阅 --help
选项。
执行哪些分析?
所有文件都会通过 nikic/PHP-Parser 运行,然后构建类的接口的内部图。
对所有可用的Analyzers执行分析,并生成报告。
以下是目前执行的分析:
- 检测抽象类未实现的方法
- 检测接口未实现的方法
- 接口中声明的方法不兼容
- 接口上定义的抽象方法
可能有点没有意义,因为php linter也能检测到这一点。 - 当使用动态类实例化时警告,即
new $foo
- 当遇到空的异常捕获块时警告
了解更多
Graphviz
内部 ObjectGraph 可以生成一个类关系图,为此存在一个graphviz生成器。这将生成一个 .dot
文件,可以用 Graphviz 包进一步使用以生成图形。
php_analyzer.php graphviz yoursource/ > myproject.dot
有关更多选项,请参阅 --help
。
要将此转换为例如png,必须在您的系统上安装上述graphviz包。这包括 dot
命令,它可以用来生成PNG文件。
dot -Tpng myproject.dot > myproject.png
配置
如果您想使用不同的Analyzers集合,或者您已经编写了自己的Analyzers并想使用它们,可以使用 --config <file>
选项。
该文件是一个简单的PHP文件,返回您想运行的Analyzers数组。有关示例,请参阅 res/defaultAnalyzerConfiguration.php。
TODOs / Ideas
- 依赖于图的Analyzers没有逻辑来检查是否已经访问过节点,因此会多次访问相同的节点/方法
- 使用
namespacedName
属性,该属性由\PhpParser\NodeVisitor\NameResolver
生成 - 添加对 traits 的支持
贡献
- 每个分支/PR一个特性
- 编码标准是 PSR-2
© Markus Fischer markus@fischer.name