[AST Eslint] No Console allowed

复制代码
// eslint exercise 1 (no-console)
// When you're finished with this exercise, run
//   "npm start exercise.eslint.2"
//   to move on to the next exercise

module.exports = {
  create(context) {
    return {
      CallExpression(node) {
        if (hasIdentifierObjectAsConsole(node) && hasPropertyWithInvalidMethods(node)) {
          context.report({
            node,
            message: 'Using console is not allowed',
          })
        }
      },
    }
  },
}

function hasPropertyWithInvalidMethods (node) {
    return (
      node.callee.property && 
      ['warn', 'log', 'info'].includes(node.callee.property.name)
  )
}

function hasIdentifierObjectAsConsole(node) {
  return node.callee.object && 
    node.callee.object.type === "Identifier" && 
    node.callee.object.name === "console";
}
复制代码

 

复制代码
// eslint exercise 1 (no-console)
// When you're finished with this exercise, run
//   "npm start exercise.eslint.2"
//   to move on to the next exercise

const {RuleTester} = require('eslint')
const rule = require('./no-console')

const ruleTester = new RuleTester()
ruleTester.run('no-console', rule, {
  valid: ['info()', 'console', 'console.log', 'console.baz()'],
  invalid: [
    invalid('console.log()'),
    invalid('console.info()'),
    invalid('console.warn()'),
  ],
})

function invalid(code) {
  return {
    code,
    errors: [{message: 'Using console is not allowed'}],
  }
}
复制代码
posted @   Zhentiw  阅读(297)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2019-01-23 [Javascript] Write a Generator Function to Generate the Alphabet / Numbers
2019-01-23 [Javascript] Intercept property access with Javascript Proxy
2019-01-23 [Functional Programming 101] Crocks.js -- when to use map and when to use chain?
2019-01-23 [Git] Cherry pick
2019-01-23 [Flutter] Creating & Updating State in a Flutter Application
2018-01-23 [MST] Test mobx-state-tree Models by Recording Snapshots or Patches
2018-01-23 [MST] Attach Behavior to mobx-state-tree Models Using Actions
点击右上角即可分享
微信分享提示