Skip to content
This repository has been archived by the owner on Feb 21, 2020. It is now read-only.

Update eslint to version 5.7.0 #103

Merged
merged 17 commits into from Oct 14, 2018
Merged
Show file tree
Hide file tree
Changes from 14 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
13 changes: 13 additions & 0 deletions src/main/resources/docs/description/max-classes-per-file.md
@@ -0,0 +1,13 @@
This rule enforces that each file may contain only a particular number
of classes and no more.

```
//Bad (with parameter 1):
class Foo {}
class Bar {}

//Good (with parameter 1):
class Foo {}
```

[Source](http://eslint.org/docs/rules/max-classes-per-file)
@@ -0,0 +1,3 @@
This rule enforces a maximum number of lines per function, in order to aid in maintainability and reduce complexity.

[Source](http://eslint.org/docs/rules/max-lines-per-function)
@@ -0,0 +1,31 @@
This rule aims to disallow async Promise executor functions.

```
//Bad:
const result = new Promise(async (resolve, reject) => {
readFile('foo.txt', function(err, result) {
if (err) {
reject(err);
} else {
resolve(result);
}
});
});
const result = new Promise(async (resolve, reject) => {
resolve(await foo);
});

//Good:
const result = new Promise((resolve, reject) => {
readFile('foo.txt', function(err, result) {
if (err) {
reject(err);
} else {
resolve(result);
}
});
});
const result = Promise.resolve(foo);
```

[Source](http://eslint.org/docs/rules/no-async-promise-executor)
26 changes: 0 additions & 26 deletions src/main/resources/docs/description/no-catch-shadow.md

This file was deleted.

@@ -0,0 +1,17 @@
This rule reports the regular expressions which include multiple code point characters in character class syntax.

```
//Bad:
/^[Á]$/u
/^[❇️]$/u
/^[👶🏻]$/u
/^[🇯🇵]$/u
/^[👨‍👩‍👦]$/u
/^[👍]$/

//Good:
/^[abc]$/
/^[👍]$/u
```

[Source](http://eslint.org/docs/rules/no-misleading-character-class)
24 changes: 24 additions & 0 deletions src/main/resources/docs/description/prefer-object-spread.md
@@ -0,0 +1,24 @@
Prefer use of an object spread over `Object.assign`.

```
//Bad:
Object.assign({}, foo)
Object.assign({}, {foo: 'bar'})
Object.assign({ foo: 'bar'}, baz)
Object.assign({ foo: 'bar' }, Object.assign({ bar: 'foo' }))
Object.assign({}, { foo, bar, baz })
Object.assign({}, { ...baz })
// Object.assign with a single argument that is an object literal
Object.assign({});
Object.assign({ foo: bar });

//Good:
Object.assign(...foo);
// Any Object.assign call without an object literal as the first argument
Object.assign(foo, { bar: baz });
Object.assign(foo, Object.assign(bar));
Object.assign(foo, { bar, baz })
Object.assign(foo, { ...baz });
```

[Source](http://eslint.org/docs/rules/prefer-object-spread)
39 changes: 39 additions & 0 deletions src/main/resources/docs/description/require-atomic-updates.md
@@ -0,0 +1,39 @@
This rule aims to report assignments to variables or properties where all of the following are true:

* A variable or property is reassigned to a new value which is based on its old value.
* A `yield` or `await` expression interrupts the assignment after the old value is read, and before the new value is set.
* The rule cannot easily verify that the assignment is safe (e.g. if an assigned variable is local and would not be readable from anywhere else while the function is paused).

Examples of **incorrect** code for this rule:

```
//Bad:
let result;
async function foo() {
result += await somethingElse;
result = result + await somethingElse;
result = result + doSomething(await somethingElse);
}
function* bar() {
result += yield;
result = result + (yield somethingElse);
result = result + doSomething(yield somethingElse);
}

//Good:
let result;
async function foo() {
result = await somethingElse + result;
let tmp = await somethingElse;
result += tmp;
let localVariable = 0;
localVariable += await somethingElse;
}
function* bar() {
result += yield;
result = (yield somethingElse) + result;
result = doSomething(yield somethingElse, result);
}
```

[Source](http://eslint.org/docs/rules/require-atomic-updates)
17 changes: 17 additions & 0 deletions src/main/resources/docs/description/require-unicode-regexp.md
@@ -0,0 +1,17 @@
This rule aims to enforce the use of `u` flag on regular expressions.

```
//Bad:
const a = /aaa/
const b = /bbb/gi
const c = new RegExp("ccc")
const d = new RegExp("ddd", "gi")

//Good:
const a = /aaa/u
const b = /bbb/giu
const c = new RegExp("ccc", "u")
const d = new RegExp("ddd", "giu")
```

[Source](http://eslint.org/docs/rules/require-unicode-regexp)
66 changes: 60 additions & 6 deletions src/main/resources/docs/patterns.json
@@ -1,6 +1,6 @@
{
"name": "eslint",
"version": "4.15.0",
"version": "5.6.0",
"patterns": [
{
"patternId": "comma-dangle",
Expand Down Expand Up @@ -522,11 +522,6 @@
}
]
},
{
"patternId": "no-catch-shadow",
"level": "Warning",
"category": "ErrorProne"
},
{
"patternId": "no-delete-var",
"level": "Warning",
Expand Down Expand Up @@ -988,11 +983,21 @@
}
]
},
{
"patternId": "require-atomic-updates",
"level": "Error",
"category": "ErrorProne"
},
{
"patternId": "require-jsdoc",
"level": "Info",
"category": "CodeStyle"
},
{
"patternId": "require-unicode-regexp",
"level": "Warning",
"category": "ErrorProne"
},
{
"patternId": "semi-spacing",
"level": "Info",
Expand Down Expand Up @@ -1159,6 +1164,11 @@
"level": "Info",
"category": "CodeStyle"
},
{
"patternId": "prefer-object-spread",
"level": "Info",
"category": "CodeStyle"
},
{
"patternId": "prefer-spread",
"level": "Info",
Expand Down Expand Up @@ -1259,6 +1269,17 @@
"level": "Warning",
"category": "CodeStyle"
},
{
"patternId": "max-classes-per-file",
"level": "Warning",
"category": "CodeStyle",
"parameters": [
{
"name": "unnamedParam",
"default": 0
}
]
},
{
"patternId": "max-depth",
"level": "Warning",
Expand All @@ -1274,6 +1295,29 @@
"level": "Warning",
"category": "CodeStyle"
},
{
"patternId": "max-lines-per-function",
"level": "Warning",
"category": "CodeStyle",
"parameters": [
{
"name": "max",
"default": 50
},
{
"name": "skipBlankLines",
"default": false
},
{
"name": "skipComments",
"default": false
},
{
"name": "IIFEs",
"default": false
}
]
},
{
"patternId": "max-params",
"level": "Warning",
Expand Down Expand Up @@ -1304,6 +1348,11 @@
"level": "Warning",
"category": "ErrorProne"
},
{
"patternId": "no-misleading-character-class",
"level": "Warning",
"category": "ErrorProne"
},
{
"patternId": "no-mixed-operators",
"level": "Warning",
Expand Down Expand Up @@ -1424,6 +1473,11 @@
"level": "Info",
"category": "CodeStyle"
},
{
"patternId": "no-async-promise-executor",
"level": "Error",
"category": "ErrorProne"
},
{
"patternId": "no-comma-dangle",
"level": "Info",
Expand Down
6 changes: 3 additions & 3 deletions src/main/resources/docs/tests/indent.js
Expand Up @@ -3,14 +3,14 @@

if (a) {

//ok
//ok
b=c;

//#Info: indent
b=c;
//#Info: indent
function foo(d) {
function foo(d) {
//#Info: indent
e=f;
e=f;
}
}
17 changes: 0 additions & 17 deletions src/main/resources/docs/tests/no-catch-shadow.js

This file was deleted.

1 change: 0 additions & 1 deletion src/main/resources/docs/tests/no-invalid-regexp.js
Expand Up @@ -4,7 +4,6 @@
RegExp('[');
//#Err: no-invalid-regexp
RegExp('.', 'z');
//#Err: no-invalid-regexp
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should still report an error according to eslint website https://eslint.org/docs/rules/no-invalid-regexp

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

True, it actually should throw an error, but it doesn't. I opened an issue in the eslint repository: eslint/eslint#10861

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it possible to merge this PR in and then when that fix is in we can make another PR for the minor version update. Because technically this is the way eslint 5.6.0 works right now. When this is fixed itll be a diff version. Unless this PR is meant to cover all eslint rules from 5.6.0 - 5.7.0?

Also, FYI I will be fixing this week eslint/eslint#10861

@rtfpessoa

Thank you

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@sstern6 I would prefer to wait a bit more to avoid a regression in the product. It can lead to weird cases.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok I understand, so then when that fix is merged in codacy will support eslint 5.6.x with the updated fix and will dependent on Eslint next release? How will subsequent releases but handled with eslint. Will a new PR be created in this repo for every minor or major version?

Thanks

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ideally every release we do a new PR here to update the version.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok sounds good @rtfpessoa. PR for this issue has been merged in eslint/eslint#10920. Im guessing this will make it into the 5.6.2 release, so we will either need to update this PR to support 5.6.2 and label it asa such. Or merge this in and make another PR for 5.6.2.

Given our previous conversation I assume you would like to update this PR?

new RegExp('\\');


Expand Down
4 changes: 2 additions & 2 deletions src/main/resources/docs/tests/valid-jsdoc.js
@@ -1,5 +1,5 @@
//#Patterns: valid-jsdoc
//#Issue: {"severity": "Info", "line": 5, "patternId": "valid-jsdoc"}
//#Issue: {"severity": "Info", "line": 7, "patternId": "valid-jsdoc"}
//#Issue: {"severity": "Info", "line": 14, "patternId": "valid-jsdoc"}

/** //error Missing JSDoc parameter description for 'num1'.
Expand All @@ -17,4 +17,4 @@ function foo(num1) {
*/
function foo() {
// ...
}
}