mfn/php-analyzer

用于执行静态PHP代码分析的框架

v0.0.2 2015-02-01 19:32 UTC

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