Merge pull request #29860 from RyanCavanaugh/noEval

Enable no-eval rule
This commit is contained in:
Ryan Cavanaugh 2019-02-11 11:47:05 -08:00 committed by GitHub
commit 75101d4b72
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 13 additions and 1 deletions

View File

@ -56,6 +56,7 @@ namespace evaluator {
}
const evaluateText = `(function (module, exports, require, __dirname, __filename, ${globalNames.join(", ")}) { ${output.text} })`;
// tslint:disable-next-line:no-eval
const evaluateThunk = eval(evaluateText) as (module: any, exports: any, require: (id: string) => any, dirname: string, filename: string, ...globalArgs: any[]) => void;
const module: { exports: any; } = { exports: {} };
evaluateThunk.call(globals, module, module.exports, noRequire, vpath.dirname(output.file), output.file, FakeSymbol, ...globalArgs);

View File

@ -3159,6 +3159,7 @@ ${code}
const debug = new FourSlashInterface.Debug(state);
const format = new FourSlashInterface.Format(state);
const cancellation = new FourSlashInterface.Cancellation(state);
// tslint:disable-next-line:no-eval
const f = eval(wrappedCode);
f(test, goTo, plugins, verify, edit, debug, format, cancellation, FourSlashInterface.Classification, FourSlashInterface.Completion, verifyOperationIsCancelled);
}

View File

@ -77,6 +77,7 @@ namespace Utils {
const environment = getExecutionEnvironment();
switch (environment) {
case ExecutionEnvironment.Browser:
// tslint:disable-next-line:no-eval
eval(fileContents);
break;
case ExecutionEnvironment.Node:

View File

@ -766,6 +766,7 @@ namespace Harness.LanguageService {
}
setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): any {
// tslint:disable-next-line:ban
return setTimeout(callback, ms, args);
}

View File

@ -302,6 +302,7 @@ namespace Harness.Parallel.Host {
worker.timer = undefined;
}
else {
// tslint:disable-next-line:ban
worker.timer = setTimeout(killChild, data.payload.duration, data.payload);
}
break;
@ -623,6 +624,7 @@ namespace Harness.Parallel.Host {
shimNoopTestInterface(global);
}
// tslint:disable-next-line:ban
setTimeout(() => startDelayed(perfData, totalCost), 0); // Do real startup on next tick, so all unit tests have been collected
}
}

View File

@ -705,6 +705,7 @@ namespace ts.server {
// stat due to inconsistencies of fs.watch
// and efficiency of stat on modern filesystems
function startWatchTimer() {
// tslint:disable-next-line:ban
setInterval(() => {
let count = 0;
let nextToCheck = nextFileToCheck;

View File

@ -5,6 +5,11 @@
"no-unnecessary-type-assertion": true,
"array-type": [true, "array"],
"ban": [
true,
"setInterval",
"setTimeout"
],
"ban-types": {
"options": [
["Object", "Avoid using the `Object` type. Did you mean `object`?"],
@ -34,6 +39,7 @@
],
"no-bom": true,
"no-double-space": true,
"no-eval": true,
"no-in-operator": true,
"no-increment-decrement": true,
"no-inferrable-types": true,
@ -100,7 +106,6 @@
"no-console": false,
"no-debugger": false,
"no-empty-interface": false,
"no-eval": false,
"no-object-literal-type-assertion": false,
"no-shadowed-variable": false,
"no-submodule-imports": false,