2011-03-08 149 views
1

我开始从以前的程序员C++代码工作。我知道有很多不被调用的函数和未被使用和/或初始化的变量。我想知道是否有一些工具可以自动“清理”代码并删除所有这些未使用的代码。我正在谈论源代码,而不是最终的构建输出。我更喜欢开源解决方案。如何删除未使用的变量和函数

+0

我只是不知道如何编程代码让得到这个方式。我痴迷地清理了我不使用的东西。如果后来发现它们确实有助于达到某种目的,则源代码控制可以让我们将它们还原。 – 2011-03-08 09:35:21

+0

我完全同意你的意见。但在这种情况下,我正在与其他程序员的代码工作,我必须清理它,所以我没有其他解决方案:) – flow 2011-03-08 11:46:12

回答

0

许多编译器/链接器会在一定程度上修剪您的代码,如Visual C++/OPT:REF切换。

+0

谢谢。那么开源工具呢? – flow 2011-03-08 09:32:13

+0

@Werner:这是有点[重复] [这个问题](http://stackoverflow.com/questions/1677585/pruning-a-static-library-in-c)...我不知道任何开源工具,但我不认为他们可以做很多事情,因为他们需要内部的代码知识,只有编译器/链接器才有。 – Mehrdad 2011-03-08 09:33:57

+1

我们是在谈论构建输出或源代码?我很想知道是否有一些工具可以完成后者。最好。 – JoeSlav 2011-03-08 09:34:28

0

你也许能够得到一些有用的东西了运行CPPCheck执行代码的静态分析。将所有错误作为警告处理也将有助于确定哪些变量未被使用,因为代码在解决之前不会被编译。

你可以做的另一件事是创建一套单元测试来覆盖预期的功能,并通过覆盖工具(如gcov,如果你使用GCC)运行它,这将显示哪些代码行被执行和多少次。

0

这是编译器/连接器的工作,从您的文件中去掉死代码。 编译源代码用gcc标志-fdata截面和-ffunction截面然后用标志-GC-部分链接您的二进制文件。

我想你也可以产生在编译时静态未使用的变量警告。

最后,你可以使用gcov的或同等工具,代码覆盖率