首页 文章

PHP文件是否有静态代码分析器[如Lint]? [关闭]

提问于
浏览
433

是否有PHP文件的静态代码分析器?二进制本身可以检查语法错误,但我正在寻找更多的东西,比如未使用的变量赋值,分配到的数组而不是首先被初始化,以及可能的代码样式警告 . 开源程序将是首选,但如果强烈推荐,我们可能会说服公司支付费用 .

13 回答

  • 22

    从命令行以lint-mode运行php以验证语法而不执行:

    php -l FILENAME

    更高级别的静态分析仪包括:

    低级分析仪包括:

    运行时分析器,由于PHP的动态特性,对某些东西更有用,包括:

    文档库phpdocdoxygen执行一种代码分析 . 例如,Doxygen可以配置为使用graphviz呈现漂亮的继承图 .

    另一种选择是xhprof,类似于xdebug,但更轻,使其适用于 生产环境 服务器 . 该工具包括基于PHP的界面 .

  • 4

    Online PHP lint

    PHPLint

    Unitialized variables check . 但是,链接1和2似乎已经很好了 .

    我不能说我已经集中使用了这些,但:)

  • 13

    为了完整性 - 还要检查phpCallGraph .

  • 7

    PHP Mess Detector太棒了,速度很快 .

  • 3

    我尝试过使用$ php -l和其他工具 . 然而,根据我的经验(YMMV,当然)中最好的是scheck of pfff toolset . 我在Quora上听说过pfff(http://www.quora.com/Is-there-a-good-PHP-lint-static-analysis-tool

    您可以编译并安装它 . 没有很好的软件包(在我的薄荷Debian上,我必须首先安装libpcre3-dev,ocaml,libcairo-dev,libgtk-3-dev和libgimp2.0-dev依赖项)但它应该值得一个intsall .

    结果报告如

    rjha@mint ~ $ ~/sw/pfff/scheck ~/code/github/sc/
    login-now.php:7:4: CHECK: Unused Local variable $title
    go-automatic.php:14:77: CHECK: Use of undeclared variable $goUrl.
    
  • 15

    请参阅Semantic Designs' CloneDR,这是一个查找复制/粘贴/编辑代码的"clone detection"工具 . 尽管有空格,注释甚至可变的重命名,它仍会找到准确的和接近错过的代码片段 . 可以在wesite找到PHP的样本检测报告 . (我是作者) .

  • 2

    NetBeans IDE检查语法错误,未使用的变量等 . 它不是自动化的,但适用于中小型项目 .

  • 6

    有一个名为nWire for PHP的新工具 . 它是Eclipse PDT和Zend Studio 7.x的代码探索插件 . 它支持PHP的实时代码分析,并提供以下工具:

    • 代码可视化 - 组件和关联的交互式图形表示 .

    • 代码导航 - 独特的导航视图显示了所有关联,并在您编写或读取代码时与您协同工作 .

    • 快速搜索 - 在键入方法,字段,文件等时进行搜索 .

  • 25

    PHP PMD(项目混乱检测器)和PHP CPD(复制粘贴检测器)作为PHPUnit的前一部分

  • 3

    RIPS - A static source code analyser for vulnerabilities in PHP scripts . RIPS的来源可在SourceForge获得 .

    来自RIPS网站:

    RIPS是一个用PHP编写的工具,用于使用静态代码分析查找PHP应用程序中的漏洞 . 通过对所有源代码文件进行标记化和解析,RIPS能够将PHP源代码转换为程序模型,并检测在程序流程中可能被用户输入(受恶意用户影响)污染的敏感接收器(可能易受攻击的功能) . 除了发现的漏洞的结构化输出外,RIPS还提供了一个集成的代码审计框架,用于进一步的手动分析 .

  • 35

    此外,PHP Compiler也许值得一试 . 它的主要功能是生成PHP二进制文件,但它确实具有一些分析功能 .

  • 4

    静态代码分析的绝对新工具称为PHP Analyzer .

    在许多类型的静态分析中,它还提供基本的自动修复功能,请参阅documentation .

    更新:PHP-Analyzer现在已弃用,但您仍可以在旧版分支上访问它

  • 333

    您可能想尝试使用Facebook的hiphop进行编译 .

    它对整个项目进行静态分析,可能是您正在寻找的 .

    https://github.com/facebook/hiphop-php

相关问题