2015-07-21 47 views
0

我想通过设置相应的字段来配置GoogleClosure编译器的CompilerOptions。但是,当我调用setRemoveDeadCode()方法激活简单模式下的死代码删除时,只会报告“无法访问的代码”警告,并且不会删除死代码。这是为什么?谷歌关闭编译器:通过设置CompilerOptions删除死代码

的代码就像下面:

if (false) console.log(x); //dead code which should be removed 

我做的仅仅是激活setRemoveDeadCode()的方法createOptions()结束,但禁用其他选项。在其他选项(如setCoalesceVariableNames())上做同样的事情可以正常工作。任何见解,将不胜感激。

回答

1

RemoveDeadCode选项会触发一个传递,查看副作用和控制流图。你可以看看它通过查看单元测试:

https://github.com/google/closure-compiler/blob/a1488d59c11fd535ded79d37c11cd418927782ce/test/com/google/javascript/jscomp/UnreachableCodeEliminationTest.java

它看起来并不恒定值。然而,还有一个选项是“折叠常数”(通过setFoldConstants),它将以固定条件移除if

+0

谢谢,你说得对。我想到了它们对编译优化的影响。 – Aliu