我们有一个项目必须彻底解开,以便按时发货.它中有很多代码没有实际使用.我想清理代码,删除任何死木.我有权做到这一点,我可以说服人们,这是一个商业上合理的事情.[我有很多自动化单元测试,一些自动验收测试和一组可以手动回归测试的测试人员.]
我的问题:我是一名经理,我不知道如何解决这个问题.
有帮助吗?
确保所有内容都已签入您的源代码控制系统并标记为特定版本(预发行版或您记得的版本)
代码现场和异地备份
对代码运行静态分析工具来识别死木
删除枯木
重建并重新运行所有测试
或者你可以忽略它;-)
我认为问题是如何找到未使用的代码,对吗?不同语言的答案略有不同,但有一些通用的方法。我离开学校后的第一份工作是在一个大型运输项目中查找并删除数万行未使用的代码。
第一个原则是关注那些从未被调用过的东西,而不仅仅是不必要的东西。查找并删除前者是一种非常机械且低风险的方法。后者是一种重构工作,并且稍微复杂一些。最好总是先拿出简单的东西。
鉴于此,您想要的是静态分析的一部分,并且维基百科上有大量可用的静态分析工具。您还应该在堆栈溢出中搜索“死代码”和您的语言(C++、Java 等)。过去已经以多种不同的方式提出了这个问题。通常,您运行一个工具,查看它所说的未使用的内容,将其删除,然后再次运行该工具以查找只有死代码正在使用的内容。重复。
从经理的角度来看,你绝对是对的。事实上,你有很多单元测试意味着两件事:你可能正在为不使用的东西维护单元测试(并且需要花钱),并且你拥有的测试将让你进行这些类型的机械更改信心。最好的选择是在你的团队中找到喜欢自动化工作的人;他们通常有正确的心态来从事此类工作。如果有多个人致力于此工作,我会让一个人学习静态分析器并制定出一种可遵循的模式。然后将团队分成不同的代码部分,这样他们就不会发生冲突。
这种工作进展得非常快,而且通常会有很好的回报。只需确保人们一次删除一件、编译、做一些简单的测试,然后在继续之前提交。定期(通常在进行较大更改后,或至少每天)进行完整的干净重建和“大型”测试,以确保您确实没有破坏任何东西。你能做的最糟糕的事情就是尝试找到系统中的每一段死代码并立即将其全部删除,然后提交。我保证删除其中一个会破坏系统,而且你永远无法弄清楚它是哪一个。但如果你有条不紊地工作,这可能是一项风险非常低的工作。