追踪使用标记为弃用的功能

时间:2010-01-06 16:44:54

标签: php function deprecated

遵循以下主题:How to handle functions deprecation in library?我想找到一种方法来跟踪对已弃用函数的所有调用,这样我就可以确保在删除函数之前将它们全部替换掉​​。给出以下PHP方法

/*
   @deprecated - just use getBar()
*/
function getFoo(){
    return getBar();
}

function getBar(){
    return "bar";
}

我提出了以下方法,我正在寻找反馈。

function getFoo(){
    try{
        throw new Exception("Deprecated function used"); 
    } catch(Exception $e){
         //Log the Exception with stack trace
         ....
         // return value as normal
         return getBar();
    }
}

2 个答案:

答案 0 :(得分:4)

对于PHP内部不推荐使用的函数,只需将E_STRICT添加到error_reporting

对于用户地址函数提出关于已弃用函数的通知或警告,我建议花时间添加@deprecated注释的开发人员也会触发E_USER_DEPRECATED警告,例如:

function getFoo(){
    trigger_error(__FUNCTION__ . 'is deprecated', E_USER_DEPRECATED );
    return getBar();
}

我不知道任何available QA tools是否可以自动检测代码是否包含已弃用的方法调用。这些是你最好的选择。

如果您使用具有100%代码覆盖率的TDD,则不必担心删除已弃用的方法或函数。您的自动化测试将失败,您将知道在哪里寻找。

答案 1 :(得分:1)

依赖于实际调用的已弃用函数是危险的 - 您将拥有100%的代码覆盖率以确保您不会遗漏任何内容。可以慢慢找到对已弃用函数的所有调用并逐个替换它们,但不足以完全转换。

我认为File> Search in Files

在你的IDE中,

是你最好的选择,因为我所知道的PHP没有很好的重构工具。

事后补充:也许PhpXRef是解决方案。