zoukankan      html  css  js  c++  java
  • [Javascript AST] 4. Continue: Report ESLint error

    const disallowedMethods = ["log", "info", "warn", "error", "dir"];
    
    module.exports = {
      meta: {
        docs: {
          description: "Disallow use of console",
          category: "Best Practices",
          recommended: true
        }
      },
      create(context) {
        return {
          Identifier(node) {
            
            const isConsoleCall = looksLike(node, {
              name: "console",
              parent: {
                type: "MemberExpression",
                property: {
                  name: val => disallowedMethods.includes(val)
                }
              }
            });
            // find the identifier with name 'console'
            if (!isConsoleCall) {
              return;
            }
    
            context.report({
              node,
              message: "Using {{identifier}} is not allowed",
              data: {
                 identifier: node.name // console
              }
            });
          }
        };
      }
    };
    
    function looksLike(a, b) {
      return (
        a &&
        b &&
        Object.keys(b).every(bKey => {
          const bVal = b[bKey];
          const aVal = a[bKey];
          if (typeof bVal === "function") {
            return bVal(aVal);
          }
          return isPrimitive(bVal) ? bVal === aVal : looksLike(aVal, bVal);
        })
      );
    }
    
    function isPrimitive(val) {
      return val == null || /^[sbn]/.test(typeof val);
    }

    We can use placeholder for more detail information:

    "Using {{identifier}} is not allowed"

    The placeholder can be found in data prop:

              data: {
                 identifier: node.name // console
              }
  • 相关阅读:
    svn-Subversion
    英语学习-2020年4月
    自动化-研究
    数据库-存储过程
    未来软件测试的发展趋势
    学习alex---人生导师
    自动化测试-----总结
    接口测试总结
    jmeter-接口测试项目
    接口测试jmeter
  • 原文地址:https://www.cnblogs.com/Answer1215/p/7616029.html
Copyright © 2011-2022 走看看