我如何检查重构时没有破坏什么?

我即将开始在我的代码重构的一些function回合。 我有一个很好的unit testing,可以确保我没有损坏任何东西,但我不确定他们给我的报道。 有没有可以分析代码的工具,并看到function保持不变?

我打算重构一些相当孤立的代码,所以我不需要检查整个程序,只是我正在处理的区域。

对于上下文,我正在使用的代码是C / C ++,而我使用GCC和VIM在Linux中工作。

gcov会给你单元测试的覆盖信息。

很难准确地回答你的问题,而不了解你计划进行的重构。

一个可能的建议是继续进行小的迭代,而不是重构代码库的很多部分,然后实现所有的休息。

参考: GNU覆盖工具 – 一个简短的教程

没有“简单”的方法来确保功能没有改变。 你必须有完整的单元测试,涵盖所有的可能性。 测试绝对一切都是不可能的,但是你可以确保你最重要的用户案例有全面的测试。

您也可以使用覆盖工具来确保您有良好的测试覆盖率:

http://covtool.sourceforge.net/

如果你有单元测试,但你不满意你将要重构的区域,你可以找到使用代码覆盖率分析工具。 如果你发现了差距,你可以创建并复核测试以填补空白,然后对你的(更新的)单元测试彻底覆盖地面进行重构,这对于项目长期来说也是有利的。

诀窍是使用单元测试。 基本上,编译器会在您的单元测试从功能角度验证它时检查您创建的语言正确性。 通过拥有一套很好的单元测试,您可以在重构时感到安全(特别是在多开发人员项目中工作时)

我不确定你选择的具体平台,但是你看过代码覆盖的工具,比如Bullseye 。 它不会为您提供对整体功能的分析(以及是否有偏差),但它可以帮助您确保您的测试能够充分执行目标库。 它是一个商业应用程序,但我知道其他语言也有类似的OSS版本,如果您需要,可能会有免费许可证。