Javascript 如何使用ESLint自定义规则分析JS文本/标识符
我将用一个例子来解释这个场景 假设我有以下JS代码:Javascript 如何使用ESLint自定义规则分析JS文本/标识符,javascript,eslint,static-analysis,eslintrc,typescript-eslint,Javascript,Eslint,Static Analysis,Eslintrc,Typescript Eslint,我将用一个例子来解释这个场景 假设我有以下JS代码: $.ajax({ url: '/Department/GetAllUsers', type: "POST", data: data, success: function (result) { //Some Code }, error: function () { //Some Code } }); 我想限制对控制器动作的调用。因此,我
$.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是否可能实现这一点
简言之,我想要像context.SemanticModel.GetSymbolInfo(节点)这样的东西,它在Roslyn中用于C#代码分析
谢谢您可以使用ESLint的scope manager 在ESLint自己的代码库中有许多使用范围管理器的示例: 使用此API,您可以跟踪变量引用并检查其赋值
请注意,这有一些限制。例如,您将无法跨模块边界或功能边界跟踪值。您可以使用ESLint的范围管理器 在ESLint自己的代码库中有许多使用范围管理器的示例: 使用此API,您可以跟踪变量引用并检查其赋值
请注意,这有一些限制。例如,您将无法跨模块边界或函数边界跟踪值。如何准确地检查
var URL={main:'/Department/getalUsers'}代码>?如何准确地检查var url={main:'/Department/getalluser'}代码>?