[Javascript AST] 2. Write a simple ESLint rule

來源:互聯網
上載者:User

標籤:node   ted   length   ant   efi   db2   explorer   func   ide   

What we want to do is checking if user write nested if statements which actually can combine to one:

// BADif (a) {  console.log("a");} else {   if (b) {    console.log("b");  } }// GOODif (a) {  console.log("a");} else if (b) {    console.log("b");  } }////////////////////////// BADif (a) {   if (b) {    console.log("b");   } } // GOODif (a) {  console.log("a");   if (b) {    console.log("b");   } } // GOODif (a && b) {    console.log("b");} 

 

Notice that if statement can write with block statement or without block statem, such as:

if(a)  if(b)    console.log(‘b‘)

 

Rule:

export default function(context) {  return {    IfStatement(node) {      var ancestors = context.getAncestors(),        parent = ancestors.pop(),        grandparent = ancestors.pop();      if (typeof grandparent === "undefined") {        return;      }      if (        (parent.type === "BlockStatement" && // if has if() { if() {}}, nested if‘s parent is a BlockStatement        parent.body.length === 1 && // if() { console.log(); if() {} }, we consider this is fine          grandparent.type === "IfStatement") || // grandparent should be a if statement        parent.consequent === node // sometime we write if() something, don‘t have blockstatement, then we check consequent should be the node iteself      ) {        context.report(node, "nested if statement");      }    }  };}

 

 

 

[Javascript AST] 2. Write a simple ESLint rule

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.