【发布时间】:2021-01-11 19:46:23
【问题描述】:
我会用一个例子来解释这个场景。
假设我有以下 JS 代码:
$.ajax({
url: '/Department/GetAllUsers',
type: "POST",
data: data,
success: function (result) {
//Some Code
},
error: function () {
//Some Code
}
});
我想限制对控制器该操作的调用。所以我为此编写了以下自定义 ES Lint 规则:
module.exports = {
meta: {
type: "problem",
docs: {
description: "Prohibited Method",
category: "Method",
recommended: true,
url: ""
},
messages: {
messageDefault: "This method is Prohibited to use"
},
fixable: "code",
schema: [] // no options
},
create: function (context) {
return {
Literal(node) {
var literalValue = node.value.toString();
var cont = literalValue.split("/").filter(x => x.length > 1);
{
if (cont[0] === 'Department' && cont[1] === 'GetAllUsers') {
context.report({
node: node,
messageId: "messageDefault",
});
}
}
}
};
}
};
所以我在这里限制使用 'Department/GetAllUsers' ,这很好用。当我拆分字符串或将字符串分配给变量时,就会出现问题。例如
var controller = "Department";
var action = "GetAllUsers";
$.ajax({
url: "/" + controller + "/" + action,
//or '/Department/' + 'GetAllUsers'
type: "POST",
data: data,
success: function (result) {
//Some Code
},
error: function () {
//Some Code
}
});
这里的限制不起作用,有没有办法可以解决 url 上的变量值?这甚至可以使用 ESLint 吗?
简而言之,我想要在 Roslyn 中用于 C# 代码分析的 context.SemanticModel.GetSymbolInfo(node) 之类的东西。
谢谢
【问题讨论】:
标签: javascript eslint static-analysis eslintrc typescript-eslint