Как искать родителя объекта - селекторы Eslint с espree - PullRequest
0 голосов
/ 10 июня 2019

В настоящее время я работаю над некоторым кодом, чтобы запретить использование глобальных констант в области ввода пользователя, которая позволяет им использовать формулы.

Я использую espree в качестве парсера.

В настоящее время у меня есть некоторый рабочий код для поиска использования глобального или непосредственного потомка глобального, но если я установлю что-то вроде Parent.Child0.Child1, правило перестанет работать.

Я думаю, было бы легчеобнаружение, что при любом количестве потомков, если родитель находится в черном списке, мы должны запретить предложение, но я не знаю, как получить к нему доступ.

Это может быть довольно просто, но я ничего не нашел по этой темеЯ взглянул на эту страницу для справки, но у нее не было ответа: https://eslint.org/docs/developer-guide/selectors

const allowedReadOnlyGlobals = ['object1', 'object3', 'object3'];
allowedReadOnlyGlobals.forEach(globalObj =>
    disallowedSelectors.push({
        selector: `AssignmentExpression[left.object.name="${globalObj}"]`,
        message: `It is not allowed to replace members of the '${globalObj}' object.`
    })
);

Я ожидаю какое-то правило, подобное этому, но я не уверен, что оно будет существовать

selector: `AssignmentExpression[object.parent="${globalObj}"]`,

(остальная часть кода, я ожидаю, что он будет таким же)

1 Ответ

0 голосов
/ 11 июня 2019

После большого количества исследований запрос селектора был следующим:

selector: `AssignmentExpression[left] MemberExpression[object.name="${globalObj}"]`,

Я ожидаю, что это поможет кому-то в будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...