问题标签 [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 投票
2 回答
156 浏览

ios - 如何更好地初始化字符串以避免死存储

我发现了一些这样的问题,但我找不到这个特定的问题。我有许多初始化为的字符串

然后根据 if/else 块的结果为其分配一个值:

然后string在该方法的后面使用。

我怎样才能做到这一点,而不会在 alloc/init 阶段留下一个死存储?如果我在 if (或 else )内分配,当我需要它的时候,字符串已经消失了几行。

0 投票
1 回答
3253 浏览

ruby-on-rails - 查找 Dead Rails 代码

什么是找到不再被调用的方法的好方法?我正在重构一个大型 Rails 应用程序,你能找到的最糟糕的事情是不再使用的代码。

0 投票
1 回答
1045 浏览

function - gcc 的奇怪行为,以及它的 ld (链接器)选项来删除未使用的函数

我试图在我的代码中删除未使用的函数(没有对它们进行调用),该代码使用 gcc/g++ 在 x86 / Linux 上构建。从 gcc 手册中阅读时,我使用以下选项:

Make 命令输出确实显示了一些未使用的部分已删除消息,如下所示:

但为了确保,我试图找出该符号是否存在于 *.o 目标文件中,所以当我这样做时:

我看到输出如下

这是怎么回事?

这些 gcc/ld 选项是否真的删除了未使用的功能:

0 投票
2 回答
3237 浏览

objective-c - 存储到“有效”的值永远不会被读取

我有一个验证方法,通过它我可以分析特定变量是否通过验证标准。

这是代码:

我得到了 3 个Value stored to 'valid' is never read奇怪的实例,因为最终它会在方法结束时返回。

我在设置变量的前三个实例中得到它,仅在这三个实例上:

有人可以帮忙吗?

0 投票
1 回答
266 浏览

javascript - JavaScript 引擎可能会忽略什么样的代码?

(这有点 XY 问题,但我决定问我感兴趣的问题,而不是我目前严格需要的问题。)我知道各种现代 JavaScript 引擎都有死代码消除器和其他方法来摆脱没有效果或副作用的代码,但是您如何识别和/或编写此类代码?

关于死代码消除的Wikipedia 文章给出了一个无法访问代码的简单示例,即发生在return函数中的无条件语句之后的代码。但是我可以指望现代的主流 JavaScript 引擎来消除这些代码吗?例如,Rhino 或 V8 会消除此代码吗?

没有操作功能怎么办?

所有这些例子都愚弄了 JSHint,虽然 JSLint 捕捉到了奇怪的赋值 foo = foo,你仍然可以很容易地用 noops 或一对变量来欺骗它:

如果他们可以欺骗静态代码分析器,他们会欺骗引擎本身吗?

如果没有仔细检查所有不同 JavaScript 引擎的源代码,是否有任何方法可以识别和/或构建在程序运行之前肯定会被消除的代码类型,如果这样的代码是没有被忽略,还是仅仅是一种设计选择?

0 投票
5 回答
3696 浏览

c++ - C++ - 执行速度测试的正确方法是什么?

我搜索了许多询问相关信息的问题,但答案并不完全符合我想要的答案。我会尽力解释这个问题。

基本上,在发布模式下运行代码时,编译器似乎会删除大多数冗余或死代码。所以它最终什么都不检查。一些修复是使代码存储到某个变量,但随后编译只是删除了循环并存储了它看起来的最后一个增量。

现在我确实希望进行优化以改进所使用的代码,但我仍然想要它最初所做的一切例如,如果我让它循环代码 100,000 次,我希望它实际执行代码 100,000 次。我不确定如何修改 Visual Studio 2010 上的编译器,以便在发布模式下编译时进行最小的优化。我非常想准确计时,但我不确定如何准确计时。

起初我认为在不调试的情况下在调试中运行可能会解决问题,因为结果与 Java 应用程序的结果相匹配,但在发布模式下运行时结果快得离谱,这让我感到困惑。我不确定 C++ 在优化方面是否更好,或者是否更改了大量代码。

有没有办法也可以反汇编代码并查看编译器将代码编译成什么?这将是我希望看到的另一项测试,但我对这些东西知之甚少,任何朝着正确方向的东西都将不胜感激。好吧,感谢任何能理解我要求的人。我很乐意回答有关手头问题的任何误解或不确定性的任何问题。

0 投票
4 回答
3995 浏览

java - Eclipse 中不需要的死代码警告

以下代码在 Eclipse 中给了我一个“死代码”警告:

警告出现在root = e;.

我查找了死代码,发现它是代码帽没有效果,因此会被 java 编译器忽略。

但是,这个根是我班级中的一个私有字段,因此我的程序功能有必要这样做。

编译器真的会忽略这一点吗?我怎么能阻止它?为什么它认为它是死代码?

0 投票
3 回答
482 浏览

java - 带有 2 个 if 的 while 循环中的死代码警告

我不明白为什么 Eclipse 在第二个 if 条件下给我一个死代码警告:

LinenumberReader 的 readLine() 方法的 jdoc 表示,如果到达流的末尾,它将返回null,因此如果在整个文本 ( line == null) 中都没有找到匹配项,它应该抛出异常。
但是怎么了?

0 投票
2 回答
1062 浏览

c - 如何在 Visual Studio 2005 上检测未引用的 C/C++ 代码?

我已经使用 Visual Studio 2005 好几年了,通常项目会不断增长,但现在我有一个项目正在缩小规模,我要拿走其中的很大一部分(几乎一半)......我希望通过删除入口点函数,编译器会给我一个未引用函数列表,然后我将删除这些函数,依此类推,直到完全删除整个不需要的代码......但令我惊讶的是,没有列出“未引用函数” .

我记得在 Turbo C 的旧时代,如果有一个没有在任何地方调用的函数,编译器会立即抗议......我不明白为什么 Visual Studio 没有这个功能,我已经检查了整个属性页面并且找不到可以帮助我以系统方式摆脱死代码的东西。

Visual Studio 可以检测到死代码吗?如果是这样,我该如何启用这样的功能?

0 投票
0 回答
718 浏览

c++ - VS C++ 死代码消除

我在 C++ VS 2010 中有一个小项目,它使用了几个静态链接库(.lib 文件)。

此选项已打开:OPT:REF、OPT:ICF、/GL、GR-

当我将未使用的方法添加到使用静态库中的一些代码的类中时,编译器会生成更大的代码(即在最终可执行文件中包含此方法)

为什么?我究竟做错了什么?