0

ExpressionStatementESLint では、や などのキーワードを使用して、Esprima パーサーを介してコードから生成された抽象構文ツリー内の特定のノードにアクセスできますVariableDeclaratoroptions特定のノードをESLintに渡すことができる assert 関数を開発したいと考えています。

function validateExpressionStatement(context){
  return {
    context.options[1]: function (node) {
      var source = context.getSource();
      var sourceEval = eval(source);
      if (!(sourceEval == context.options[0])) {
        assertOk(false, "", `Expected a return value of ${context.options[0]}.`);
      }
      else {
        assertOk(true, `${context.options[0]} was returned correctly.`)
      }
    }
  }
}

私のアサートは、ユーザーが入力した値を options 配列にプッシュするので、コードをテストする前にチェックするノードを選択できます。

function assertExpressionStatementReturn(value, treelevel){
    config["rules"]["validate-expression-statement"][1] = value;
    config["rules"]["validate-expression-statemet"][2] = treelevel;
}

この特定の関数では、AST 内の特定のノードからの戻り値がアサートされているかどうかを確認しています。私context.options[1]はうまくいかないことを知っています。これを達成する方法はありますか?私が探しているものを明確にする必要がある場合は、お知らせください。

4

1 に答える 1

0

あなたが求めていることを誤解していたら申し訳ありませんが、それを行うESLintリポジトリにはすでにいくつかのルールがあります。たとえばcomma-style、AST ノード タイプのリストを例外として受け入れることができます。コードはここにあります。

于 2015-11-16T01:46:19.803 に答える