История:Ловля все объявленные переменные в ESLint
В настоящее время я занимаюсь разработкой конкретного ESLint
правила (link), чтобы поймать все места, где Eсть переменная, тени встроенный транспортир глобальная переменная, например browser
или element
.
Вот как правило выглядит на данный момент:
module.exports = function (context) {
var protractorGlobals = [
'browser',
'protractor',
'element',
'by',
'$',
'$$'
]
function checkVariables (node) {
var variables = context.getDeclaredVariables(node)
for (var i = 0; i < variables.length; ++i) {
if (protractorGlobals.indexOf(variables[i].name) !== -1) {
context.report(node, 'Unexpected Protractor built-in global variable shadowing')
}
}
}
return {
'VariableDeclaration': checkVariables,
'FunctionDeclaration': checkVariables,
'FunctionExpression': checkVariables,
'CatchClause': checkVariables
}
}
Как вы можете видеть, я ищу для всех переменных и функций деклараций, функциональных выражений, улов положений и переключения заявления, охватывающее следующие случаи :
var browser = "something";
function test (browser) {};
var browser;
function browser() {};
var browser = 1;
for (var browser = 0; by < 10; ++by) {}
try { json = JSON.parse(input) } catch (browser) {}
Вопрос:
У меня охватывал все места, где новый Varia Введенный в текущий объем? Есть ли более общий способ, чтобы получить объявленные переменные в любом месте кода, не догадываясь и явно определяя места их поиска?
Не уверен, что это относится к вам, но вы можете проверить конструкторы функций создания строки, eval, setTimeout и setInterval. Даже не уверен, что это легко возможно с помощью eslint. – nils