improve suspicious option detection (#3749)
This commit is contained in:
@@ -1012,7 +1012,7 @@ function log_suspects(minify_options, component) {
|
|||||||
var defs = default_options[component];
|
var defs = default_options[component];
|
||||||
var suspects = Object.keys(defs).filter(function(name) {
|
var suspects = Object.keys(defs).filter(function(name) {
|
||||||
var flip = name == "keep_fargs";
|
var flip = name == "keep_fargs";
|
||||||
if (flip ? name in options : (name in options ? options : defs)[name]) {
|
if (flip === !(name in options ? options : defs)[name]) {
|
||||||
var m = JSON.parse(JSON.stringify(minify_options));
|
var m = JSON.parse(JSON.stringify(minify_options));
|
||||||
var o = JSON.parse(JSON.stringify(options));
|
var o = JSON.parse(JSON.stringify(options));
|
||||||
o[name] = flip;
|
o[name] = flip;
|
||||||
@@ -1036,20 +1036,29 @@ function log_suspects(minify_options, component) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function log_rename(options) {
|
function log_suspects_global(options) {
|
||||||
var m = JSON.parse(options);
|
var o = {};
|
||||||
m.rename = false;
|
UglifyJS.minify("", o);
|
||||||
var result = UglifyJS.minify(original_code, m);
|
var suspects = Object.keys(o).filter(function(component) {
|
||||||
if (result.error) {
|
return typeof o[component] != "object";
|
||||||
errorln("Error testing options.rename");
|
}).filter(function(component) {
|
||||||
errorln(result.error);
|
var m = JSON.parse(options);
|
||||||
} else {
|
m[component] = false;
|
||||||
var r = sandbox.run_code(result.code, sandbox.has_toplevel(m));
|
var result = UglifyJS.minify(original_code, m);
|
||||||
if (sandbox.same_stdout(original_result, r)) {
|
if (result.error) {
|
||||||
errorln("Suspicious options:");
|
errorln("Error testing options." + component);
|
||||||
errorln(" rename");
|
errorln(result.error);
|
||||||
errorln();
|
} else {
|
||||||
|
var r = sandbox.run_code(result.code, sandbox.has_toplevel(m));
|
||||||
|
return sandbox.same_stdout(original_result, r);
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
if (suspects.length > 0) {
|
||||||
|
errorln("Suspicious options:");
|
||||||
|
suspects.forEach(function(name) {
|
||||||
|
errorln(" " + name);
|
||||||
|
});
|
||||||
|
errorln();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1099,7 +1108,7 @@ function log(options) {
|
|||||||
errorln();
|
errorln();
|
||||||
if (!ok && typeof uglify_code == "string") {
|
if (!ok && typeof uglify_code == "string") {
|
||||||
Object.keys(default_options).forEach(log_suspects.bind(null, JSON.parse(options)));
|
Object.keys(default_options).forEach(log_suspects.bind(null, JSON.parse(options)));
|
||||||
log_rename(options);
|
log_suspects_global(options);
|
||||||
errorln("!!!!!! Failed... round " + round);
|
errorln("!!!!!! Failed... round " + round);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user