diff --git a/README.md b/README.md index f6bb6bb..790825e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # eslint-plugin-undef-init -Always initialize variables declarations. Instead of naked declarations, set it to undefined. +Always initialize variables during declaration. Set it explicitly to undefined, if required. ## Installation @@ -30,22 +30,37 @@ Add `undef-init` to the plugins section of your `.eslintrc` configuration file. } ``` +Then, either extend from the plugin or add the rules explicitly. + +### A. Extend from plugin +```js +{ + "extends": [ + // ... other extends here (like airbnb) + "undef-init" + ] +} +``` + +## OR + +### B. Use rule directly Then configure the rules you want to use under the rules section. -```json +```js { "rules": { - "undef-init/rule-name": 2 + "no-undef-init": 0, // Disable conflicting rule + "undef-init/undef-init": 1, } } ``` ## Supported Rules -* Fill in provided rules here - - - +There is only one rule, for now - +* `undef-init` - Disallow variable declaration without initialization. +There is a built-in conflicting rule `no-undef-init` in eslint, so you'll need to disable it if you are using this rule diff --git a/TODO.md b/TODO.md index e816573..2f907c0 100644 --- a/TODO.md +++ b/TODO.md @@ -1,2 +1 @@ -2. Add docs of rule -3. Release in npm \ No newline at end of file +1. Release in npm \ No newline at end of file diff --git a/docs/rules/undef-init.md b/docs/rules/undef-init.md index bf4138a..764d4ae 100644 --- a/docs/rules/undef-init.md +++ b/docs/rules/undef-init.md @@ -1,7 +1,7 @@ # Always initialize variables during declaration. Set it explicitly to undefined, if required. (undef-init) -Please describe the origin of the rule here. - +### It is better to explicitly initialize all variable declarations. +Instead of naked var / let declarations (which are implicitly set to `undefined` anyway), always explicitly set them to `undefined`. It makes clear that you explicitly intended to set them to undefined, not just because you forgot to initialize. ## Rule Details @@ -11,7 +11,13 @@ Examples of **incorrect** code for this rule: ```js -// fill me in +var a; +let b; +let c, d; +let d, e = 1; + +for (var f of {}){var g;} +for (var i in []){var j;} ``` @@ -19,18 +25,25 @@ Examples of **correct** code for this rule: ```js -// fill me in +var a = undefined; +let b = undefined; +let b1 = b; +let c = undefined, d = undefined; + +for (var f of {}){var g = undefined;} + +for (var i in []){do_something()} ``` ### Options -If there are any options, describe them here. Otherwise, delete this section. +There are no options ## When Not To Use It -Give a short description of when it would be appropriate to turn off this rule. +If you feel setting vraiables implicitly to `undefined` is better than setting them explicitly, then don't use this - use `no-undef-init`. -## Further Reading +## More -If there are other links that describe the issue this rule addresses, please include them here in a bulleted list. +Ideally this would be a configuration in the in-built eslint rule `no-undef-init` instead of a separate rule, but wasn't accepted by maintainers. Hence, it's an external plugin. \ No newline at end of file diff --git a/lib/rules/undef-init.js b/lib/rules/undef-init.js index 3e05934..6f1d6c9 100644 --- a/lib/rules/undef-init.js +++ b/lib/rules/undef-init.js @@ -14,8 +14,6 @@ module.exports = { meta: { docs: { description: ruleMessage, - category: "Fill me in", - recommended: false }, fixable: "code", schema: [