2009-05-18 37 views
3

我正在使用代码库,该代码库中的代码有10年的代码。代码经历了许多增加,更改,版本和重构,而不删除任何代码或不再需要的模块。结果,代码库中散布了不必要的代码。如何审核代码库以查找不再使用/需要的代码?

有没有人想出一个全面的技术或产品来审计您的代码库,以找到多余的未使用的代码。

+0

看到这个苏答案(具体以Python,但实际上完全一般):http://stackoverflow.com/questions/3883484/using-python-code-coverage-tool-for-understanding-and-pruning-back-source-code-of/3886403#3886403 – 2010-10-08 20:18:47

回答

0

有一些工具可以帮助您识别未使用的代码和类/方法中的死代码路径。其中之一是用于Visual Basic的Project Analyzer,但也有其他的。这真的取决于你使用的语言。

你还可以考虑的一件事是重新访问你的设计文档,如果你有的话。评估您的产品的用途和所有用例。然后,看看你的UML /类图,并尝试确定你是否有不必要的对象和助手。

这也是一个真正伟大的时刻,您可以考虑体系结构的变化,因为无论如何您都会从代码库中删除大量代码。意大利面代码的移除和重新构建可以带来巨大的性能和可维护性收益,并且我赞扬您接受审计。

2

取决于什么可用的代码库是用语言,开始与使用静态分析,以确定死者的代码可能有一些工具一个好的开始。仔细检查结果与代码的交叉检查,以避免被反射或其他技巧绊倒。

我已经知道一个组织运行他们的旧生产代码一段时间后,启用了分析功能来帮助他们识别未使用的代码。他们认为处理器的速度比应用程序最初的部署速度更快,内存更大。

1

如何编写独立加载源文件的程序。使用反射和像get_declared_classes()这样的函数,您应该能够生成可从外部访问的公共方法,公共静态属性和常量的列表。

使用此列表,您可以搜索文本并查找引用每个文件的代码中的实例。把它放在电子表格中,看看哪些文件被断开。

这里有更多的反思: http://nz.php.net/oop5.reflection

你也可以建立一个图表,并检查连接,如果你想成为真正彻底: http://en.wikipedia.org/wiki/Connectivity_(graph_theory)

0

代码覆盖和剖析。

代码覆盖率应该能够告诉你理论上可以访问哪些代码,直至告诉你特定的if语句分支是否可以访问(理论上),并且分析将告诉您实际访问的内容。

性能分析还将帮助您深入了解代码中的热点位置。如果你知道这是一大堆垃圾代码,但它非常热门,那么你可能会谨慎对待,如果那些只有一次以非常特定的方式被调用过的大堆,你可能能够将它切片并替换它与一个整洁的重构。

无论你做什么,它都需要付出很多努力。

编辑:它看起来像你在做PHP。你需要的是XDebug(一个用于php的扩展),WinCachegrind(如果你可以访问linux的话,KCacheGrind更好)读取它的输出以进行分析,你需要找到一些体面的代码覆盖工具来使用与XDebug的输出。

0

对于Java代码,比尔·普格,FindBugs的父亲,引入了一些好点子,通过轻便的仪器发现死代码(当然,静态分析一些优秀的创意)在a recent presentation at JavaOne