2011-02-16 79 views
2

我们有一个PHP脚本的代码库,我们要将其转换为新的编码约定。我们正在考虑自动美化将脚本转换为新标准。我们希望确保代码仍然像最初一样工作。我们可以在命令行上使用php -l以确保没有错误,但我们想要进入下一步,以确保旧的格式化功能与新功能相同。php编译器比较代码?

有没有一种方法可以编译二进制文件或新旧版本中的任何一种,以确保它们是相同的?我假设压缩,换行符等被忽略在一个编译的形式?

+7

你的[单元测试](http://en.wikipedia.org/wiki/Unit_testing)在哪里? – meagar 2011-02-16 16:58:44

+5

真的,你应该有什么(如果你没有写,现在就写)是单元测试,它会指出是否有任何行为改变。这样,您可以对代码库进行任何更改,并且仍然知道它是否全部有效。 – 2011-02-16 16:59:21

回答

4

您可以比较php字节码和bytekit-cli (blogpost)/(github project)

查看您的新旧代码是否生成相同的php字节码。知道你可以很确定一切都会工作。 (如果你使用注释,我不确定那是怎么解决的)

2

请在旧脚本和新脚本上拨打token_get_all,然后将结果与您的更改(添加/删除的空格,制表符,花括号,甚至某些地方的逗号和逗号)进行比较。

0

我会建议使用phc。解析每个文件并生成XML输出,并比较前后的XML输出。

phc --dump-xml filename.php 

当然,部分问题可能是你的美化不使用真正的解析器,所以有可能会出错(我不知道,我没有看过它)。 phc有一个基于真正解析器的--pretty-print选项,所以你可能会有更好的运气。