【问题标题】:Use Compiler/Linker for C++ Code Clean-up使用编译器/链接器进行 C++ 代码清理
【发布时间】:2008-10-15 06:52:37
【问题描述】:

我将 VS2008 用于 C++ 项目。代码很老,经过很多人的手。有几个不再使用的类层次结构、函数、枚举等。

有没有办法让编译器/链接器列出已声明或定义但未在任何地方引用的标识符?

【问题讨论】:

    标签: c++ visual-studio-2008 maintenance


    【解决方案1】:

    VS 将警告在函数中声明但未使用的标识符,您可能需要移至警告级别 4,但对于全局变量,以及寻找许多其他潜在问题,您最好尝试 lintvisual lint

    【讨论】:

      【解决方案2】:

      PC-Lint“整个项目”分析(同时分析多个文件)可以做到这一点。如果您需要帮助设置,请随时与我联系。

      【讨论】:

        【解决方案3】:

        不确定 Visual C++,但 g++ 会警告未使用的变量。您可以尝试通过 g++ 传递您的代码。

        【讨论】:

        • 这只会显示未使用的变量。如果我没看错的话,Vulcan 会写关于根除整个未使用的类和类型的文章。
        【解决方案4】:
        【解决方案5】:

        PC-Lint 会这样做。但是,不要一无所有地运行它。我做到了并且有 120 万个错误——相当于每行约 5 个。这被大大推高了,因为几乎每个 UI 类都引用了 resource.h 和 resource.h 列出了很多 #defines,lint 说“用 const int 替换定义”。一个好的起点阅读this post on the Power of 2 blog

        【讨论】:

          【解决方案6】:

          对于最明显的未使用声明,高警告级别会解决这个问题。

          关于未使用代码的识别,deadstripper(不是深夜犯罪剧的中心,而是在链接期间剔除未使用代码的机制)只会让您部分获得帮助 - 您真正想要的是一个代码覆盖率分析工具。存在很多,不幸的是它们都相当昂贵。

          具有良好上下文标记和调用图机制的强大编辑器也会有所帮助。

          【讨论】:

          • "...,不幸的是,它们都相当昂贵。" PC-Lint 的成本约为 250 美元。我们在这里使用的是 7.5,它来自 3.5" 软盘,并拥有 1998 年的版权。因此,我们拥有它的 10 年时间相等,每年的成本约为 27 美元,这真是太少了。
          【解决方案7】:

          参考 Graham 的帖子:FWIW 我从未真正看到使用 resource.h 文件的“用 const int 替换定义”消息 - 尽管其他一些(之前在同一位置定义)可能会很痛苦。

          无论如何,如果某个特定的 PC-Lint 消息妨碍了您发现您正在寻找的内容,那么在您的 options.lnt 文件中使用 -e 将其关闭是一件简单的事情。还需要注意 -w 选项,它允许您全局设置警告级别(例如 -w0 +e766 关闭除消息 766 之外的所有内容)。

          对于未使用的符号和声明,您需要注意诸如 755(信息——未引用全局宏)、758(信息——未引用全局枚举)、769(信息——全局枚举常量)等消息未引用)和 1714(信息 -- 未引用成员函数)。请记住,这些在单个文件分析中被抑制,因此您需要运行整个项目分析才能看到它们。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-10-22
            • 2014-10-25
            • 2020-11-11
            • 2021-12-28
            相关资源
            最近更新 更多