eslint-plugin-intl-mobile
Version:
Intl Mobile ESLint Rules.
36 lines (30 loc) • 768 B
JavaScript
// 用于检测 JSON.parse 没有用 try catch
;
const { get } = require('lodash');
const desc = 'JSON.parse need try catch';
module.exports = {
meta: {
type: 'suggestion',
docs: {
description: desc,
category: 'Best Practices',
},
},
create: function(context){
return {
CallExpression(node) {
if (get(node, 'callee.object.name') === 'JSON' && get(node, 'callee.property.name') === 'parse') {
let p = node.parent;
let hasTryFlg = false;
while (p && !hasTryFlg) {
if (p.type === 'TryStatement') hasTryFlg = true;
p = p.parent;
}
if (!hasTryFlg) {
context.report(node, desc);
}
}
},
}
},
}