1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ESLintの標準ルールをすべてONにするJSONを作るChromeコマンド

Last updated at Posted at 2016-01-22

2016年6月11日追記
最新版で下記の設定が追加されたそうなので、このページで紹介する方法はぷっちゃけ必要ありません。。。

{
    "extends": "eslint:all"
}

参考:http://qiita.com/mysticatea/items/7bf844b32f8295eeb061


ESLintのルール設定って昔はデフォルト全部ONじゃなかったでしたっけ?v1.0.0から変わりました?
個人的には全部ONの状態から、不要な奴をOFFしてつくりたい派なので、ルールの載ってるページの内容をテキストにコピペしてごにょごにょ作ってたのですが、バージョンアップのたびにこれはしんどいです。

なのでとりあえず、すべてのルールをONにするJSONを作るコマンドを作ってみました。
($x使ってるのでコマンドと表現しています。)

※ESLintのルール記載ページの構成が変わった場合、使えませんのでご注意ください(2016年1月22日)

やり方

Chromeで

のページを表示して、
コンソール開いて、下記を実行。


JSON.stringify($x('//li/a[not(@class) and not(contains(@href,"/")) and (./following::node()[@id="removed"])]').map(a=>a.textContent).reduce(function(o, name) {
	o[name] = 2;
	return o;
}, {}),null,'\t');

出力結果が全部ONの状態にしたJSONです。

2016年1月22日現在の結果は下の方に書きます。

xpath説明

ルールのaタグを抽出

//li/a[not(@class) and not(contains(@href,"/"))]

のxpathで、ページに記載されている、すべてのルールのaタグが取れます。

条件

not(@class)

classのAttributeが付いてるものを除外します。
この条件はページ一番上のドロップダウン風のaタグを省いています。

not(contains(@href,"/"))

hrefのAttributeに"/"が含まれるものを除外します。
この条件はページ一番下のGitHub等へのリンクのaタグを省いています。

Removedのルールを除外

and (./following::node()[@id="removed"])

id="removed"のNodeが後ろにあるもののみを抽出します。
この条件でRemoved説明のヘッダより上にあるルールだけの抽出にしています。
(と、書いてて気が付きましたが、これがあればGitHubリンクの除外条件要らないかもしれませんね。。。)


現在の出力結果

2016年1月22日現在の結果
{
	"comma-dangle": 2,
	"no-cond-assign": 2,
	"no-console": 2,
	"no-constant-condition": 2,
	"no-control-regex": 2,
	"no-debugger": 2,
	"no-dupe-args": 2,
	"no-dupe-keys": 2,
	"no-duplicate-case": 2,
	"no-empty-character-class": 2,
	"no-empty": 2,
	"no-ex-assign": 2,
	"no-extra-boolean-cast": 2,
	"no-extra-parens": 2,
	"no-extra-semi": 2,
	"no-func-assign": 2,
	"no-inner-declarations": 2,
	"no-invalid-regexp": 2,
	"no-irregular-whitespace": 2,
	"no-negated-in-lhs": 2,
	"no-obj-calls": 2,
	"no-regex-spaces": 2,
	"no-sparse-arrays": 2,
	"no-unexpected-multiline": 2,
	"no-unreachable": 2,
	"use-isnan": 2,
	"valid-jsdoc": 2,
	"valid-typeof": 2,
	"accessor-pairs": 2,
	"block-scoped-var": 2,
	"complexity": 2,
	"consistent-return": 2,
	"curly": 2,
	"default-case": 2,
	"dot-location": 2,
	"dot-notation": 2,
	"eqeqeq": 2,
	"guard-for-in": 2,
	"no-alert": 2,
	"no-caller": 2,
	"no-case-declarations": 2,
	"no-div-regex": 2,
	"no-else-return": 2,
	"no-empty-label": 2,
	"no-empty-pattern": 2,
	"no-eq-null": 2,
	"no-eval": 2,
	"no-extend-native": 2,
	"no-extra-bind": 2,
	"no-fallthrough": 2,
	"no-floating-decimal": 2,
	"no-implicit-coercion": 2,
	"no-implied-eval": 2,
	"no-invalid-this": 2,
	"no-iterator": 2,
	"no-labels": 2,
	"no-lone-blocks": 2,
	"no-loop-func": 2,
	"no-magic-numbers": 2,
	"no-multi-spaces": 2,
	"no-multi-str": 2,
	"no-native-reassign": 2,
	"no-new-func": 2,
	"no-new-wrappers": 2,
	"no-new": 2,
	"no-octal-escape": 2,
	"no-octal": 2,
	"no-param-reassign": 2,
	"no-process-env": 2,
	"no-proto": 2,
	"no-redeclare": 2,
	"no-return-assign": 2,
	"no-script-url": 2,
	"no-self-compare": 2,
	"no-sequences": 2,
	"no-throw-literal": 2,
	"no-unused-expressions": 2,
	"no-useless-call": 2,
	"no-useless-concat": 2,
	"no-void": 2,
	"no-warning-comments": 2,
	"no-with": 2,
	"radix": 2,
	"vars-on-top": 2,
	"wrap-iife": 2,
	"yoda": 2,
	"strict": 2,
	"init-declarations": 2,
	"no-catch-shadow": 2,
	"no-delete-var": 2,
	"no-label-var": 2,
	"no-shadow-restricted-names": 2,
	"no-shadow": 2,
	"no-undef-init": 2,
	"no-undef": 2,
	"no-undefined": 2,
	"no-unused-vars": 2,
	"no-use-before-define": 2,
	"callback-return": 2,
	"global-require": 2,
	"handle-callback-err": 2,
	"no-mixed-requires": 2,
	"no-new-require": 2,
	"no-path-concat": 2,
	"no-process-exit": 2,
	"no-restricted-modules": 2,
	"no-sync": 2,
	"array-bracket-spacing": 2,
	"block-spacing": 2,
	"brace-style": 2,
	"camelcase": 2,
	"comma-spacing": 2,
	"comma-style": 2,
	"computed-property-spacing": 2,
	"consistent-this": 2,
	"eol-last": 2,
	"func-names": 2,
	"func-style": 2,
	"id-length": 2,
	"id-match": 2,
	"indent": 2,
	"jsx-quotes": 2,
	"key-spacing": 2,
	"linebreak-style": 2,
	"lines-around-comment": 2,
	"max-depth": 2,
	"max-len": 2,
	"max-nested-callbacks": 2,
	"max-params": 2,
	"max-statements": 2,
	"new-cap": 2,
	"new-parens": 2,
	"newline-after-var": 2,
	"no-array-constructor": 2,
	"no-bitwise": 2,
	"no-continue": 2,
	"no-inline-comments": 2,
	"no-lonely-if": 2,
	"no-mixed-spaces-and-tabs": 2,
	"no-multiple-empty-lines": 2,
	"no-negated-condition": 2,
	"no-nested-ternary": 2,
	"no-new-object": 2,
	"no-plusplus": 2,
	"no-restricted-syntax": 2,
	"no-spaced-func": 2,
	"no-ternary": 2,
	"no-trailing-spaces": 2,
	"no-underscore-dangle": 2,
	"no-unneeded-ternary": 2,
	"object-curly-spacing": 2,
	"one-var": 2,
	"operator-assignment": 2,
	"operator-linebreak": 2,
	"padded-blocks": 2,
	"quote-props": 2,
	"quotes": 2,
	"require-jsdoc": 2,
	"semi-spacing": 2,
	"semi": 2,
	"sort-vars": 2,
	"space-after-keywords": 2,
	"space-before-blocks": 2,
	"space-before-function-paren": 2,
	"space-before-keywords": 2,
	"space-in-parens": 2,
	"space-infix-ops": 2,
	"space-return-throw-case": 2,
	"space-unary-ops": 2,
	"spaced-comment": 2,
	"wrap-regex": 2,
	"arrow-body-style": 2,
	"arrow-parens": 2,
	"arrow-spacing": 2,
	"constructor-super": 2,
	"generator-star-spacing": 2,
	"no-arrow-condition": 2,
	"no-class-assign": 2,
	"no-const-assign": 2,
	"no-dupe-class-members": 2,
	"no-this-before-super": 2,
	"no-var": 2,
	"object-shorthand": 2,
	"prefer-arrow-callback": 2,
	"prefer-const": 2,
	"prefer-reflect": 2,
	"prefer-spread": 2,
	"prefer-template": 2,
	"require-yield": 2
}

あとがき

この後、今設定しているJSONと比較して載ってないルールだけ追記するまで自動化したいですが、
それはまた今度やります。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?