如何在重构时检查我没有破坏任何东西?

时间:2009-12-20 09:14:49

标签: c++ c linux gcc refactoring

我即将开始在我的代码中重构一些函数。我有大量的单元测试,以确保我没有破坏任何东西,但我不确定他们给我的报道。是否有任何工具可以分析代码并看到功能保持不变?

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

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

5 个答案:

答案 0 :(得分:10)

gcov会为您提供单元测试的覆盖率信息。

如果不了解您计划执行的重构,就很难以准确的方式回答您的问题。

可能给出的建议是继续进行小的迭代,而不是重构代码库的大量部分,然后实现一切中断。

参考:The GNU Coverage Tool - A Brief Tutorial

答案 1 :(得分:7)

没有“简单”的方法来确保功能没有改变。您必须拥有涵盖所有可能性的完整单元测试。绝对无法测试所有内容,但您可以确保最重要的用户案例进行全面测试。

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

http://covtool.sourceforge.net/

答案 2 :(得分:5)

如果你有单元测试,但是你不满意它们将覆盖你将要重构的区域,你可以找到使用code coverage分析工具。如果您发现差距,您可以创建并仔细检查测试以填补空白,然后继续您的重构非常高兴您的(更新的)单元测试彻底覆盖 - 这对于项目来说也是长期的好

答案 3 :(得分:2)

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

答案 4 :(得分:1)

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