问题标签 [dead-code]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
21 回答
166853 浏览

java - 如何在 Java 项目中查找未使用/死代码

您使用什么工具在大型 Java 项目中查找未使用/死代码?我们的产品已经开发了几年,手动检测不再使用的代码变得非常困难。但是,我们确实尝试删除尽可能多的未使用代码。

对一般策略/技术(特定工具除外)的建议也值得赞赏。

编辑:请注意,我们已经使用了代码覆盖工具(Clover、IntelliJ),但这些帮助不大。死代码仍然有单元测试,并显示为已覆盖。我想一个理想的工具会识别出几乎没有其他代码依赖于它的代码集群,从而允许手动检查文档。

0 投票
8 回答
36801 浏览

c++ - 遗留 C/C++ 项目中的死代码检测

您将如何在 C/C++ 代码中进行死代码检测?我有一个相当大的代码库可供使用,至少 10-15% 是死代码。是否有任何基于 Unix 的工具来识别这些区域?有些代码仍然使用大量的预处理器,自动化过程可以处理吗?

0 投票
3 回答
4911 浏览

c++ - Windows 上本机 C++ 应用程序中的自动死代码检测?

背景

在几年的时间里,我有一个用原生 C++ 编写的应用程序,大约 60 KLOC。有许多死掉的函数和类(可能有 10-15% 类似于下面提出的基于 Unix 的类似问题)。我们最近开始对所有新代码进行单元测试,并尽可能将其应用于修改后的代码。但是,我会制作一个 SWAG,我们目前的测试覆盖率不到 5%。

假设/约束

方法和/或工具必须支持:

  • 本机(即非托管)C++
  • 视窗
  • 视觉工作室 2005
  • 不得要求用户提供测试用例进行覆盖。(例如不能依赖单元测试来生成代码覆盖率)

如果这些方法支持的不仅仅是这些要求,那就太好了。

注意:我们目前使用 Visual Studio 2005 的专业版,而不是 Team System。因此,使用 Team System 可能是一个有效的建议(我不知道,我从未使用过它)但是我希望它不是唯一的解决方案。

为什么使用单元测试进行代码覆盖是有问题的

我相信通用工具不可能在任何零误报的任意应用程序中找到所有死的(例如无法访问的代码)(我认为这相当于停机问题)。但是,我也相信通用工具有可能找到许多类型的死代码,这些代码很可能实际上是死的,例如在代码中永远不会被其他任何东西引用的类或函数。

通过使用单元测试来提供这种覆盖率,您不再使用通用算法,从而增加了您可以检测到的死代码的百分比以及任何命中都不是误报的概率。相反,使用单元测试可能会导致误报,因为单元测试本身可能是执行给定代码的唯一方法。理想情况下,我会进行回归测试,使用所有外部可用的方法、API、用户控件等,这将作为代码覆盖率分析的基线测量,以排除某些方法是误报。然而遗憾的是,我目前没有这个自动化测试。

但是,由于我拥有如此庞大的代码库和如此低的测试用例覆盖率,因此我正在寻找可以提供帮助的东西,而无需花费大量时间来编写测试用例。

问题

您如何使用 Visual Studio 2005 开发环境在 Windows 平台上的本机 C++ 应用程序中以自动或半自动方式检测死代码?

也可以看看

遗留 C/C++ 项目中的死代码检测 我想告诉 VC++ 编译器编译所有代码。可以做到吗?

0 投票
7 回答
13301 浏览

c++ - 死代码识别 (C++)

我有一个在 Visual Studio 2008 下编译的大型遗留 C++ 项目。我知道有相当数量的“死”代码无法在任何地方访问——未调用的方法,未使用的整个类。

我正在寻找一种可以通过静态分析识别这一点的工具。

这个问题:遗留 C/C++ 项目中的死代码检测建议使用代码覆盖工具。这不是一个选项,因为测试覆盖率不够高。

它还提到了一个-Wunreachable-code。gcc 的选项。我想要 Visual Studio 类似的东西。我们已经使用链接器的 /OPT:REF 选项来删除冗余代码,但这并没有在有用的级别报告死代码(当与 /VERBOSE 一起使用时,有超过 100,000 行,包括来自库的很多行)。

是否有更好的选项可以很好地与 Visual Studio 项目配合使用?

0 投票
2 回答
385 浏览

vhdl - Xilinx 中的“死代码”

我有一些我正在为课程编写的 VHDL 代码。但是,合成工具将 cell3、cell2 和 cell1 识别为“死”代码,并且不会对其进行合成。

我真的不知道发生了什么导致细胞 3、2、1 在合成中被移除;我已经对其进行了 5 次以上的审查,并询问了几个不同的人,但我找不到“为什么”。

不是在寻找解决方案,只是一个指向原因的指针。

0 投票
8 回答
486 浏览

code-metrics - 您如何定义“不需要的代码”?

您如何定义“不需要的代码”?


编辑:

恕我直言,任何具有 0 个活动调用成员(递归检查)的代码成员都是不需要的代码。(函数、方法、属性、变量都是成员)

0 投票
7 回答
1318 浏览

delphi - 有没有办法在 Delphi 中找到未使用的事件处理程序?

在 Delphi 中查找死代码通常非常简单:只需编译然后扫描缺少蓝点的例程。大多数时候,智能链接器非常擅长追踪它们。

问题是,这对事件处理程序不起作用,因为它们是已发布的方法,(理论上)可以通过 RTTI 以某种方式调用,即使这在实际实践中几乎从未发生过。

我正在尝试清理一个大型 VCL 表单单元,该单元在其历史上曾多次弯曲、折叠、旋转和肢解。如果我有办法找到表单的 DFM 实际未引用的事件处理程序并删除它们,那肯定会很好。有什么简单的方法可以做到这一点?例如,插件 IDE 专家?

0 投票
5 回答
23975 浏览

python - 如何在 Python 代码中找到未使用的函数?

因此,您在一个相当庞大的项目中存在一些遗留代码。如何查找和删除死函数?

我看过这两个参考资料:Findused codeTool to find unused functions in php project,但它们似乎分别特定于 C# 和 PHP。

是否有 Python 工具可以帮助您找到源代码中其他任何地方都没有引用的函数(尽管有反射/等)?

0 投票
0 回答
269 浏览

php - 在代码库中查找未使用的 PHP5 类/方法

可能重复:
如何在 PHP 项目中找到未使用的函数

如何检查 PHP5 中未使用的代码?像下面这样的东西?

  • 使用反射扫描类
  • 遵循“正常”代码token_get_all()并使用令牌 T_NEW 查找变量,然后扫描方法调用。
  • 输出类似classname (count of new declarations) methods (count of calls)
0 投票
3 回答
824 浏览

c++ - 静态变量初始化代码永远不会被调用

我有一个使用我制作的静态库的应用程序。库中的一个 .cpp 文件有一个静态变量声明,其 ctor 在一个单例上调用一个函数,该函数执行某些操作——例如添加一个字符串。

现在,当我从应用程序中使用该库时,我的单例似乎不包含任何应该添加的字符串的痕迹。

我肯定错过了一些东西,但我不知道是什么..