Google Closure Compiler:通过设置CompilerOptions删除死代码

时间:2015-07-21 01:09:31

标签: javascript obfuscation google-closure-compiler

我正在尝试通过设置相应的字段来配置Google Closure Compiler的CompilerOptions。但是,当我调用方法setRemoveDeadCode()以简单模式激活死代码删除时,仅报告“无法访问的代码”警告,并且不会删除死代码。那是为什么?

代码如下:

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

我所做的只是在方法createOptions()的末尾激活setRemoveDeadCode(),但是停用其他选项。在setCoalesceVariableNames()等其他选项上做同样的事情也可以正常工作。任何见解都将不胜感激。

1 个答案:

答案 0 :(得分:1)

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

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

它不会寻找恒定值。然而,还有另一种选择," Fold Constants" (通过setFoldConstants)将if移除{{1}}。