Más contenido relacionado
La actualidad más candente (20)
Similar a MonotaRO LT - ESLintの仕組み (20)
Más de 株式会社MonotaRO Tech Team (20)
MonotaRO LT - ESLintの仕組み
- 2. ESLint - The pluggable linting utility for
JavaScript and JSX
公式サイトおよびGitHubリポジトリ
● JavaScript界におけるLinterのデファクトスタンダード
○ Lintはコードを静的解析してバグやスタイル違反を指摘するツール
○ 昔はJSLint, JSHintがあったが、ESLintに取って代わられた
● 今日は下記3点について
○ ESLintのコードチェック方法
○ Pluggableとは?
○ JavaScriptコーディング規約を変えよう
※使い方の話はないので、Getting Started with ESLintを見てね
2
- 5. 抽象構文木を作成
5
> var espree = require('espree')
> var res = espree.parse("var name = 'eslint';")
> JSON.stringify(res)
{"type":"Program",
"start":0,
"end":20,
"body":[
{"type":"VariableDeclaration",
"start":0,
"end":20,
"declarations":[
{"type":"VariableDeclarator",
"start":4,
"end":19,
"id":{"type":"Identifier","start":4,"end":8,"name":"name"},
"init":{"type":"Literal","start":11,"end":19,"value":"eslint","raw":"'eslint'"}
}
],
"kind":"var"
}
],
"sourceType":"script"
}
- 7. レポート出力
12:8 error Missing JSDoc parameter type for 'response' valid-jsdoc
12:8 error Missing JSDoc parameter description for 'response' valid-jsdoc
15:5 error Expected method shorthand object-shorthand
15:32 error Unexpected space before function parentheses space-before-function-paren
16:9 error Expected line before comment lines-around-comment
17:51 error Expected '===' and instead saw '==' eqeqeq
7
各種形式でレポート出力できる(ソースコード)
下記はデフォルト(stylish.sh)例だが、JUnit形式で出力してCIに食わせることもできる
- 11. プラグインの作り方
"use strict";
// Requirements 必要に応じて利用したいライブラリを書く
var requireIndex = require("requireindex");
// Plugin Definition
// import all rules in lib/rules ここにプラグインが読み込みたいルールを格納しておけばOK
module.exports.rules = requireIndex(__dirname + "/rules");
// import processors (必要に応じてjs以外にも対応できるように。 .jsxや.vueなどが対象?)
module.exports.processors = {
// add your processors here
};
11