我想阻止将调试功能var_dump, print_r, etc...
提交到 repo,以便 QA 可以检查事情而不报告诸如“所有页面上有大量文本!!”之类的错误。
我已经尝试过正则表达式(这不是一个好主意......大概)。
我也尝试过token_get_all
,但由于某种原因,它会T_STRING
为每个调试函数返回,我想这会起作用,但看起来很奇怪......
还有第三种更好的方法吗?
我想阻止将调试功能var_dump, print_r, etc...
提交到 repo,以便 QA 可以检查事情而不报告诸如“所有页面上有大量文本!!”之类的错误。
我已经尝试过正则表达式(这不是一个好主意......大概)。
我也尝试过token_get_all
,但由于某种原因,它会T_STRING
为每个调试函数返回,我想这会起作用,但看起来很奇怪......
还有第三种更好的方法吗?
根据我的新理解,这就是我所拥有的:
$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;
}
}
}
}
也许不是您正在寻找的答案,但我强烈建议您从代码中删除所有 print_r、var_dump 等。
所以删除这些标签,不要把它们放在你的代码中,甚至不要放在本地机器上。
您可以编写一个嗅探PHP_CodeSniffer并让 SVN 将其作为预提交挂钩执行。这将拒绝提交此类代码。