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

Optimization 如何删除未使用的变量和函数 我开始使用以前程序员的C++代码。我知道有很多函数没有被调用,变量没有被使用和/或初始化。我想知道是否有一些工具可以自动清理代码并删除所有这些未使用的代码。我谈论的是源代码,而不是最终的构建输出。我更喜欢开源解决方案。,optimization,analysis,coding-style,Optimization,Analysis,Coding Style,许多编译器/链接器会在一定程度上为您修剪代码,比如's/OPT:REF开关。您可能会从运行中获得一些有用的东西,对代码执行静态分析。将所有错误视为警告也将有助于确定哪些变量未使用,因为代码在解析之前不会编译 您可以做的另一件事是创建一组单元测试来覆盖预期的功能,并通过覆盖工具(如gcov)运行它。如果您使用GCC,这将显示执行了哪些代码行以及执行了多少次。这是从二进制文件中删除死代码的编译器/链接器作业。 使用gcc标志-fdata部分和-ffunction部分编译源代码,然后将二进制文件链接到

许多编译器/链接器会在一定程度上为您修剪代码,比如's/OPT:REF开关。

您可能会从运行中获得一些有用的东西,对代码执行静态分析。将所有错误视为警告也将有助于确定哪些变量未使用,因为代码在解析之前不会编译


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

这是从二进制文件中删除死代码的编译器/链接器作业。 使用gcc标志-fdata部分和-ffunction部分编译源代码,然后将二进制文件链接到标志-gc部分

我认为您还可以在编译时为静态未使用的变量生成警告


最后,您可以使用gcov或等效工具进行代码覆盖

@Werner:这有点像是对。。。我不知道有什么开源工具,但我认为它们做不了什么,因为它们需要代码的内部知识,而这只有编译器/链接器才有。我们是在谈论构建输出还是源代码?我想知道是否有一些工具可以实现后者。最好的。我只是不知道程序员是怎么让代码变成这样的。我痴迷地清理我不用的东西。如果后来发现它们确实有用,源代码管理可以让我把它们取回。我完全同意你的看法。但在这种情况下,我使用的是另一个程序员的代码,我必须清理它,因此我没有其他解决方案: