Проблема:Выделяют методы и свойства
Я в настоящее время улучшение valid-expect
rule для eslint-plugin-jasmine
пакета пытается справиться еще один недопустимый жасмин expect()
использование при согласовани не называется:
expect(true).toBeDefined;
Действительное использование:
expect(true).toBeDefined();
Я становлюсь довольно близко - я могу определить ине, что есть выражение члена на expect()
:
// matcher was not called
MemberExpression: function (node) {
if (node.object && node.object.callee.name === 'expect') {
console.log(node.property)
}
}
Но node.property
в обоих действительных и недействительных случаях из Identifier
типа:
Node {
type: 'Identifier',
start: 13,
end: 24,
loc:
SourceLocation {
start: Position { line: 1, column: 13 },
end: Position { line: 1, column: 24 } },
range: [ 13, 24 ],
name: 'toBeDefined' }
И нет ничего очевидно, указывая, что это свойства или метода.
Вопрос:
Как я могу определить, является ли свойство отозваны или не в ESLint
?
Интересно, спасибо за это! Мне действительно нужно было перейти к родительскому принципу родителя и проверить тип. 'Node.parent.parent.type' будет' CallExpression', если это вызов метода и 'ExpressionStatement', если свойство ... это то, что Вы имели в виду? Обратите внимание, что 'node.parent.type' все равно будет' MemberExpression' в обоих случаях. (Https://gist.github.com/alecxe/f34fe3140ab13ac7ab5626fb8fcd637c#file-valid-expect-js-L20) – alecxe
Да, у вас есть чтобы перейти на узел бабушки и дедушки. Извини за это. –
Хорошо, что работает, покрывается испытаниями и отправляет PR. Благодарю. – alecxe