8

我想阻止将调试功能var_dump, print_r, etc...提交到 repo,以便 QA 可以检查事情而不报告诸如“所有页面上有大量文本!!”之类的错误。

我已经尝试过正则表达式(这不是一个好主意......大概)。

我也尝试过token_get_all,但由于某种原因,它会T_STRING为每个调试函数返回,我想这会起作用,但看起来很奇怪......

还有第三种更好的方法吗?

4

4 回答 4

0

根据我的新理解,这就是我所拥有的:

$debug_functions = array('print_r', 'var_dump', 'var_export');

foreach($files as $file=>$ext){
    $file_contents = file_get_contents($file);
    //break the content into tokens
    $tokens = token_get_all($file_contents);
    foreach($tokens as $t){
        //if the token id is an int (sometimes it isn't)
        if(is_int($t[0])){
            //if it matches our debug stuff...
            if($t[0] == T_STRING && (in_array($t[1], $debug_functions) || preg_match('/xdebug_.*?/', $t[1]))){
                echo 'Debug output '. $t[1] . ' found on line '. $t[2] . PHP_EOL;
            }
        }
    }
}
于 2011-09-26T13:27:11.047 回答
0

也许不是您正在寻找的答案,但我强烈建议您从代码中删除所有 print_r、var_dump 等。

  1. 始终保持代码干净
  2. 这些标签仅用于调试目的。
  3. 当你提交时,你应该确保一切都按预期工作。更改提交代码或在您的机器上使用与实际机器不同的代码可确保出现错误和问题。

所以删除这些标签,不要把它们放在你的代码中,甚至不要放在本地机器上

于 2011-09-26T20:33:52.860 回答
0

您可以编写一个嗅探PHP_CodeSniffer并让 SVN 将其作为预提交挂钩执行。这将拒绝提交此类代码。

于 2011-09-27T07:44:59.363 回答
0

另一种方法是根本不使用 var_dump 和相关函数。编码更好的做法包括

  1. 使用PHPUnit进行单元测试和
  2. 使用远程调试器,例如Xdebug
于 2011-09-28T14:18:17.697 回答